【发布时间】:2020-07-29 04:03:47
【问题描述】:
文档链接 - https://docs.google.com/spreadsheets/d/1-kEMMiB6mj3lt3DUSDvW3BmdGaADajbGUwD_oZVllWU/edit?usp=sharing
我编写了一个公式,它扫描 Slack 线程列表,将线程格式化为纯文本,然后计算纯文本范围内每个单词的频率。
此公式背后的目标是搜索在 Slack 频道中经常出现的“趋势”关键字。
如您所见,有几个选项卡,自述文件很好地解释了所有内容,但我将在此处提供 TLDR:
数据选项卡包含所有导入的 Slack 信息。 Data!E2 包含一个凌乱的 REGEXREPLACE 函数公式,可将数据过滤成纯文本。
在“关键字!A2”下的“关键字”标签中,您会找到“频率”计数公式。这里是:
=ArrayFormula(QUERY(TRANSPOSE(SPLIT(JOIN(" ", Data!E3:E)," ")&{"";""}),"select Col1, count(Col2) where not(Col1 matches'"&JOIN("|", Stopwords!B1:B)&"') group by Col1 order by count(Col2) desc limit 800 ",0))
为了澄清公式,搜索范围 Data!E3:E 并将所有单词与空格分隔符连接在一起。然后,我们将字符串拆分到多个单元格中,并将新的单元格行转置为关键字!A3 中的一列单元格。
最后,运行查询以计算每个单词的所有实例并将每个关键字的计数放入关键字!B3。要记住的一件事是,此查询是针对在 Stopwords!B1 下找到的停用词列表运行的,以便从查询中删除大量不需要计算的文本。
如您所见,我现在收到了#REF!错误。情况并非总是如此,有一段时间该公式按预期工作,单词列在关键字下的 A 列中,而 B 列显示它们出现的频率。然后其他列可以从该列表中运行它们的功能并填写关键字表的其余部分。
不过我很好奇,我注意到当我将函数范围设置为 Data!E3:3000 时,每次运行该函数时,它都会在该范围内再增加十行左右,所以它会增长到 E3:3018, E3 :3032 等等。然后它坏了,现在说“错误结果没有自动扩展,请插入更多行 (13)。”
如果有人可以帮助我优化这个公式以使其运行得更好一点,那就太棒了。谢谢!
【问题讨论】: