2016-09-07 75 views
1

在一行返回第一個非空白單元格使用:如何從行返回第二個非空白單元格擅長爲Mac

=INDEX(C1:F1,MATCH(TRUE,INDEX((C1:F1<>0),0),0)) 

但是,你如何返回第二個非空單元格連續?我的單元格中只有文本。我建議 = INDEX(C1:F1,AGGREGATE(15,6,COLUMN(C1:F1)/ SIGN(LEN(C1:F1)),2))。

我沒有得到下一個非空白單元格返回,我得到F單元格返回,即使有其他人應該已經返回它之前。如果F中沒有任何東西,我得到一個0.

+0

'COLUMN($ A:$ D)'會給你在**列C:F內的**位置。 – Jeeped

回答

3

使用AGGREGATE functionSMALL subfunction

=INDEX(A1:A13, AGGREGATE(15, 6, ROW(1:13)/SIGN(LEN(A1:A13)), 2)) 

的是ķ爲小的子功能。與ROW(2:2)替換它,如果你想向下填充第三,第四收緊所有其他單元格引用,等

position_within

當返回列索引號回INDEX functionAGGREGATE function使用COLUMN function而不是ROW function .. COLUMN($A:$D)會給你位置在列C:F;例如1,2,3或4。

position_within_columns

+0

我收到#Ref錯誤。如果有幫助,我的單元格內容是文本,我試圖確定行中的下一個非空白單元格,而不是列。 –

+0

正如你可以從添加的圖像看到的,公式的作品。我懷疑你修改了實際數據的範圍來創建你的問題中的示例。 'ROW($ 1:$ 13)'是** A1:A13中的**位置,而不是工作表上的行。如果你的**實際** A1:A13是A10:A19,那麼它將是'ROW($ 1:$ 10)',因爲它代表** A10:A19內的**位置。 – Jeeped

+0

我認爲海報希望搜索**行**而不是**列**。 –

1
{=INDEX(C1:F1,SMALL(IF(C1:F1<>"", COLUMN(C1:F1)-2),2))} 

更新

-2是短期的-COLUMN(INDEX(C1:F1,1,1))+1等等全陣列公式爲:

{=INDEX(C1:F1,SMALL(IF(C1:F1<>"", COLUMN(C1:F1)-COLUMN(INDEX(C1:F1,1,1))+1),2))} 

此外,你可以通過點擊旁邊的綠色支票接受答案https://stackoverflow.com/tour

+0

tbpf,如果我使用'COLUMN(A:D)'來表示'1,2,3,4',那麼你應該解釋'COLUMN(C1:F1)-2),2'中的數學調整。同樣的「遊戲場」和所有這些廢話。 – Jeeped

+0

@接受這是最後一分鐘的修復,因爲我在發佈答案時使用了'A1:F1',然後像往常一樣懶惰]:我很好奇2010年之前的答案是什麼,因爲我仍在使用Excel 2007,但是我發現你的答案非常豐富,因爲'AGGREGATE'忽略錯誤和隱藏的單元格似乎非常有用。 – Slai

相關問題