如何找到值不为空的行中的第一个单元格,并检查该数字是否小于或等于其他单元格中的数字

Kir*_* S. 7 formulas google-sheets

我有以下Google电子表格:

item  have ready  need1 need2 need3
A     1                 2     1
B     1           2     1     1
C     2                 2     
Run Code Online (Sandbox Code Playgroud)

等等

我想填写ready如下列:

  • 找到need1,...,needN范围中的第一列,其中包含非空值
  • 如果找到的值小于或等于have列中的值,则将ready列设置为愉快的(例如yes)
  • 如果找到的值大于have列中的值,则不要执行任何操作

所以上面的输入,处理时应该如下所示:

item  have ready  need1 need2 need3
A     1                 2     1
B     1           2     1     1
C     2    yes          2     
Run Code Online (Sandbox Code Playgroud)

对于第一步,我找到了一个建议的解决方案,这对我不起作用:

=INDEX( SORT( FILTER( D10:H10 , LEN( D10:H10 ) ) , 
FILTER( COLUMN( D10:H10 ) , LEN( D10:H10 ) ) , 0 ) , 1 )
Run Code Online (Sandbox Code Playgroud)

(它返回#REF!)不确定它有什么问题或如何继续下一步.

提前致谢!

小智 6

如果您知道有多少需要的列,或者什至只知道工作表上有多少列,这将非常简单。如果不是这样,则需要查看整个行,则可能必须重新设计一下以避免从单元格中进行循环引用,而公式是该行的一部分。

无论哪种方式,后两个步骤都非常简单-您希望根据条件获得两个结果之一,因此您将要使用=IF。您的条件是“需要”数字小于或等于“必须”数字,并且您希望它说“是”(如果是真的),而不是什么。因此,这给了我们:

=IF(need<=have, "Yes", "")
Run Code Online (Sandbox Code Playgroud)

下面的示例假定您的上表从左上角的单元格A1开始,并且工作表的最后一列是Z

接下来,我们需要找到“需要”和“拥有”。查找“ have”非常容易-只是B列中的数字。

寻找“需求”稍微复杂一些。使用INDEX和时FILTER,您的想法正确,但是您的公式似乎有点复杂。基本上,我们可以FILTER用来过滤出空白值,并INDEX找到剩下的第一个。首先,FILTER

您要过滤的范围是从D列到Z列的同一行中的所有内容(或最后一列是什么),并且要过滤的条件是这些相同的单元格不能为空。对于您要在单元格C2中键入的公式,可以得到:

=FILTER(D2:Z2, D2:Z2<>"")
Run Code Online (Sandbox Code Playgroud)

接下来,INDEX:如果您提供INDEX一个数组,一个行号和一个列号,它将告诉您该行和列相交的那个单元格是什么。当我们过滤掉空白时,我们只想要过滤后的数组的第一列中剩下的任何东西,这将给我们:

=INDEX(FILTER(D2:Z2, D2:Z2<>""), 1, 1)
Run Code Online (Sandbox Code Playgroud)

或者,因为我们数组中只有一行,并且INDEX非常聪明,所以简单地:

=INDEX(FILTER(D2:Z2, D2:Z2<>""), 1)
Run Code Online (Sandbox Code Playgroud)

综上所述,单元格C2的最终公式为:

=IF(INDEX(FILTER(D2:Z2, D2:Z2<>""), 1)<=B2, "Yes", "")
Run Code Online (Sandbox Code Playgroud)

然后,只需将公式向下拖动任意多行即可。如果工作表更大或更宽,只需将Z更改为最后一列即可。