【问题标题】:How to return the second non-blank cell from row excel for Mac如何从 Mac 的行 excel 返回第二个非空白单元格
【发布时间】:2016-09-07 15:50:46
【问题描述】:

要返回我使用的一行中的第一个非空白单元格:

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

【问题讨论】:

  • COLUMN($A:$D) 将为您提供 列 C:F 中的位置。

标签: excel


【解决方案1】:

使用AGGREGATE functionSMALL subfunction

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

2 是小子功能的k。将其替换为 ROW(2:2) 并收紧所有其他单元格引用,如果您想填写第三个、第四个等。

当将列索引号返回到INDEX function 时,AGGREGATE function 使用COLUMN function 而不是ROW function.. COLUMN($A:$D) 将为您提供列中的位置 C :F;例如1、2、3 或 4。

【讨论】:

  • 我收到 #Ref 错误。如果有帮助,我的单元格内容是文本,我正在尝试识别行中的下一个非空白单元格,而不是列。
  • 从添加的图像中可以看出,该公式有效。我怀疑您修改了实际数据的范围以在您的问题中创建样本。 ROW($1:$13) A1:A13 中的位置,而不是工作表上的行。如果您的实际 A1:A13 是A10:A19,那么它将是ROW($1:$10),因为它代表 A10:A19 中的位置。
  • 我认为海报想要搜索而不是
  • 呃...好的,然后将ROW($1:$13)更改为COLUMN($A:$M)
  • @Jeeped 我仍然不是在这里使用 ROW 的忠实粉丝,请参阅您对 OP 评论的回复。我实际上可以在这里同情 OP - 为什么他们必须知道根据他们使用的范围来更改 ROW 部分的内容?更重要的是,您可以为此部分使用完全独立于被查询范围的结构,因此不需要在该范围内进行任何修改。
【解决方案2】:
{=INDEX(C1:F1, SMALL(IF(C1:F1 <> "", COLUMN(C1:F1) - 2), 2))}

https://exceljet.net/formula/get-nth-match-with-index-match

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

【讨论】:

  • tbpf,如果我因为使用​​COLUMN(A:D) 来表示1, 2, 3, 4 而受到抨击,那么您应该在COLUMN(C1:F1)-2),2 中解释数学调整。同样的“比赛场地”和所有的废话。
  • @Jeeped 这是最后一分钟的修复,因为我在发布答案时使用了A1:F1,然后我像往常一样懒惰:] 我很好奇 2010 年之前的答案是什么仍在使用 Excel 2007,但我发现您的回答非常有用,因为 AGGREGATE 的忽略错误和隐藏单元格似乎非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
相关资源
最近更新 更多