从 VBA 中的另一个较长的链中分离出由“,”分隔的链的非副本
Isolate a non duplicate of a chain separated by "," from another longer chain in VBA
例如,如果您在单元格 A1 中有:1, 2, 3, 4 ,5 ,6 ,7 ,8 ,9
在 A2 中你有: 1, 3, 6 ,9 , 15
我想找到一个 VBA 函数 F 来执行此操作:
F(A1; A2)= 15,这意味着它将给出唯一不在 A1 中看到的数据链中的字符
如果我们在 B1 中有:1、2、5、8、15、20。F 会这样做:
F(A1; B2)=15, 20(用“,”或其他东西分隔),如果你有 2、3 或没有出现在数据链 A1 中的 4 个字符。
有人可以给我这样的代码吗?
谢谢。
这个功能适合你
Function ReturnUnique(cell1 As Range, cell2 As Range) As String
ReturnUnique = ""
Dim v1 As Variant, v2 As Variant
v1 = Split(cell1.Value, ",")
v2 = Split(cell2.Value, ",")
Dim i As Long, j As Long
Dim bool As Boolean
For i = LBound(v1, 1) To UBound(v1, 1)
bool = True
For j = LBound(v2, 1) To UBound(v2, 1)
If v2(j) = v1(i) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v1(i)
Else
ReturnUnique = ReturnUnique & ", " & v1(i)
End If
End If
Next i
For i = LBound(v2, 1) To UBound(v2, 1)
bool = True
For j = LBound(v1, 1) To UBound(v1, 1)
If v1(j) = v2(i) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v2(i)
Else
ReturnUnique = ReturnUnique & ", " & v2(i)
End If
End If
Next i
End Function
编辑:
改用这个函数
Function ReturnUnique(cell1 As Range, cell2 As Range) As String
ReturnUnique = ""
Dim v1 As Variant, v2 As Variant
v1 = Split(Trim(cell1.Value), ",")
v2 = Split(Trim(cell2.Value), ",")
Dim i As Long, j As Long
Dim bool As Boolean
For i = LBound(v2, 1) To UBound(v2, 1)
bool = True
For j = LBound(v1, 1) To UBound(v1, 1)
If Trim(v1(j)) = Trim(v2(i)) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v2(i)
Else
ReturnUnique = ReturnUnique & ", " & v2(i)
End If
End If
Next i
End Function
例如,如果您在单元格 A1 中有:1, 2, 3, 4 ,5 ,6 ,7 ,8 ,9 在 A2 中你有: 1, 3, 6 ,9 , 15 我想找到一个 VBA 函数 F 来执行此操作: F(A1; A2)= 15,这意味着它将给出唯一不在 A1 中看到的数据链中的字符 如果我们在 B1 中有:1、2、5、8、15、20。F 会这样做: F(A1; B2)=15, 20(用“,”或其他东西分隔),如果你有 2、3 或没有出现在数据链 A1 中的 4 个字符。 有人可以给我这样的代码吗?
谢谢。
这个功能适合你
Function ReturnUnique(cell1 As Range, cell2 As Range) As String
ReturnUnique = ""
Dim v1 As Variant, v2 As Variant
v1 = Split(cell1.Value, ",")
v2 = Split(cell2.Value, ",")
Dim i As Long, j As Long
Dim bool As Boolean
For i = LBound(v1, 1) To UBound(v1, 1)
bool = True
For j = LBound(v2, 1) To UBound(v2, 1)
If v2(j) = v1(i) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v1(i)
Else
ReturnUnique = ReturnUnique & ", " & v1(i)
End If
End If
Next i
For i = LBound(v2, 1) To UBound(v2, 1)
bool = True
For j = LBound(v1, 1) To UBound(v1, 1)
If v1(j) = v2(i) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v2(i)
Else
ReturnUnique = ReturnUnique & ", " & v2(i)
End If
End If
Next i
End Function
编辑:
改用这个函数
Function ReturnUnique(cell1 As Range, cell2 As Range) As String
ReturnUnique = ""
Dim v1 As Variant, v2 As Variant
v1 = Split(Trim(cell1.Value), ",")
v2 = Split(Trim(cell2.Value), ",")
Dim i As Long, j As Long
Dim bool As Boolean
For i = LBound(v2, 1) To UBound(v2, 1)
bool = True
For j = LBound(v1, 1) To UBound(v1, 1)
If Trim(v1(j)) = Trim(v2(i)) Then
bool = False
Exit For
End If
Next j
If bool Then
If ReturnUnique = "" Then
ReturnUnique = v2(i)
Else
ReturnUnique = ReturnUnique & ", " & v2(i)
End If
End If
Next i
End Function