咨询Excel中提取两个单元格共同文本内容的实现方法
Excel提取两单元格共同文本的实现方法
完全可行,以下是针对不同Excel版本的解决方案:
适用于Excel 365/2021(支持动态数组)
在D1单元格输入以下公式,会自动提取所有共同的文本项:
=FILTER(TEXTSPLIT(A1," + "),ISNUMBER(XMATCH(TEXTSPLIT(A1," + "),TEXTSPLIT(B1," + "))))
公式说明:
TEXTSPLIT(A1," + "):将A1内容按+拆分,得到独立的国家列表XMATCH:匹配A1拆分后的项在B1拆分列表中的位置,存在则返回数字,不存在返回错误值ISNUMBER:筛选出匹配成功的项FILTER:最终输出所有共同文本
如果只需要提取第一个共同项,使用这个公式:
=INDEX(TEXTSPLIT(A1," + "),XMATCH(TRUE,ISNUMBER(XMATCH(TEXTSPLIT(A1," + "),TEXTSPLIT(B1," + "))),0))
适用于旧版Excel(不支持动态数组)
使用以下数组公式(输入后按Ctrl+Shift+Enter确认):
=INDEX(MID(SUBSTITUTE(A1," + ",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," + ",""))+1))*LEN(A1)-LEN(A1)+1,LEN(A1)),MATCH(TRUE,ISNUMBER(SEARCH(TRIM(MID(SUBSTITUTE(A1," + ",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," + ",""))+1))*LEN(A1)-LEN(A1)+1,LEN(A1))),B1)),0)
公式说明:
- 通过
SUBSTITUTE和MID拆分A1内容,生成单个国家的文本项 - 用
SEARCH检查每个项是否在B1中存在 MATCH定位第一个匹配项的位置,INDEX提取对应内容
如果要提取多个共同项,旧版Excel可借助VBA实现:
按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:
Function GetCommonItems(rng1 As Range, rng2 As Range) As String Dim arr1 As Variant, arr2 As Variant Dim i As Integer, j As Integer Dim result As String arr1 = Split(rng1.Value, " + ") arr2 = Split(rng2.Value, " + ") For i = LBound(arr1) To UBound(arr1) For j = LBound(arr2) To UBound(arr2) If Trim(arr1(i)) = Trim(arr2(j)) Then If result <> "" Then result = result & " + " result = result & Trim(arr1(i)) End If Next j Next i GetCommonItems = result End Function
返回Excel后,在D1单元格输入=GetCommonItems(A1,B1)即可提取所有共同项。
内容的提问来源于stack exchange,提问作者PedroPinto
相关产品推荐
相关产品推荐

