【发布时间】:2020-05-02 13:41:03
【问题描述】:
我在 Google 表格中有 2 列数据。 Column1 是唯一的单词或句子(单词在句子中重复),Column2 是每个旁边的数值(比如投票)。我试图从 Column1 获取唯一单词列表,然后从 Column2 获取值(投票)的总和,当单词单独出现或出现在句子中时。
以下是我在 Google 表格中使用的数据示例:
Term Votes
apple 20
apple eat 100
orange 30
orange rules 40
rule why 50
这是最终结果的样子:
Word Votes
apple 120
eat 100
orange 70
rules 40
rule 50
why 50
我现在这样做的方式很长,我不确定这是否是最好的解决方案。
这是我的解决方案:
-
Column1 中的
JOIN值使用分隔符“”,然后SPLIT使用相同的分隔符,然后TRANSPOSE一步将它们放入一列。这样我就有了 Column1 中使用的所有单词的列表,比如 Column3。 - 在 Column4 中提取所有
UNIQUE值,然后对 Column3 中的唯一值执行COUNTIF。这样我就可以通过引用所有单词的 lsit 来获取每个唯一单词的频率。 - 为了得到投票的总和,我必须在公式中使用动态文本
TRANSPOSEColumn4 然后QUERYColumn1 和 Column2。该公式类似于=QUERY(Column1:Column2, "SELECT SUM(Column2) WHERE Column1 CONTAINS '" & referenceToUniqueWord & "'", 1)。我必须首先转置的原因是因为查询公式输出 2 个数据单元格,即文本:sumColumn1 和数字:'总票数'。因为对于一个唯一单词的单元格,我得到了两个数据单元格,我无法将公式向下拖动,因此我必须水平执行。 - 经过最后一步,我终于得到了三行数据:
一行只是转置了 Column4(所有唯一词)。第二行只是使用
QUERY公式的文本 sumColumn2。第三行是实际的投票总数,由个人QUERY公式得出。然后,我将这些行转换为列,并得到我的最终表格,我VLOOKUP之前到达的频率值。
这种方法冗长且容易出错。如果列表很大并且在最初的JOIN 中我收到限制为 50,000 的错误,也不起作用。欢迎任何使它变得更好的想法。我知道使用脚本可以更轻松地完成此操作,但我更喜欢仅使用公式来完成。
【问题讨论】:
标签: google-sheets google-sheets-formula transpose array-formulas google-sheets-query