【问题标题】:Find frequency of words in a column in Google Sheets and lookup another value from a different column using formulae在 Google 表格的列中查找单词的频率,并使用公式从不同的列中查找另一个值
【发布时间】: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

我现在这样做的方式很长,我不确定这是否是最好的解决方案。

这是我的解决方案:

  1. Column1 中的JOIN 值使用分隔符“”,然后SPLIT 使用相同的分隔符,然后TRANSPOSE 一步将它们放入一列。这样我就有了 Column1 中使用的所有单词的列表,比如 Column3。
  2. 在 Column4 中提取所有 UNIQUE 值,然后对 Column3 中的唯一值执行 COUNTIF。这样我就可以通过引用所有单词的 lsit 来获取每个唯一单词的频率。
  3. 为了得到投票的总和,我必须在公式中使用动态文本TRANSPOSE Column4 然后QUERY Column1 和 Column2。该公式类似于=QUERY(Column1:Column2, "SELECT SUM(Column2) WHERE Column1 CONTAINS '" & referenceToUniqueWord & "'", 1)。我必须首先转置的原因是因为查询公式输出 2 个数据单元格,即文本:sumColumn1 和数字:'总票数'。因为对于一个唯一单词的单元格,我得到了两个数据单元格,我无法将公式向下拖动,因此我必须水平执行。
  4. 经过最后一步,我终于得到了三行数据: 一行只是转置了 Column4(所有唯一词)。第二行只是使用 QUERY 公式的文本 sumColumn2。第三行是实际的投票总数,由个人QUERY 公式得出。然后,我将这些行转换为列,并得到我的最终表格,我 VLOOKUP 之前到达的频率值。

这种方法冗长且容易出错。如果列表很大并且在最初的JOIN 中我收到限制为 50,000 的错误,也不起作用。欢迎任何使它变得更好的想法。我知道使用脚本可以更轻松地完成此操作,但我更喜欢仅使用公式来完成。

【问题讨论】:

    标签: google-sheets google-sheets-formula transpose array-formulas google-sheets-query


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(
     IF(IFERROR(SPLIT(A:A, " "))="",,"♠"&SPLIT(A:A, " ")&"♦"&B:B)
     ,,999^99)),,999^99), "♠")), "♦"), 
     "select Col1,sum(Col2) 
      group by Col1
      order by sum(Col2) desc 
      label sum(Col2)''"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多