VBA EXCELA ,B两列比对

EXCEL A ,B两列比对,但实际这个数据有1000多条.
两列的顺序不一样.想查出A有或B没有的.或A没有B有的.

用VLOOK UP,效果不是很好.在这求高手用VBA帮帮我吧.
注意:A列的数字都是10位数,B列的数字有的是10位,有的是12位.

A B
1557560000 4155000200
6290108000 6290108000-1
6290108001 1157000000
4709807000 4709807000-3
4709807001 7852621000
4709807002
4709807003

6290108000=6290108000-1
6290108001=6290108000-1
4709807003=4709807000-3
这些都相等.
因为是两个不同的表.找出A列有B无,或B列有A无的.

这个就要RUN 出A列1557560000(B列无),
B列7852621000(A列无)

http://zhidao.baidu.com/question/274558988.html

6290108000-1,代表两个数字,6290108000和6290108001
为了方便统计,就简写为6290108000-1
上面的程序RUN出来后A列的6290108001还是填充成了黄色的.

上午已经回答了呀

Sub Macro1()

    Dim k As Integer, bln1 As Boolean

    Dim i As Long, j As Long

    Columns("A:B").Interior.ColorIndex = xlNone

    For i = 2 To 65000

      If Cells(i, 1) = "" Then Exit For

      bln1 = False

      For j = 2 To 65000

        If Cells(j, 2) = "" Then

          '在B列没有找到i行A列的数据

          If Not bln1 Then

            With Cells(i, 1).Interior

              .ColorIndex = 6 '填充黄色

              .Pattern = xlSolid

            End With

          End If

          Exit For

        Else

          If InStr(1, Cells(j, 2), Cells(i, 1), vbTextCompare) > 0 Or _

            CStr(Cells(i, 1)) = Left(Cells(j, 2), Len(Cells(j, 2)) - 3) _

            & Right(Cells(j, 2), 1) Then

              bln1 = True     '在B列找到i行A列的数据

              With Cells(j, 2).Interior

                .ColorIndex = 3 '填充红色,

                .Pattern = xlSolid

              End With

          End If

        End If

      Next j

    Next i

    MsgBox "A列填充黄色代表在B列没有找到,B列没有填充颜色代表在A列没有找到!"

End Sub

追问

我看到了,谢谢你。我希望上面两个黄色的47098007001和4709807002不要填充成黄色。
因为4709807000 ,4709807001,4709807002,4709807003都等于479807000-3
因为相等,A列47098007001,2在B列找到了(就是4709807000-3),就不能再填充成黄色了。

追答

'B列有4709807000-3,如果A列没有4709807003,而只有4709807001,那么4709807000-3=4709807001么?
'以下程序按相等考虑
Sub Macro1()
Dim k As Integer, bln1 As Boolean
Dim i As Long, j As Long
Columns("A:B").Interior.ColorIndex = xlNone
For i = 2 To 65000
If Cells(i, 1) = "" Then Exit For
bln1 = False
For j = 2 To 65000
If Cells(j, 2) = "" Then
'在B列没有找到i行A列的数据
If Not bln1 Then
With Cells(i, 1).Interior
.ColorIndex = 6 '填充黄色
.Pattern = xlSolid
End With
End If
Exit For
Else
If Cells(j, 2) = Cells(i, 1) Then
bln1 = True '相等,在B列找到i行A列的数据
ElseIf Len(Cells(j, 2)) > Len(Cells(i, 1)) Then
If Left(Cells(i, 1), Len(Cells(i, 1)) - 1) = Left(Cells(j, 2), _
Len(Cells(i, 1)) - 1) Then bln1 = True
'4709807000-3=4709807001也算
End If
End If
If bln1 Then Exit For
Next j
If bln1 Then
'在B列找到i行A列的数据
With Cells(j, 2).Interior
.ColorIndex = 3 '填充红色,
.Pattern = xlSolid
End With
End If
Next i
MsgBox "A列填充黄色代表在B列没有找到,B列没有填充颜色代表在A列没有找到!"
End Sub

温馨提示:内容为网友见解,仅供参考
无其他回答

VBA EXCELA ,B两列比对
MsgBox "A列填充黄色代表在B列没有找到,B列没有填充颜色代表在A列没有找到!"End Sub

在Excel中如何对比A和B两列数据,若B数据在A里面则A中数据变红?
第一步,选中A列,然后再“条件格式”,“新建规则”,“使用公式确定要设置格式的单元格”,第二步,输入公式:=countif(B:B,A1)>0, 点击“”预览“”后面的“格式”,选择颜色就好!如果有疑问可继续讨论!

用VBA检查EXCEL中两列数据的重复数据
如果不重复就转到B列第二个,如果重复了就转到A列第二个,依次比对。大概十几句代码吧,添加一个按钮: (假定数据从第二行开始)Private Sub CommandButton1_Click()ROW_A = 2: ROW_B = 2 ENDROW_B = [A65536].End(xlUp).Row Do While Cells(ROW_A, 1) <> ""Do While Cells(ROW_B, ...

excel如何比较A、B两列数组有无相同数组,并列出不存在于B列数组的数...
右键点击工作表标签,选择“查看代码”,在右侧粘贴以下代码,回到工作表,运行宏aa 用VBA编的 Sub aa()r3 = 2For r1 = 2 To [A65536].End(xlUp).Rowk1 = 0For r2 = 2 To [i65536].End(xlUp).Rowk2 = 0For c = 1 To 7If Cells(r1, c) = Cells(r2, c + 8) Then k2 = ...

excel2007 两列数据对比(A列 B列) 若相等 另一列(C列)显示绿色
条件格式,条件用公式,输入 =a1=b1,填充颜色用绿色

VBA 在EXCEL中能不能 对两列名称进行对比 筛选 并将不同项列出来
可以,我介绍个笨方法,用IF 函数,先读第一列第一个数据为A1,然后读第二列数据,每个都同A1比较,相同的忽略,不同的将数值付给一个变量;然后再读第二个数据A2,重复读第二列数据,进行比较---直至两列数据全部结束,这里面用到IF..THEN..ELSE..ENDIF ,FOR...NEXT语句 ...

vba 如何比较excel两列不重复数据
可是看你贴的代码是数据不同了就把两个单元格的的字显示红色啊.先按你贴的代码加上 是否同行的判断 贴给你 你试试吧 Dim cc With NewDataBook.Sheets(1)For cc = 2 To .UsedRange.Rows.Count If .Cells(cc, 1) <> .Cells(cc, 2) And .Cells(cc, 1).Row = .Cells(cc, 2).Row ...

使用excel vba自动对比两列时间数字
相信使用条件格式,是最简单的。选定数列1,再依次选择菜单 格式 条件格式 弹出条件格式对话框 第一个下拉框选 公式,后面框中输入 =COUNTIF($B$2:$B$15,"=" & $A2)=0 格式再选择下自己喜欢的 下面图是个简单例子

excel中A\\B两列数据每行分别对比,有相同字段则标红,应该怎么操作。求解...
用VBA毋庸置疑,问题是:A1=风雨兼程,B1=(同风雨舟、雨同风舟)怎么办

在excel中,用VBA实现两列数据的比较
) Dim D As Object, i As Integer, index As Integer Set D = CreateObject("scripting.dictionary") With Sheet1 For i = 1 To Range("b65536").End(xlUp).Row D(.Cells(i, 2).Value) = "" Next For i = 1 To Range("a65536").End(xlUp).Row If ...

相似回答