excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA 判断一组数字是否都存在于另一组数字中

本文于2023年9月1日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

内容提要

  • 查找相同数字

大家好,我是冷水泡茶,前几天在论坛上看到一个网友的求助贴:

[求助]请教老师,用VBA或其他公式,查找全部相同数,谢谢!

他的数据是这样的:

他的要求是,查找B列数字是否全部存在于A列:

当时觉得没有什么难度,加之要做其他东西,就放在一边了。今天翻文件的时候又看到它,就打开处理了一下,我们一起来看一下过程:

基本思路

1、要检查B列的数字中每一个数字是否包含在A列中,我们可以把B列每个单元格的值进行分列,用Split函数把数字存到一个数组里。然后通过循环,逐一检查B列的数字是否存在于A列,这里有两种方法,一种是把A列也分列成数组,再通过循环查找;另一种是直接用InStr函数,查找B列每一个数字在A列字符串中的位置,如果位置大于0,则表示存在相同数字,否则表示不存在。

2、在循环过程中,如果没找到相同数字,那么就把这个数字存到字符串str中。

3、一行循环结束,把结果存到C列相应单元格里。

VBA代码

模块1,Check过程,检查相同数字。

Sub Check()    Dim ws As Worksheet    Dim data As Range    Dim arr() As String    Dim str As String    Set ws = ThisWorkbook.Sheets("Sheet1")    Set data = ws.Range("A1").Resize(ws.UsedRange.Rows.Count, 3)    For i = 1 To data.Rows.Count        str = ""        If data.Cells(i, 1) <> "" Then            arr = Split(data.Cells(i, 2), ",")            data.Cells(i, 3) = ""            For j = 0 To UBound(arr)                If InStr("," & data.Cells(i, 1) & ",", "," & arr(j) & ",") = 0 Then                    str = str & arr(j) & ","                End If            Next            If Len(str) > 0 Then                str = Left(str, Len(str) - 1)                data.Cells(i, 3) = str            Else                data.Cells(i, 3) = "有"            End If        End If    Next    MsgBox "Done"End Sub

代码解析:

(1)定义一些变量,工作表对象ws,Range对象,数组等。

(2)line7,设置数据区域为data这个Range对象,这里也可以是装入数组,我们今天就换一种方式,直接操作单元格区域。

(3)line8,开始循环区域data。

(4)line9,初始化str为空。

(5)line10,If语句判断第一列是否为空,避免空数据使程序出错。

(6)line11,把data区域第i行第2列数据分列后存到数组arr

(7)line12,先把第3列结果单元格清空,防止有前期数据。

(8)line13~17,循环数组arr,判断其元素是否存在于第一列单元格中。这里要注意一下,要给每个数字前后加上限定符,比如/1/,/11/这样的,如果不加限定符,数字1既存于1中,也存在是11中,结果就不对啦。如果没找到,就把数字连接到str字符串中。找到的话,就按兵不动。

(9)line18~23,判断一下str是否为空,这里我们用Len函数检查其长度。如果不为空,说明有遗漏数字,我们把str的值写入第三列单元格;如果为空,就把第三列单元格写为“有”。

(10)line26,Msgbox提示信息,加这一句主要原因是程序运行时间太短,都感觉不到,也不知它有没有运行,加上这句,可以知道程序是否运行了。

~~~~~~End~~~~~~

喜欢就点个赞、点在看、留个言、分享一下呗!感谢!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接