索引(匹配())或查找 return 第一个非空/空值

Index(match()) or lookup to return first non null / empty value

我正在使用索引(match()) 函数return 一个基于列名称header 的值。但是,我最近了解到 header 列可以在我的数据中出现 4 次。然而,永远只有一个被填充,其他的总是空的。

虽然我可以嵌套 if =(isblank(...)# do stuff) 我想知道是否有更复杂的方法告诉 GSheets return 第一个非空/空值,有点像 SQL coalesque() 函数。

有吗?

当前公式如下所示:

=index('Form Responses 1'!$A:$DY,match($A2,'Form Responses 1'!$A:$A,0),match(I,'Form Responses 1'!$A:$DY,0))

不过,这块是问题块:

match(I,'Form Responses 1'!$A:$DY,0)

这是因为I$1在Form Responses 1'!$A:$DY范围内出现了4次。我想要的是嵌套在 index() 函数中时 return 不是空单元格的那个。

当所有数据都在单个 sheet 上时,我做了一个更简单的案例 sheet。

公式为:

=QUERY(TRANSPOSE({A1:E1;FILTER(A2:E8,A2:A8 = 2)}), "select Col2 where Col2 is not null and Col1 = 'foo' limit 1")


  • 数字 2 是按行排列的条件($A2 在您的示例中)
  • text foo 是按列的条件(将其替换为 " & I & "

工作原理

  • {A1:E1; filter }是在一个数组中得到headers和想要的行
  • TRANSPOSE是使用query
  • where Col2 is not null是去掉空单元格
  • limit 1 就像 select first 1