我在Excel中有一个4列8行的数据集,第一列是类型,有重复的条目。第2列到第4列是人员,单元格是事件计数(样本集)。我对每个人的每种类型的计数加起来不感兴趣,我追求的是每个人找到多少种类型。我可以使用=SUMIF(range,criteria,{sum_range])公式,然后在第二步中删除“零”计数,并获得类型的数量,一次针对一个人。我的数据集有数千种类型和数百个名称,所以这不是一个选项。
从本质上讲,它是关于从列类型中删除重复项,并在其他列中用yes/no或true/false指示该人是否具有该类型。
有没有一个公式,所有的人一次?
| 类型|人A|人B|人C|
| - -|- -|- -|- -|
| 一种|第0页|四十五|小行星23462|
| B|四百五十六|小行星3452|第0页|
| C语言|第0页|四个|小行星4536|
| 日|五十六人|第0页|一个|
| 日|九个|小行星一千二百三十五|八个|
| B|第0页|第0页|第0页|
| (c)秘书长的报告|七十八|第0页|第0页|
2条答案
按热度按时间jyztefdp1#
我有一个
R
的答案给你。(以后,请以易于复制的格式提供您的数据!)这将生成一个漂亮的小表:
| 人|类型数|
| - -|- -|
| 人_a|三个|
| 人员_B|四个|
| 人_c|三个|
此答案将针对任意数量的类型和人员进行缩放。如果数据框包含不希望聚合的其他非人员列,甚至可以按如下方式修改透视:
tidyr::pivot_longer(cols = tidyselect::starts_with("person"), names_to = "person", values_to = "count")
。如果要删除“person”前缀,请将以下参数添加到pivot_longer
调用中:names_prefix = "person_"
.编辑
这是你想要的吗?
该表如下所示:
| 类型|人_a|人员_B|人_c|
| - -|- -|- -|- -|
| 一种|第0页|一个|一个|
| B|一个|一个|第0页|
| C语言|一个|一个|一个|
| 日|一个|一个|一个|
基本上,我们将
df
中以“person”开头的列汇总为1(如果该类型的行中至少有一行具有正计数),否则为0。cvxl0en22#
您是否尝试过数组公式(也称为CSE公式)?请参阅以下内容:https://www.mrexcel.com/excel-tips/cse-array-formulas-excel/
可以使用多个条件(if语句)链接在一起。我经常使用SUM(IF([condition 1],IF([condition 2],1,0),0))来实现多条件计数。