创build一个范围内的非空白单元格值列表?

我有一个像这样的电子表格:

Column A Ducks Frogs <Blank> Rabbits <blank> Horse 

我想能够创build一个范围(列A)中的所有非空白单元格的列表,如下所示:

 Ducks Frogs Rabbits Horse 

我不希望空白值在我的列表中。

另外,在范围内find空白值的地方,我的公式应该跳过并列出范围中的下一个非空白单元格。

然而,目前我正在得到0

这里是我的数组公式,请有人告诉我我要去哪里错了?

 =IFERROR(INDEX($F$16:$F$5000,IF($G$16:$G$5000<>"",ROW($1:$5000)),1),"") 

IFERROR在这个设置中可能是非常低效的,特别是如果被查询的数据集的大小很大; 比较我的答复在这里:

https://superuser.com/questions/812727/look-up-a-value-in-a-list-and-return-all-multiple-corresponding-values

最好使用单个单元格来logging期望返回次数,并在主公式中的初始IF子句中引用该单元格。 例如,如果我们为此目的使用单元格H16 ,我们将在该单元格中放置:

=COUNTIF(G$16:G$5000,"<>")

主arrays公式**然后是:

=IF(ROWS($1:1)>H$16,"",INDEX(F:F,SMALL(IF(G$16:G$5000<>"",ROW(G$16:G$5000)),ROWS($1:1))))

并复制下来,直到你得到空白。

对于唯一列表,将H16的公式更改为:

=SUM(IF(FREQUENCY(IF(G16:G5000<>"",MATCH(F16:F5000,F16:F5000‌​,0)),ROW(F16:F5000)-MIN(ROW(F16:F5000))+1),1))

主要公式为:

IF(ROWS($1:1)>H$16,"",INDEX(F:F,SMALL(IF(FREQUENCY(IF(G$16:G$5000<>"",MATCH(F$16:F$5000,F$16:F$5000,0)),ROW(F$16:F$5000)-MIN(ROW(F$16:F$5000))+1),ROW(F$16:F$5000)),ROWS($1:1))))

问候

我build议你考虑使用macro这个问题(它在工具栏选项)。 你可以logging一个空的macros并粘贴我已经添加的代码。 请注意,macros将覆盖使用历史logging(ctrl + z)更改的能力。 在代码中列是16,最后一行是5000,但你可以改变它。

 Dim max As Integer Dim colNum As Integer Dim limit As Integer max = 5000 colNum = 16 limit = max For i = 1 To max If Cells(i, colNum) = "" Then Cells(i, colNum).Delete Shift:=xlUp If limit > 0 Then i = i - 1 limit = limit - 1 end if End If Next i