+ -
当前位置:首页 → 问答吧 → 请前辈指点迷津-求两表间不同行

请前辈指点迷津-求两表间不同行

时间:2011-08-10

来源:互联网

Sub ks()
'On Error Resume Next
Dim gx_rhfis As Integer '新数据表的首行行号
Dim gx_rhlas As Integer '新数据表的末行行号
Dim gx_h As Integer

Dim y_rhfis As Integer  '原数据表的首行行号
Dim y_rhlas As Integer  '原数据表的末行行号

Dim gx_a As Variant '新数据表的数组
Dim y_b As Variant  '原数据表的数组

Dim i As Integer
Dim ii As Integer

Worksheets("两表间数据差00").Activate

gx_rhfis = Application.Match(7, Worksheets("两表间数据差00").Range("a:a"), False)
gx_rhlas = Application.Match(7, Worksheets("两表间数据差00").Range("a:a"), True)
Cells(2, 2) = gx_rhfis
Cells(2, 3) = gx_rhlas
gx_h = Cells(gx_rhlas, Columns.Count).End(xlToLeft).Column

Range(Cells(gx_rhfis, 1), Cells(gx_rhlas, gx_h)).Select

Selection.Sort Key1:=Range("D" & gx_rhfis), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
        :=xlPinYin, DataOption1:=xlSortNormal

ReDim gx_a(1 To gx_rhlas - gx_rhfis + 1, 1 To 6)

gx_a = Worksheets("两表间数据差00").Range(Cells(gx_rhfis, 1), Cells(gx_rhlas, 6)).Value


Cells(3, 4) = gx_a(9, 6)
Worksheets("两表间数据差2").Activate

y_rhfis = Application.Match(7, Worksheets("两表间数据差2").Range("a:a"), False)
y_rhlas = Application.Match(7, Worksheets("两表间数据差2").Range("a:a"), True)
Worksheets("两表间数据差2").Cells(2, 2) = y_rhfis
Worksheets("两表间数据差2").Cells(2, 3) = y_rhlas

ReDim y_b(1 To y_rhlas - y_rhfis + 1, 1 To 6)


y_b = Range(Cells(y_rhfis, 1), Cells(y_rhlas, 6)).Value         '有误,y_b没有取到值

'y_b = Worksheets("两表间数据差2").Range(Cells(y_rhfis, 1), Cells(y_rhlas, 6)).Value

Worksheets("两表间数据差2").Cells(2, 4) = y_b(1, 6)

For i = 1 To gx_rhlas - gx_rhfis + 1 Step 1
    For ii = 1 To y_rhlas - y_rhfis + 1 Step 1
        If gx_a(i, 1) & gx_a(i, 4) & gx_a(i, 6) <> y_b(ii, 1) & y_b(ii, 4) & y_b(ii, 6) Then
            Worksheets("两表间数据差00").Rows(gx_rhfis + i - 1).Interior.ColorIndex = 34
        End If
    Next ii
Next i
End Sub

结果应该为 表 "两表间数据差00" 中的11行,12行,15行,19行被选中,可是结果全部选中,请指教!

附件

选择两表间不同的行.zip(7.81 KB)

2011-8-10 20:31, 下载次数: 8

作者: binghe2360   发布时间: 2011-08-10

请见附件。
代码需放在模块1里面。

附件

选择两表间不同的行0812.rar(10.02 KB)

2011-8-12 08:10, 下载次数: 2

作者: 蓝桥玄霜   发布时间: 2011-08-12

楼主算法上有问题.
你用A列,D列,F列直接对照,如果有不同的就上色,那是不对的,你刚好反了.
应该是当数组1取值后,与数组2全部核对结束后,才能上色,你太心急了.

作者: shuyee   发布时间: 2011-08-12

感谢 "蓝桥玄霜"
感谢 "shuyee"
问题已解决!
晚辈学习了!

作者: binghe2360   发布时间: 2011-08-12