为什么INDEX(...,COUNTA(...),...)可以找到一个数组的最后一个值,而另一个数组却找不到?

问题描述 投票:0回答:1

我正在学习基本的 =ARRAYFORMULA 财务电子表格的用法。

https:/docs.google.comspreadsheetsd12cAGuUBzIo0LPbmtqWJZNFgjt94f1ybGoj6x2g0c2Y0edit?usp=分享。

首先,我用 =GOOGLEFINANCE 在B1处调出C列中给定日期范围的股票价格。

=GOOGLEFINANCE(A1,"price",DATE(2020,1,1),DATE(2020,5,30),"DAILY")

然后,我用简单的算术在D2处乘以股数,并把公式拖下来,得到一列漂亮的数值。

=C2*20

然后,我用 INDEXCOUNTA 在F3处调出D列的最后一个值 === 太好了!接下来,我在G2处把我的算术公式变成了ARRAYFORMULA === 酷毙了!

=INDEX(AAPL!D2:D,COUNTA(AAPL!D2:D),1)

接下来,我在G2处把我的算术公式变成了一个ARRAYFORMULA === 酷!

=ARRAYFORMULA(C2:C103*20)

当然,这个ARRAYFORMULA的问题是,每次更新日期范围时,我都要手动更改G2中的数组名。

也就是说,我需要将C2:C103的引用改为C2:104,以使列名匹配。=== 菜鸟的错误!!!!!!!!。

所以,我自作聪明地用一个ARRAYFORMULA包含一个 IF(ISBLANK(),...,...) 在J2

=ARRAYFORMULA(IF(ISBLANK(B2:B),"",C2:C*20))

J列保持完全填充任何日期范围的正确值===!!!!

但是现在 =INDEX(AAPL!J2:J,COUNTA(AAPL!J2:J),1) 在L3处找不到J列的最后一个值。

什么?

我能想到的办法我都试过了

如果我使用 =INDEX(AAPL!J2:J104,COUNTA(AAPL!J2:J104),1) 但这将失去目的,因为J:J104的参考文献将随着日期的改变而改变。

WHY?

google-sheets google-sheets-formula array-formulas
1个回答
0
投票

我在两个单元格中得到相同的结果 "L3""L5" 使用时,请检查是否返回一个空白字符串(

=ARRAYFORMULA(IF(ISBLANK(B2:B),,C2:C*20))

检查你没有返回一个空白字符串("")在您的 IF 这样做会使工作表中的最后一行填入空字符串。"=ARRAYFORMULA(IF(ISBLANK(B2:B),"",C2:C*20))" 这样做会使工作表中最后一行的单元格被填充为空字符串,因此当你使用 COUNTA(AAPL!J2:J),1) 你得到的单元格比你想象的要多得多,这些额外的单元格是你在数组公式中用空白字符串填充的。

相反,当你限制了 =INDEX(AAPL!J2:J104,COUNTA(AAPL!J2:J104),1) 只适用于有数字的单元格,它不会在计算中混合字符串和数字,你自然会得到预期的结果。

© www.soinside.com 2019 - 2024. All rights reserved.