在我的Google文档电子表格中,我有一个包含句子的列(每行1个句子):
How is it going?
I am going to the store.
He is going to play baseball.
我想创建另一个列,其中包含一个唯一的单词列表(每行1个单词,忽略大写,好像所有内容都是小写的),所以它的几行可能看起来像:
how
is
it
going
I
am
to
the
store
等
另外,作为奖励,我希望创建另一个列,其中每个单词都会出现。例如,前几行可能如下所示:
1
1
1
2
因为"",""和""它"出现一次,"去"出现两次。
编辑:有人可以向我解释为什么这已经被投票了?答案 0 :(得分:3)
这是一种方法。
我写了一个自定义函数来将句子分解成单词,删除标点符号等。你可以在TOOLS> SCRIPT EDITOR
下添加它function WORDS(input) {
var input = input.toString();
var inputSplit = input.split(" ");
Logger.log(inputSplit);
inputSplit = inputSplit.toString();
var punctuationless = inputSplit.replace(/[.,\/#!$%\?^&\*;:{}=\-_`~()]/g," ");
var finalString = punctuationless.replace(/\s{2,}/g," ");
finalString = finalString.toLowerCase();
return finalString.split(" ") ;
}
完成并保存后,您可以像=WORDS(A1:A3)
从那时起,我刚刚使用了Google功能。
=unique(c2:c)
为我们提供了列表中的唯一字词
=COUNTIF(C2:C,"="&D2)
然后计算单词
有一个有效的例子here
我不确定它在大规模上表现得如何,但它可能会处理较小的范围。
答案 1 :(得分:2)
Ussume,列表在A列中。
将此公式粘贴到单元格C2中:
=ArrayFormula(TRANSPOSE(REGEXEXTRACT(SPLIT(JOIN(" ",A:A)," "),"\w+")))
这将给出所有单词的列表。
然后将此公式粘贴到任何空闲单元格中:
=QUERY({C:C,C:C},"select Col1, count(Col2) where Col1 <> '' group by Col1",1)
结果是:
单一配方解决方案也是可能的:
=QUERY({{"Words";ArrayFormula(TRANSPOSE(REGEXEXTRACT(SPLIT(JOIN(" ",A:A)," "),"\w+")))},{"Words";ArrayFormula(TRANSPOSE(REGEXEXTRACT(SPLIT(JOIN(" ",A:A)," "),"\w+")))}},"select Col1, count(Col2) where Col1 <> '' group by Col1",1)
答案 2 :(得分:1)
我复制了汤姆·伍德沃德(Tom Woodward)的脚本,并添加了一行从输出中删除单个字母词。
var noSingleLetterWords = punctuationless.replace(/\b[a-zA-Z]{1}\b/g,"");
这是最终结果。
function WORDS(input) {
var input = input.toString();
var inputSplit = input.split(" ");
Logger.log(inputSplit);
inputSplit = inputSplit.toString();
var punctuationless = inputSplit.replace(/[.,\/#!$%\?^&\*;:{}=\-_`~()]/g," ");
var noSingleLetterWords = punctuationless.replace(/\b[a-zA-Z]{1}\b/g,"");
var finalString = noSingleLetterWords.replace(/\s{2,}/g," ");
finalString = finalString.toLowerCase();
return finalString.split(" ") ;
}
答案 3 :(得分:0)
比@Max Makhrov的出色A稍长,但不区分大小写(例如,He
和he
在诸如{ {1}}和数字(例如He said he would.
中的711
)不会引起错误:
I am going to the 711 store.
另一方面,确实将=unique(ArrayFormula(lower(TRANSPOSE(split(join(" ",left(A1:A3,len(A1:A3)-1))," ")))))
和is
算入其中,例如"is"
。
对于QUERY,我会按字母顺序添加一种排序方式:
How is "is" going?
或按频率:
=QUERY({C:C,C:C},"select Col1, count(Col2) where Col1 <> '' group by Col1 order by Col1",1)
虽然可能所需要的仅仅是:
=QUERY({C:C,C:C},"select Col1, count(Col2) where Col1 <> '' group by Col1 order by count(Col2) desc",1)
复制以适合(假设各个单词在ColumnB中,从Row1开始),例如使用以下公式表示:
=countif(B:B,B1)