2016-10-11 61 views
1

我有一個電子表格,像這樣:創建一個範圍內的非空白單元格值的列表?

Column A 

Ducks 
Frogs 
<Blank> 
Rabbits 
<blank> 
Horse 

我希望能夠在一個範圍(列A)創建的所有非空白單元格的列表,像這樣:

Ducks 
Frogs 
Rabbits 
Horse 

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

此外,如果在範圍內找到空白值,我的公式應該跳過並列出範圍中的下一個非空白單元格。

然而此刻我得到0

這裏是我的數組公式,請能有人告訴我在哪裏,我錯了?

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

此外,您可以直接刪除空格使用'去特殊...'。但是,如果你想要一個公式...... – Brian

回答

0

我建議你考慮使用macro這個問題(它在工具欄選項中)。你可以記錄一個空的宏並粘貼我已經添加的代碼。 請注意,宏將覆蓋使用歷史記錄更改的能力(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 
+0

如果我不斷減少一個,肯定會有一個進入無限循環的巨大危險? –

+0

你是對的!我做了一些編輯。 – yd1

+0

通過使用「For i = max to 1 Step -1」來減少循環會更容易。 – Brian

1

在這種設置IFERROR可以是非常低效的,特別是如果被查詢的數據集的大小是大的;這裏比照我的回答是:

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

最好使用在記錄回報的預期數量的數量,並參考單個細胞,在主配方內的初始IF條款細胞。例如,如果我們使用細胞H16爲此目的,我們將說,在該細胞:

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

的主陣列式**則是:

=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))))

問候

+0

謝謝你的建議,這個工作真的很好。但是,有沒有辦法只列出不同的值? –

+0

我在原來的問題中錯過了嗎?或者你是否需要修改它以反映這種情況? –

+0

不,你是發現並完全理解了這個問題,我只是想知道是否有一種方法可以修改公式以減少重複值呢?如只顯示獨特的價值?謝謝 –

相關問題