重复行表中的唯一特征计数

时间:2018-07-22 18:51:20

标签: google-apps-script google-sheets pivot-table google-query-language google-sheets-query

我的表格中有基于重复ID列列出的重复行。重复的行可能具有一个或多个具有唯一值的特征列。我正在尝试计算重复行中哪些特征列具有唯一值。

之前:

+-----+----------+-------------+-----------+------------+
| ID  | charType | charFlavour | charColor | charWeight |
+-----+----------+-------------+-----------+------------+
| 123 | gel      | mint        | blue      | 10gms      |
| 123 | liquid   | mint        | blue      | 10gms      |
| 123 | solid    | mint        | blue      | 10gms      |
| 456 | wood     | orange      | red       | 20gms      |
| 456 | wood     | vanilla     | red       | 20gms      |
| 456 | wood     | raspberry   | red       | 20gms      |
| 456 | wood     | strawberry  | red       | 20gms      |
| 789 | metal    | mango       | yellow    | 25gms      |
| 789 | metal    | mango       | yellow    | 30gms      |
| 789 | metal    | mango       | yellow    | 22gms      |
| 333 | silica   | NA          | magenta   | 11gms      |
| 333 | plastic  | NA          | white     | 11gms      |
| 333 | rubber   | NA          | teal      | 11gms      |
+-----+----------+-------------+-----------+------------+

之后:

+-------------+-----+-----+-----+-----+-------+
|     ID      | 123 | 456 | 789 | 333 | Total |
+-------------+-----+-----+-----+-----+-------+
| charType    |   1 |   0 |   0 |   1 |     2 |
| charFlavour |   0 |   1 |   0 |   0 |     1 |
| charColor   |   0 |   0 |   0 |   1 |     1 |
| charWeight  |   0 |   0 |   1 |   0 |     1 |
+-------------+-----+-----+-----+-----+-------+

使用数据透视表或Google查询可以使用这种格式吗?

1 个答案:

答案 0 :(得分:1)

也许这不是您要找的最优雅的解决方案-看来Google查询语言中没有函数返回列的所有唯一值。但是,此解决方案应该为每个属性成功计算出对应于该属性的多个值的ID数量。例如,它将计算多少个ID对应于多个charFlavour。这是要执行的两个步骤/查询:

  1. =QUERY(A1:E, "select A, max(B), min(B), max(C), min(C), max(D), min(D), max(E), min(E) group by A", 1):这将针对每个ID选择每个属性的字母/数字最大值和最小值。它将为每个ID返回一行,其中包含最小和最大属性值。

  2. 对于每个属性,请使用类似=QUERY(G1:O, "select count(G) where H != I", 1)的名称。如果您有四个属性,则将需要其中四个调用;否则,您将无法进行任何调用。只需将where H != I更改为与每个属性相对应的两列即可。这些QUERY调用中的每一个都会生成一个只有一个值的表,对于某个属性,ID的数目具有多个值。