从Excel中包含逗号分隔值的两个单元格中提取公共值
有没有一种简单的方法可以从两个以逗号分隔的数字单元格中提取公共数字 我在每个单元格中有12个逗号分隔的数字。它们并非都是独一无二的。有些数字可以重复两次。但不会超过两次。数字都是正数,只有一位或两位数字 我的数据如下:它们位于A列:从Excel中包含逗号分隔值的两个单元格中提取公共值,excel,vba,Excel,Vba,有没有一种简单的方法可以从两个以逗号分隔的数字单元格中提取公共数字 我在每个单元格中有12个逗号分隔的数字。它们并非都是独一无二的。有些数字可以重复两次。但不会超过两次。数字都是正数,只有一位或两位数字 我的数据如下:它们位于A列: 11,11,13,15,16,18,20,20,26,27,28,29 8,9,10,12,13,14,18,20,21,22,24,28 13,13,14,14,15,17,18,19,20,21,23,25 6,6,8,10,12,14,15,17,18,20,
11,11,13,15,16,18,20,20,26,27,28,29
8,9,10,12,13,14,18,20,21,22,24,28
13,13,14,14,15,17,18,19,20,21,23,25
6,6,8,10,12,14,15,17,18,20,20,25
11,13,17,18,19,19,22,25,26,28,28,31
7,9,15,16,17,18,23,24,24,25,26,27
7,9,11,12,12,15,16,16,18,18,20,23
9,11,13,15,18,22,23,24,25,28,29,29
7,9,10,11,12,12,13,14,15,16,19,22
5,10,11,12,12,16,17,18,20,22,24,25
7,10,13,16,16,17,18,19,21,23,24,24
10,14,16,18,18,19,21,23,23,25,27,28
我希望得到的结果是:
我需要一个不将值分成不同列的解决方案。
谢谢你的帮助
因为在某些情况下,数字可能重复两次,所以我也愿意接受这样的解决方案
没有VBA也可以: B1中的公式:
在这种情况下,您还需要通过CtrlShift Enter确认在没有VBA的情况下: B1中的公式: 在这种情况下,您还需要通过CtrlShiftEnter确认匹配的子字符串 以下是更简单的“重复”解决方案: 在Excel中,按如下方式使用:
=comStr(A2,A3)
将代码复制到标准模块中,例如模块1
代码
编辑:
这里是“完整”版本,您可以选择是否允许重复
在Excel中,按如下方式使用:
=comStr(A2,A3)
=comStrA2,A3,为真,允许重复上述版本或
=comStrA2,A3或=comStrA2,A3,FALSE不允许它们
Function comStr(String1 As String, _
String2 As String, _
Optional allowDupes As Boolean = False, _
Optional ByVal Delimiter As String = ",") _
As String
Dim Data1, Data2, Result(), Curr, i As Long, j As Long, l As Long, n As Long
Data1 = Split(String1, Delimiter)
Data2 = Split(String2, Delimiter)
For i = 0 To UBound(Data1)
Curr = Data1(i)
For j = 0 To UBound(Data2)
If Data2(j) = Curr Then GoSub writeResult: Exit For
Next j
Next i
If l = 0 Then Exit Function
comStr = Join(Result, Delimiter)
Exit Function
writeResult:
If Not allowDupes Then
If l > 0 Then
For n = 0 To l - 1
If Result(n) = Curr Then Exit For
Next
If n <= l - 1 Then Return
End If
End If
ReDim Preserve Result(l)
Result(l) = Data1(i)
l = l + 1
Return
End Function
匹配子字符串
以下是更简单的“重复”解决方案:
在Excel中,按如下方式使用:
=comStr(A2,A3)
将代码复制到标准模块中,例如模块1
代码
编辑:
这里是“完整”版本,您可以选择是否允许重复
在Excel中,按如下方式使用:
=comStr(A2,A3)
=comStrA2,A3,为真,允许重复上述版本或
=comStrA2,A3或=comStrA2,A3,FALSE不允许它们
Function comStr(String1 As String, _
String2 As String, _
Optional allowDupes As Boolean = False, _
Optional ByVal Delimiter As String = ",") _
As String
Dim Data1, Data2, Result(), Curr, i As Long, j As Long, l As Long, n As Long
Data1 = Split(String1, Delimiter)
Data2 = Split(String2, Delimiter)
For i = 0 To UBound(Data1)
Curr = Data1(i)
For j = 0 To UBound(Data2)
If Data2(j) = Curr Then GoSub writeResult: Exit For
Next j
Next i
If l = 0 Then Exit Function
comStr = Join(Result, Delimiter)
Exit Function
writeResult:
If Not allowDupes Then
If l > 0 Then
For n = 0 To l - 1
If Result(n) = Curr Then Exit For
Next
If n <= l - 1 Then Return
End If
End If
ReDim Preserve Result(l)
Result(l) = Data1(i)
l = l + 1
Return
End Function
是的,请看截图@MatYes,请看截图@MatI没有投反对票,但一个常见的原因是,海报上没有显示他们在发布问题之前为自己解决问题所做的事情的证据。我没有投反对票,但一个常见的原因是,海报上没有显示他们在发布问题之前为自己解决问题所做的事情的证据。