我想根据多个条目获取一些数据。
我正在使用“NB.SI.ENS()”即“COUNTIFS()”如果我没记错的话,是用英语写的。
我有多个条目,它们代表一个 3D 数组,因为我使用了 3 个源。这些源是活动, A项目,以及日期。
对于每一个,我需要计算三元组(活动,项目,日期)。图片中我的例子显示3为数量测试在项目 1在10月。
有两个来源,COUNTIFS()函数工作正常。我可以用尽可能多的COUNTIFS()因为两个源的行和列之间存在交集(例如,活动, 和项目)
由于有 3 个条目,我需要创建与第三个数组中的数据一样多的二维数组。
我选择了日期作为第三个数组,所以我有 12 个二维数组。
当我获取超过 200 行的数据时,这会耗费 Excel 大量的计算时间。
有没有更好的方法呢?
答案1
我有一个非常肮脏的解决方案,但我已经尝试过并且可以立即获得 600 行数据的结果。
我已经为你截取了我的设置的屏幕截图(https://image.ibb.co/kqxvYR/tmp.png)
基本上,我使用符号将三个文本连接在一起,并且只对该列执行了 COUNTIF
一步步:
- 连接 3 个文本
- 使用此命令[=CONCAT($A2," | ",$B2, " | ",$C2)] 对于 D2(每行增加 1 个数字)
- 例如:A2 =测试, B2 =项目 1,C2 =2017 年 1 月 10 日
- 现在我得到:测试 | 项目 1 | 2017 年 1 月 10 日
当你需要搜索时:将想要的 3 个项目粘贴到单独的位置
- 例如:F10 =建模,G10 =项目 2, I10=2017 年 1 月 10 日
- 再次使用 1.1 命令 [=CONCAT($F10," | ",$G10, " | ",$I10)] 按下 F12
- 现在 F12 看起来像这样建模 | 项目 2 | 2017 年 1 月 10 日
- 您可以使用这个更简单的 COUNTIF 命令获取结果:=COUNTIF(D2:D14,F12)
现在你可能会认为,进行这个丑陋的测试建模 | 项目 2 | 2017 年 1 月 10 日是不可接受的
- 您可以使用 Excel 格式化魔法来隐藏它
- 拖拽所有 D 列丑陋的文本
- 右击 > 设置单元格格式
- 然后“数字”选项卡 >“自定义”
- 输入;;;在文本框中
- 然后丑陋的文字对用户来说就不再可见了
希望这对你有帮助!
答案2
在分析了您的屏幕截图和查询之后,我创建了一个解决方案,它计算了不同日期的所有三个活动。检查此屏幕截图。
数据范围是 A434:D459。
B449 首个配方。
=COUNTIFS($A$434:$A$446,"="&$A449,$B$434:$B$446,"="&$A$448,$C$434:$C$446,"="&B$448)
B453 中的第二种配方。
=COUNTIFS($A$434:$A$446,"="&$A453,$B$434:$B$446,"="&$A$452,$C$434:$C$446,"="&B$452)
B457 中的第三种公式。
=COUNTIFS($A$434:$A$446,"="&$A457,$B$434:$B$446,"="&$A$456,$C$434:$C$446,"="&B$456)
将所有公式向右拖 2 列,然后向下拖 2 行。
根据需要调整数据范围。
希望对你有帮助,我发布的内容已经经过我测试过了。