【问题标题】:How to filter basic English words from a word list in Google Sheet如何从 Google Sheet 中的单词列表中过滤基本的英语单词
【发布时间】:2021-05-14 17:04:25
【问题描述】:

我使用的工具: Google 表格(在这种情况下我不使用 Google Apps 脚本。)

本题的目的: 我想通过使用 Google 表格功能从单词列表中排除基本的英语单词。这个问题的目的是我想用谷歌表格进行文本挖掘。

当前情况:

有一列有一些英文单词。 这张表是从下面的这些句子中得到的。

  • 我有一只名叫海洋的狗。
  • 我有一本名为Rosetta的书。
  • 我这样做。
  • 我就是这么做的。

工作表名称:Sheet1

A B
1 Words. Word count
2 i 4
3 have 2
4 do 2
5 a 2
6 dog 1
7 book 1
8 named 1
9 ocean 1
10 titled 1
11 rosetta 1
12 . 4
13 that 1
14 this 1

从这样一张表中,我想过滤出一些基本的英文单词如ihavedoa 和“.”。

如果是关于过滤少量值,我知道这个解决方案。我可以使用filter()函数来过滤ihavedoa和“ .”。

= filter (A2:12, A2:12<>"i",A2:A12<>"have", A2:A12 <> "do", A2:A12<>"a", A2:A12 <>".")

但是,如果要过滤更多的值,这个过滤功能就会变长。这将缺乏可读性。

 = filter (A2:12, A2:12<>"i",A2:A12<>"have", A2:A12 <> "do", A2:A12<>"a", ..., A2:A12 <>".")

为了防止出现这种情况,我准备了以下带有基本英语单词的列表。

工作表名称:Sheet2

A
1 i
2 you
3 he
4 she
5 we
6 they
7 but
... ...
1000 .

使用上面的列表,我尝试过滤 Sheet!A1:A 中的值,但没有成功。

在 Sheet1 的 C 列执行此功能。

=filter(A2:A, A2:A<>Sheet2!A2:A)

作为函数的结果,这没有创造任何东西。此函数不排除在 Sheet2 中指定的值。

问题: 想通过一些google sheet功能的组合来实现这个功能,应该怎么做呢?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    试试

    =filter(A2:A, not(regexmatch(A2:A, textjoin("|", 1, Sheet2!A2:A))))
    

    看看这是否有效?如果没有,请分享您的电子表格副本,以便我们仔细查看。

    更新:由于某些标点符号在正则表达式中具有特殊含义,最好将它们包含在列表(sheet2)中并将它们添加到 textjoin() 之前的 'character班级)。这将使公式看起来像这样

    =filter(A2:A, not(REGEXMATCH(A2:A,"[.,:?]|"&textjoin("|", TRUE, Sheet2!A2:A))))
    

    还要确保 textjoin() 的第二个参数设置为 'TRUE'。

    【讨论】:

    • 应该是 =filter(A2:A, not(regexmatch(A2:A,textjoin("|", 1, Sheet2!A2:A)))) ?
    • 当然,@TomSharpe。我编辑了我的回答。谢谢!!
    • @JPV 感谢您的及时答复!我试过你的公式,但它似乎不起作用。你能看看我下面的答案的截图吗?
    • @Kos:你能分享一份你的电子表格吗?这样可以更轻松地帮助您。
    • @JPV 感谢您的回复。这是我的电子表格的副本。如果您需要其他任何东西,请告诉我。 docs.google.com/spreadsheets/d/…
    【解决方案2】:

    感谢您的及时帮助!我试过你建议的公式,但不幸的是它不起作用。

    This shows "No matches are found in FILTER evaluation."

    这是sheet2。它有单词列表:

    The list of words that I want to exclude

    根据您的建议,我尝试查看每个公式的含义。

    textjoin("|", 1, Sheet2!A2:A) 是一种准备“OR”表达式的方法。 REGEXMATCH(A2:A, textjoin("|", 1, Sheet2!A2:A)) 是一种返回 TRUE 或 FALSE 的方法。

    textjoin regexmatch

    因为这个正则表达式匹配返回了 #REF 错误。我修改了如下公式;

    modified regexmatch formula

    这会返回 FALSE 作为结果。基于这些,我替换了如下建议的公式:

    =filter(A2:A, not(REGEXMATCH(A2:A,textjoin(" | ", 1, Sheet2!A2:A))))
    

    在“|”两边加了两个空格

    此公式返回值,但是看起来C列中的返回值不排除Sheet2中指定的单词。

    Result

    为了排除 Sheet2 中指定的值,我应该怎么做?

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多