2016-09-07 39 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

相关问题