具有两个参数的Excel索引公式以及A1:Z1>值作为第一个参数

在Excel中,我试图在大于我指定值的无序行中查找值的第一个实例的位置。 我现在有几个解决scheme,所以我不问如何设置背景。

例如试图find等于或大于8:5 7 4 8 9 3 5的第一个值

返回的值应该是4。

我尝试了一些MATCH和INDEX,这些对于有序数组来说足够好用了。 但是,当寻找处理无序数组的东西时,我发现下面的工作,但我不明白:

=MATCH(TRUE,INDEX(A1:Z1>45,0),0)

好的,这里是问题的来源:

  1. 什么是索引? 文档说索引需要3或4个参数。 怎么可能只有两个?

  2. 什么是构造A1:Z1>45 ? 你如何使用数组和值之间的比较运算符? INDEX最终返回TRUEFALSE …如此困惑。

  3. 那里有更好的文档吗? 每次我想,嘿,我会给Excel一个简单的任务尝试,到最后,我回到Unix脚本这样的简单的东西。

Excel文档似乎总是对我完全没用。 这个文档看起来真的很糟糕,而且似乎是在一个函数可以采用的参数上,如INDEX的情况。 任何方向上的一些很好的文档将不胜感激。

我显然在这里错过了一些东西。

谢谢!

从内到外:

 A1:Z1>45 

上面的代码返回一个布尔型数组,它表示的是不大于45的单元格。

要testing这个,你可以简单的input

 =A1:Z1>45 

在工作表中的任何单元格中,然后在公式栏中按F9

你会看到你的公式变成这样的:

 {FALSE,FALSE,TRUE,TRUE,FALSE,.......} 

其中每个布尔值与arrays中的相对位置相同,并且TRUEFALSE值表示在这种情况下执行的逻辑testing的结果,如果单元格的值大于45

下一个:

 INDEX(A1:Z1>45,0) 

这是返回整个列的值的数组(因为索引函数看到它,这并不意味着它是你的Excel表中的实际列)它返回整个数组,因为

 If you set row_num or column_num to 0 (zero), INDEX returns the array of values for the entire column or row, respectively. 

另外,如果您重新阅读INDEX函数的文档(可以在此链接find)您应该注意到说明的Syntax部分。聚焦在表示Column_num Optional. Selects the column in array from which to return a value. If column_num is omitted, row_num is required.的行Column_num Optional. Selects the column in array from which to return a value. If column_num is omitted, row_num is required.

再次,您可以通过转到工作表中的任何单元格来input以下内容来testing所有这些:

 =INDEX(A1:Z1>45,0) 

并在公式栏中按F9

虽然你可以使用公式

 =MATCH(TRUE,A1:Z1>45,0) 

和数组input它使用Ctrl + Shift + Enter而不是简单的input使用索引function,您可以简单地input它作为一个普通的function,而不是一个数组function。

公式的最后一部分是MATCH函数:

 =MATCH(TRUE,INDEX(A1:Z1>45,0),0) 

从文档:

 The MATCH function searches for a specified item in a range of cells, and then returns the relative position of that item in the range. 

所以在你的示例中你要求MATCH函数返回它首先find一个TRUE值的位置(TRUE是你匹配函数的第一部分)

您正在从前面所述的索引函数生成的布尔数组中searchTRUE值, MATCH只是告诉您find第一个TRUE实例的位置。AKA值> 45的第一个单元格。