Excel formula Excel数组查询

Excel formula Excel数组查询,excel-formula,Excel Formula,我正在努力理解一个特殊数组公式的机制。我有一系列数据,从2015年1月到2016年12月。假设数据截至2016年10月,10月的金额为1000英镑。当数据输入到2016年11月,比如1250英镑时,下面的公式会自动计算两个月之间的差值。公式是如何做到这一点的。是否有人可以帮助提供以下内容的简单解释,特别是它如何知道从上个月中扣除最近一个月 =(INDEX(60:60,MAX(IF(M60:AV60<>"",COLUMN(M60:AV60)))))-(INDEX(60:60,MAX(I

我正在努力理解一个特殊数组公式的机制。我有一系列数据,从2015年1月到2016年12月。假设数据截至2016年10月,10月的金额为1000英镑。当数据输入到2016年11月,比如1250英镑时,下面的公式会自动计算两个月之间的差值。公式是如何做到这一点的。是否有人可以帮助提供以下内容的简单解释,特别是它如何知道从上个月中扣除最近一个月

=(INDEX(60:60,MAX(IF(M60:AV60<>"",COLUMN(M60:AV60)))))-(INDEX(60:60,MAX(IF(M60:AV60<>"",COLUMN(M60:AV60)-1))))
=(索引(60:60,最大值)(如果(M60:AV60“”,列(M60:AV60щщ))-(索引(60:60,最大值)(如果(M60:AV60“”,列(M60:AV60)-1)))
谢谢你的帮助


迈尔斯(Miles)

这有点复杂,但让我们一次分解一部分

这看起来是一个数组公式,这意味着它不需要处理单个单元格,而可以同时处理整个单元格集

M60:AV60”“
此段生成真值和假值的数组(列表),查看M60和AV60之间的每个单元格。只要单元格包含一个值(即不为空),它就会返回TRUE。如果单元格不包含值,则返回FALSE。此列表仅存在于程序的工作内存中,不会记录在工作表的任何位置。所以我们有这样的东西:

TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
COLUMN(M60:AV60)
此段生成另一个数组,大小与上面的真/假数组相同,它只包含从M60到AV60的每个单元格的列号。我们现在有两个列表-一个包含真/假,另一个包含数字,两者长度相同

TRUE  | 1
TRUE  | 2
TRUE  | 3
TRUE  | 4
TRUE  | 5
TRUE  | 6
FALSE | 7
FALSE | 8
FALSE | 9
FALSE | 10
FALSE | 11
IF(M60:AV60“”,COLUMN(M60:AV60))
此IF语句将TRUE/FALSE数组与COLUMN numbers数组相结合,以获得更有用的内容。只要第一个数组中有TRUE,就会用第二个数组中的相应数字替换;只要第一个数组中有FALSE,就不会更改任何内容,并且该值保持为FALSE。这样,我们得到一个数字列表,表示每个非空白单元格的列。这相当于在数组的所有成员上运行IF公式

IF | TRUE  |THEN| 1 = 1
IF | TRUE  |THEN| 2 = 2
IF | TRUE  |THEN| 3 = 3
IF | TRUE  |THEN| 4 = 4
IF | TRUE  |THEN| 5 = 5
IF | TRUE  |THEN| 6 = 6
IF | FALSE |THEN| 7 = 0
IF | FALSE |THEN| 8 = 0
IF | FALSE |THEN| 9 = 0
IF | FALSE |THEN| 10 = 0
IF | FALSE |THEN| 11 = 0
=之后的最后一列是传递给MAX函数的内容

MAX(如果(M60:AV60“”,列(M60:AV60))
此段将数字列表缩减为一个数字,即列表中的最大或最高数字。因此,我们最终得到一个结果,它表示包含值的最后一列

INDEX(60:60,MAX(IF(M60:AV60“”,COLUMN(M60:AV60”“)))
函数查看第60行的所有内容,并从该行的指定列返回值。这是前几段返回的列—包含值的最后一列

公式的后半部分与第二个
INDEX
函数的作用完全相同,但它从返回的列数中减去1,即,它得到第二个到最后一个具有值的列


最终的结果是从最后一个值中减去倒数第二个值,得到它们之间的差值。

嗨,谢谢你花时间详细解释,这是一个很大的帮助。我的困惑来自MAX函数。出于某种原因,我认为它是从所选数据中提取最高值,而实际上它是在引用列范围。再次感谢。