查找Google表格中一列中的单词频率,并使用公式从另一列中查找另一个值

问题描述 投票:1回答:1

我在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. JOIN值在Column1中使用定界符“”,然后SPLIT使用相同的定界符,然后将TRANSPOSE分为一列。这样,我可以说出Column3中Column1中使用的所有单词的列表。
  2. 在Column4中,拉出所有UNIQUE值,然后对Column3中的唯一值进行COUNTIF。这样,我就可以通过引用所有单词的lsit来获得每个唯一单词的频率。
  3. 为了获得投票总数,我必须通过在公式中使用动态文本来依次输入TRANSPOSE Column4和QUERY Column1和Column2。公式看起来像=QUERY(Column1:Column2, "SELECT SUM(Column2) WHERE Column1 CONTAINS '" & referenceToUniqueWord & "'", 1)。我首先必须转置的原因是因为查询公式输出了2个单元格的数据,即Text:sumColumn1和Number:“票数之和”。因为对于一个单元格的唯一单词我得到了两个单元格的数据,所以我无法将公式向下拖动,因此必须水平执行。
  4. 我在最后一步之后终于得到了三行数据:一行仅换位了Column4(所有唯一的单词)。第二行只是使用QUERY公式的文本sumColumn2。第三行是由各个QUERY公式得出的实际投票总数。然后,我将这些行转置为列,并获得最终表I VLOOKUP较早到达的频率值。

此方法冗长,容易出错。如果列表很大,并且在初始JOIN中也达到了50,000的错误,则此方法也不起作用。任何想法,以使其更好。我知道可以使用脚本轻松完成此操作,但我更希望仅使用公式即可完成。

google-sheets google-sheets-formula transpose array-formulas google-sheets-query
1个回答
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)''"))

0

© www.soinside.com 2019 - 2024. All rights reserved.