如何在 Excel-2010 中将 **row()** 函数与 **if()** 语句一起使用到 return 行号(如果值为 *true*)

How to use **row()** function with **if()** statement in Excel-2010 to return the row number if value is *true*

如何在 Excel-2010 到 return 中使用 row() 函数和 if() 语句] 行号,如果值为 true。 如果有其他方法可以做同样的工作,我也会很感激。 工作是:我在一个多行的单列中有一系列数据,条件是 "if the value of data is greater than 50" 而不是我必须在另一列中打印所有需要的数据,每个数据在单独的行中。

如果 row()if() 函数可以做到这一点,没关系,也请使用任何其他方法.

我不确定我是否做对了你的任务,但让我们试试吧。假设您在单元格 A2:A20 中有一些随机数。您可以 select 单元格 C2:C20 并输入 多单元格数组公式 通过在 Windows:

=IFERROR(INDEX($A:$A,SMALL(IF($A:$A>50,ROW($A:$A),"-"),ROW()-ROW($C))-ROW($A)),"")

这将检查这些数字是否高于 50 并仅打印相关的数字。范围,您输入此公式的位置必须至少等于您输入的范围 "filter".

UPD:那么,它是如何工作的?

阶段 1 - 过滤:

$A:$A>50

在数组公式中,此代码会将您的值转换为 TrueFalse 的有序(这很重要)数组根据 >50 次检查。例如,如果您有一个 table,其值为 {55,10,40,51,49,89},它们将变成 {True,False,False,True,False,True}

阶段 2 - 值分离和位置

IF( [Stage 1] ,ROW($A:$A),"-")

IF 语句,基于 True/False 检查,returns 要么是元素的位置,要么是字符串值“-”。位置与 sheet 相关,与值无关 - 稍后会很重要。所以,现在我们处理通过检查的元素的位置数组和所有其他元素的一些字符串值。

阶段 3 - 重新排序位置

SMALL( [Stage 2] ,ROW()-ROW($C))-ROW($A)

SMALL 函数帮助我们重新排序我们从 STAGE 3 获得的位置。所以我们将 {2,"-","-",5,"-",7} 这样的有序数组变成 {2,5,7,"#NUM!","#NUM!","#NUM!"}。错误告诉我们,我们试图对字符串执行一些数字操作。这正是我们将不相关的值分类出来所需要的。 returned 的值为 ROW()-ROW($C),通过这个减法,我定义了数组中每一行从最小值到 return 的编号。最后减法 -ROW($A) 将 sheet 相关位置 {2,5,7,"#NUM!","#NUM!","#NUM!"} 变成你的 table 相关位置 {1,4,6,"#NUM!","#NUM!","#NUM!"}

阶段 4 - return 初始值

INDEX($A:$A, [Stage 3] )

这是我认为最简单的部分。所以,我们有 table 个相关位置的数组。现在我们可以使用 INDEX 函数将其转换为实际值。我们告诉该函数 table 要查看的内容以及要 return 的行值。所以我们的内存数组 {1,4,6,"#NUM!","#NUM!","#NUM!"} 变成了这样的东西 {55,51,89,"#NUM!","#NUM!","#NUM!"}。这已经是我们想要的结果了。由于我们使用 多元胞数组公式 - 所有值都将分布在行中。

第 5 阶段 - 美学

=IFERROR( [Stage 4] ,"")

只是让错误值不可见。这是一个可选步骤,我喜欢报告流畅而有光泽。