Vba 句子中的代词

Vba 句子中的代词,vba,excel,replace,substitution,Vba,Excel,Replace,Substitution,如果单元格A1包含一个值,我想知道如何从句子中删除它(A2) 示例: 未经修改(原件): 修改后: if A1 = 2,5,8 A2 = 1,3,4,6,7,9 在A1和A2中输入值后,运行以下短宏: Sub removewords() Dim veto As Boolean, temp As String ary1 = Split([a1], ",") ary2 = Split([a2], ",") For Each a In ary2

如果单元格
A1
包含一个值,我想知道如何从句子中删除它(
A2

示例:

  • 未经修改(原件):

  • 修改后:

    if A1 = 2,5,8   
    A2 = 1,3,4,6,7,9  
    

A1A2中输入值后,运行以下短宏:

Sub removewords()
    Dim veto As Boolean, temp As String
    ary1 = Split([a1], ",")
    ary2 = Split([a2], ",")
    For Each a In ary2
        veto = False
        For Each b In ary1
            If a = b Then veto = True
        Next b
        If Not veto Then temp = temp & "," & a
    Next a
    [a2] = Mid(temp, 2)
End Sub

此功能可在工作表或VBA中使用:

Function removeWords(words, wordsToExclude) As String
    Dim w: For Each w In Split(words, ",")
        If InStr(wordsToExclude, w) = 0 Then removeWords = removeWords & "," & w
    Next: removeWords = Mid(removeWords, 2)
End Function

例子: 要获得与示例匹配的输出,请执行以下操作:

…或者,如果您不想像这样“硬编码”源值,可以改为引用单元格,例如:


无论哪种方式,源数据都必须来自“某处”,因为工作表单元格不能同时保存值和公式。或者,可以将该函数转换为一个子例程,然后在需要时执行。

您是否查看了
替换
函数?这是最近提出并回答的问题。
Function removeWords(words, wordsToExclude) As String
    Dim w: For Each w In Split(words, ",")
        If InStr(wordsToExclude, w) = 0 Then removeWords = removeWords & "," & w
    Next: removeWords = Mid(removeWords, 2)
End Function