Excel想快速求两列的交集和补集。比如一列是ABC,一列是BC有什么简易方法吗? |
您所在的位置:网站首页 › 补集的计算方法 › Excel想快速求两列的交集和补集。比如一列是ABC,一列是BC有什么简易方法吗? |
如果是高版本的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 |