【问题标题】:How do I remove a specific value from a string of comma separated values?如何从逗号分隔值字符串中删除特定值?
【发布时间】:2021-05-19 18:35:37
【问题描述】:

我有两列。 A 列具有单个值,B 列具有逗号分隔值的字符串。

我想在 B 列的值字符串中找到 A 列的值并将其删除。其余的值用逗号分隔。

例如:

我一直在玩的 SUBSTITUTE 公式是=SUBSTITUTE(B2,A2," ")

我遇到的一个问题是某些值中包含我希望保留的“/”字符。

例子:

A 列

FC0201F1I

B 列

FC0201F1I,FC0201F1I/FC0201F2I,FC0201F2I

SUBSTITUTE 输出破坏了价值:

, /FC0201F2I,FC0201F2I

我正在寻找的输出:

FC0201F1I/FC0201F2I,FC0201F2I

任何帮助我解开这个谜团的 Excel 公式组合或 VBA 代码将不胜感激。我觉得解决方案很简单,我盯着我的脸却看不到它。

感谢您的帮助!

【问题讨论】:

    标签: excel vba string excel-formula substitution


    【解决方案1】:

    在 SUBSTITUTE 内的两个字符串的开头和结尾添加逗号,然后使用空格和修剪来删除 ,(如果它们被添加到前面或后面并且没有被替换):

    =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(","&B2&",",","&A2&",",""),","," "))," ",",")
    

    【讨论】:

      【解决方案2】:

      或者,这可以通过 FILTERXML() 中的一些 xpath 来实现:

      C1中的公式:

      =TEXTJOIN(",",,FILTERXML("<t>"&A1&"<s>"&SUBSTITUTE(B1,",","</s><s>")&"</s></t>","//s[.!=../text()]"))
      

      【讨论】:

        【解决方案3】:

        进行 2 次替换,1 次替换搜索词后跟一列,1 次替换搜索词前面加逗号。

        =SUBSTITUTE(SUBSTITUTE(B2,","&A2, ""), B2&",","")
        

        【讨论】:

        • 内部替换 SUBSTITUTE(B2,","&amp;A2, "") 将把 /FC0201F2I,FC0201F2I 返回到外部,因为它已经不正确了。
        • 它实际上不会,但唯一的原因是因为被搜索的文本以搜索词开头。我的公式是错误的。:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-21
        • 2021-05-14
        • 2014-03-22
        • 1970-01-01
        相关资源
        最近更新 更多