Excel想快速求两列的交集和补集。比如一列是ABC,一列是BC有什么简易方法吗?

您所在的位置:网站首页 补集的计算方法 Excel想快速求两列的交集和补集。比如一列是ABC,一列是BC有什么简易方法吗?

Excel想快速求两列的交集和补集。比如一列是ABC,一列是BC有什么简易方法吗?

2023-04-08 03:08| 来源: 网络整理| 查看: 265

如果是高版本的Excel,可以用textjoin函数做

示例里C1公式:

=TEXTJOIN(,,IF(ISNUMBER(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),B1)),(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),""))

示例里D1公式:

=TEXTJOIN(,,IF(ISERROR(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),B1)),(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),""))

用MID+ROW+INDIRECT+LEN函数组合,将A列数据拆分为单个字符的数组

用FIND查找数组元素在B列中的位置

用ISNUMBER/ISERROR判断FIND的查找结果

用TEXTJOIN+IF将能查找到的元素和不能查找到的元素分别连接

如果是低版本的Excel,可以用VBA做

示例里的代码:

Sub test() Dim str_len As Integer '储存A列字符串长度 Dim str_temp1 As String '储存C列输出字符串 Dim str_temp2 As String '储存D列输出字符串 [C1:D4].Clear '清空输出区域 For r = 1 To 4 '循环行 str_temp1 = "" '重置文本变量 str_temp2 = "" str_len = Len(Cells(r, "A").Value) For i = 1 To str_len '循环文本串字符 If InStr(1, Cells(r, "B").Value, Mid(Cells(r, "A").Value, i, 1)) > 0 Then '判断A列中的字符是否在B列出现 str_temp1 = str_temp1 & Mid(Cells(r, "A").Value, i, 1) Else str_temp2 = str_temp2 & Mid(Cells(r, "A").Value, i, 1) End If Next i Cells(r, "C").Value = str_temp1 Cells(r, "D").Value = str_temp2 Next r End Sub


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3