首页 > 解决方案 > 为什么 INDEX(...,COUNTA(...),..) 可以找到一个数组的最后一个值,而不能找到另一个?

问题描述

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

https://docs.google.com/spreadsheets/d/12cAGuUBzIo0LPbmtqWJZNFgjt94f1ybGoj6x2g0c2Y0/edit?usp=sharing

首先,我=GOOGLEFINANCE在 B1 使用 C 列中的给定日期范围拉高股票价格

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

然后,我使用简单的算术乘以 D2 的份额数,然后将公式向下拖动以获得一个不错的值列

=C2*20

然后,我用INDEXandCOUNTA拉出 F3 处 D 列的最后一个值 === 太棒了!

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

接下来,我把我的算术公式变成了 G2 的 ARRAYFORMULA === Cool!

=ARRAYFORMULA(C2:C103*20)

当然,ARRAYFORMULA 的问题在于,每次更新日期范围时,我都必须手动更改 G2 中的数组名称。

也就是说,我需要更改对 C2:104 的引用,而不是 C2:C103,以使列与===Rookie 错误匹配!!!!!!

因此,我使用包含IF(ISBLANK(),...,...)at J2的 ARRAYFORMULA 变得很聪明

=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 会随着日期的变化而变化

为什么???

标签: google-sheetsgoogle-sheets-formulaarray-formulas

解决方案


"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)单元格限制为仅包含数字的单元格时,它不会在计算中混合字符串和数字,您自然会得到预期的结果。


推荐阅读