我有一个包含三列的长文件,第一列包含机构名称,第二列包含每个机构内的客户名称,第三列包含“是/否”字段,用于指示是否选择了特定机构内的特定客户
Inst. Cust. Selected
INST_1 CUST_1 Yes
INST_1 CUST_2 Yes
INST_1 CUST_3
INST_1 CUST_4
INST_2 CUST_5 Yes
INST_2 CUST_6
INST_2 CUST_7
INST_3 CUST_8 Yes
INST_3 CUST_9
INST_3 CUST_10
INST_3 CUST_11
INST_3 CUST_12 Yes
INST_3 CUST_13
INST_3 CUST_14
INST_4 CUST_15
INST_4 CUST_16 Yes
INST_4 CUST_17 Yes
INST_4 CUST_18 Yes
我感兴趣的是计算选择一个、两个或两个以上客户的机构数量。
我熟悉使用数据透视表的解决方案,但就我而言,通过公式生成结果更为实用。在示例中,所需的输出为:
选定一位客户的机构数量:1
拥有两名选定客户的机构数量:2
拥有三名或以上选定客户的机构数量:1
答案1
我会使用 VBA 插件中的宏编码函数。我不会给出确切的代码,因为它经常会更改。但这里有一些基本的伪编码。
- 首先从要查看的单元格“获取”数据。一旦你搞清楚了 Excel 如何获取数据,就搞清楚如何循环这个操作。
- 设置分析公式然后“放入”数据单元
- 前进到下一个单元格或将其增加到下一个单元格。注意:您可以使用 READ 和 WRITE 代替 GET 和 PUT。我相信两者之间的区别在于一个读取二进制值,另一个读取字符串值。大多数程序员使用字符串值来存储值,并将其处理为浮点数或整数。
答案2
我花了更多时间研究这个问题,并找到了一个解决方案,利用了帖子中说明的方法根据条件计算唯一数值
为了实现该公式,我添加了一个附加列,将 Inst. 列转换为仅包含数字 ID 的列。这是使用该FREQUENCY
函数所必需的。
Inst. Inst_ID Cust. Selected
INST_1 1 CUST_1 Yes
INST_1 1 CUST_2 Yes
INST_1 1 CUST_3
INST_1 1 CUST_4
INST_2 2 CUST_5 Yes
INST_2 2 CUST_6
INST_2 2 CUST_7
INST_3 3 CUST_8 Yes
INST_3 3 CUST_9
INST_3 3 CUST_10
INST_3 3 CUST_11
INST_3 3 CUST_12 Yes
INST_3 3 CUST_13
INST_3 3 CUST_14
INST_4 4 CUST_15
INST_4 4 CUST_16 Yes
INST_4 4 CUST_17 Yes
INST_4 4 CUST_18 Yes
仅被选中一次的院校数量可计算为SUM(1*(FREQUENCY(IF(Selected="Yes",Inst_ID),Inst_ID)=1))
。被选中两次及以上的院校数量可按类似方式计算。
函数中的 bin 数组FREQUENCY
也可以指向唯一的 Inst_ID 列表。