创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
在这个设置中可能是非常低效的,特别是如果被查询的数据集的大小很大; 比较我的答复在这里:
最好使用单个单元格来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