H2:L
我有介于H 为静态但 L 可以增长到新列之间的数据。
如何使用像 an 这样的动态东西arrayformula
来根据行计算每列中某些字符串出现的次数?
我希望它是动态的,而不仅仅是简单的,countif
因为行数是动态的。
例如,我想返回以下数字测试和福巴:
A | 乙 | C | 德 | 埃 | F | G | H | 我 | J | 钾 | 大号 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 测试 | 福巴 | 标头 | 标头 | 标头 | 标头 | 标头 | |||||
2 | 3 | 1 | 测试 | 福巴 | 测试 | 你好 | 测试 | |||||
3 | 1 | 1 | 福巴 | 测试 | 嘿 | 哟 | 那里 | |||||
4 | 2 | 0 | 什么 | 测试 | 测试 | 不 | 谢谢 | |||||
5 | 0 | 0 | 只是 | A | 非常 | 短的 | 线 |
答案1
我想分享我设法得出的结论,其中涉及多个公式:
- 在 A2 中,我手动定义搜索区域的起始单元格。
- 在B2中,我根据A2自动计算搜索的区域。
- 在 C2 中,我根据 A2 自动计算起始列。
- 最后,E2 根据 B2 和 C2 进行所需的计数。
我找不到扩展 E2 以查找 F1 中的内容的方法,所以唯一的解决方案是将其左右复制。原因是,IF(indirect($B2)=E1
如果将其更改为,则无法使用,IF(indirect($B2)=E1:F1
尽管有arrayformula
。
公式如下:
A | 乙 | C | 德 | 埃 | F | |
---|---|---|---|---|---|---|
1 | 起点(手动) | 范围(自动) | 基线列(自动) | 测试 | 福巴 | |
2 | 氢气 | =concat(concat(A2, ":"), index(split(address(ROW(indirect(A2)), column(indirect(A2))+COUNTA(INDIRECT(CONCATENATE(A2, ":", ROW(indirect(A2)))))-1, 2), "$"), 0, 1)) | =CONCATENATE(A2, ":", REGEXEXTRACT(A2, "[a-zA-Z]+")) | =ArrayFormula(IF(ISBLANK(间接($C2)),"",COUNTIF(IF(间接($B2)=E1,ROW(间接($B2))),ROW(间接($C2))))) | =ArrayFormula(IF(ISBLANK(间接($C2)),"",COUNTIF(IF(间接($B2)=F1,ROW(间接($B2))),ROW(间接($C2))))) | |
3 | 1 | 1 | ||||
4 | 2 | 0 | ||||
5 | 0 | 0 |
翻译过来就是:
A | 乙 | C | 德 | 埃 | F | |
---|---|---|---|---|---|---|
1 | 起点(手动) | 范围(自动) | 基线列(自动) | 测试 | 福巴 | |
2 | 氢气 | H2:L | H2:H | 3 | 1 | |
3 | 1 | 1 | ||||
4 | 2 | 0 | ||||
5 | 0 | 0 |