从Excel中的另一个字符串中减去逗号分隔的字符串

从Excel中的另一个字符串中减去逗号分隔的字符串,excel,vba,excel-formula,Excel,Vba,Excel Formula,如何从Excel中的另一个字符串中减去逗号分隔的字符串 如果A1:1,2,3,4,5,6,7,8,9 A2:2,6,9 我想要的结果应该在单元格A3中,减去A1-A2后:1,3,4,5,7,8 当A2=2,3,4通过替换函数连续出现时,这很容易,但是我找不到解决上述问题的方法。您同时拥有标记公式和VBA。我也给你们两个选择: 1公式 请在米兰的任何一个单元格中调用TXTFILTRAT1,A2,,/P>,请考虑编辑你的问题以使它更好。不要使用所有的大写字母,并详细说明您的问题。到目前为止,您尝试了

如何从Excel中的另一个字符串中减去逗号分隔的字符串

如果A1:1,2,3,4,5,6,7,8,9 A2:2,6,9 我想要的结果应该在单元格A3中,减去A1-A2后:1,3,4,5,7,8
当A2=2,3,4通过替换函数连续出现时,这很容易,但是我找不到解决上述问题的方法。

您同时拥有标记公式和VBA。我也给你们两个选择:

1公式


请在米兰的任何一个单元格中调用TXTFILTRAT1,A2,,/P>,请考虑编辑你的问题以使它更好。不要使用所有的大写字母,并详细说明您的问题。到目前为止,您尝试了什么?使用VBA/UDF很容易。。用这个作为起点。。。如果你还有问题,请不要改变这个问题。发布另一个问题。如果需要,请参考此问题。太好了。。。就像乌德菲斯的伟大成就一样,我非常感谢你
=TEXTJOIN(",",1,FILTERXML("<t><s>"&SUBSTITUTE(A1&","&A2,",","</s><s>")&"</s></t>","//s[not(following::*=. or preceding::*=.)]"))
Function TxtFilter(val1 As String, val2 As String, sep As String) As String

Dim arr1 As Variant, arr2 As Variant
Dim x As Long
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")

arr1 = Split(val1, sep)
arr2 = Split(val2, sep)

'Iterate first array to load dictionary
For x = LBound(arr1) To UBound(arr1)
    dict(arr1(x)) = 1
Next x

'Iterate second array to remove from dictionary
For x = LBound(arr2) To UBound(arr2)
    If dict.Exists(arr2(x)) Then dict.Remove arr2(x)
Next x

'Join remainder back together
TxtFilter = Join(dict.keys, sep)

End Function