代码之家  ›  专栏  ›  技术社区  ›  Stes Mus

从单元格中的文本中删除与一组单词匹配的行

  •  0
  • Stes Mus  · 技术社区  · 9 月前

    单元格中的原始文本(例如A1):

    apple
    
    Apricot
    
    Avocado
    
    
    Apples
    
    Banana
    Blackberry
    
    Cherry
    
    Blueberry
    
    Coconut
    
    
    Cranberry
    
    
    
    Date
    
    Fig
    

    单元格中必须单独(分隔符)的一组单词(例如A2) ; )检查每行文本是否匹配:

    Apple;Banana;Cherry;Cranberry;Fig
    

    每个单词必须完全匹配 (不区分大小写) 文本行的值。

    单元格中的预期文本(例如A3):

    单元格A1中的原始文本由26行组成,包括空白行。 结果应符合以下内容:

    • 匹配检查后,应删除第1、10、13、20和26行。
    • 大于1的空白连续行应替换为1个空白行。
    • 应删除非空白值前后的空白行。
    Apricot
    
    Avocado
    
    Apples
    
    Blackberry
    
    Blueberry
    
    Coconut
    
    Date
    
    2 回复  |  直到 9 月前
        1
  •  2
  •   PatrickdC    9 月前

    使用筛选和匹配

    如果你想输出多个单元格,你可以使用这个:

    =LET(a, TOCOL(SPLIT(A1,char(10))),
         b, TOCOL(SPLIT(A2,";")),
         FILTER(a, ISERROR(MATCH(ARRAYFORMULA(UPPER(a)), ARRAYFORMULA(UPPER(b)), 0))))
    

    注: UPPER 通过将文本转换为大写字母来忽略区分大小写。或者, LOWER 可以以将文本转换为小写的相同方式使用。

    输出:(多行)

    杏树
    鳄梨
    苹果
    黑莓
    蓝莓
    椰子
    日期

    如果你希望输出只是一个单元格,那么添加 JOIN 具有 CHAR(10) 这是字符 line break .

    =LET(a, SPLIT(A1,char(10)), 
         b, SPLIT(A2,";"), 
         JOIN(char(10)&char(10), FILTER(a, ISERROR(MATCH(ARRAYFORMULA(UPPER(a)), ARRAYFORMULA(UPPER(b)), 0)))))
    

    输出:(单电池)

    杏树

    鳄梨

    苹果

    黑莓

    蓝莓

    椰子

    日期

        2
  •  1
  •   z..    9 月前

    尝试:

    =LET(
      n,CHAR(10),
      s,SPLIT(A1,n),
      JOIN(n&n,FILTER(s,0=COUNTIF(SPLIT(A2,";"),s))))
    

    enter image description here