VB怎么实现两个EXCEL之间的数据对比

VB怎么实现两个EXCEL之间的数据对比,第1张

Sub 数据对比()

Dim i As Integer

Dim j As Integer

For i = 2 To 95'表1身份z字段是2行到95行

For j = 3 To 258'表2身份z字段是3行到258行

If Sheets("表1").Cells(i, 17) = Sheets("表2").Cells(j, 8) Then '表1身份z是在17列早没弊,表2身份察肢证在第8列

Sheets("表1").Cells(i, 18) = "已存在" '存在时进行标记,并陆族在18列写已存在

End If

Next j

Next i

End Sub

添加一个command控件就可以了

Option Explicit

Private Sub Command1_Click()

Dim A(3) As String, B(2) As String

Dim strTemp() As String

Dim lngCount As Long

Dim lngTemp(9) As Long

Dim i As Long, j As Long, k As Long

A(1) = "01 03 06 08 12 15 22 30 33"

A(2) = "02 05 08 15 18 22 25 29 33"

A(3) = "03 12 22 29 30 31 32 33 35"

B(1) = "02 05 08 22"

B(2) = "毁消06 22 28 33"

For i = 1 To 3

strTemp = Split(A(i))

For k = 1 To 2

lngCount = 0

For j = LBound(strTemp) To UBound(strTemp)

If InStr(B(k), strTemp(j)) >0 Then

lngCount = lngCount + 1

lngTemp(lngCount) = strTemp(j)

End If

Next

Print "字符串" &Format(i, "000") &Chr(64 + k) &"与组: 相同数字有" &lngCount &"个汪余和,最小值为"困盯 &lngTemp(1) &",最大值为" &lngTemp(lngCount)

Next

Next

End Sub

专门帮你做了如下 程序,饥答举并经调试通过。加分啊!

在程序中增加命令按钮一个,烂碧MSHFlexGrid四个,程序如下,

Option Explicit

Dim a(1 To 2000) As Single

Dim b(1 To 2000) As Single

Private Sub Command1_Click()

Dim i, j As Integer

With MSHFlexGrid1

.Rows = 1 + UBound(a)

.Cols = 2

For i = 1 To UBound(a)

.TextMatrix(i, 1) = a(i)

Next

.Col = 1

.Sort = 1 '排序

End With

Call RemoveduplicateRows(MSHFlexGrid1) '删除重复的行

With MSHFlexGrid2

.Rows = 1 + UBound(b)

.Cols = 2

For i = 1 To UBound(b)

.TextMatrix(i, 1) = b(i)

Next

.Col = 1

.Sort = 1 '排序

End With

Call RemoveduplicateRows(MSHFlexGrid2) '删除重复的行

With MSHFlexGrid3

.Rows = MSHFlexGrid2.Rows + MSHFlexGrid1.Rows - 1

.Cols = 2

For i = 1 To MSHFlexGrid1.Rows - 1 ''将前两表的数据合并到第三表

.TextMatrix(i, 1) = MSHFlexGrid1.TextMatrix(i, 1)

Next

For i = 1 To MSHFlexGrid2.Rows - 1

.TextMatrix(MSHFlexGrid1.Rows - 1 + i, 1) = MSHFlexGrid2.TextMatrix(i, 1)

Next

.Col = 1

.Sort = 1 '排举猛序

j = 1

MSHFlexGrid4.Rows = 2

MSHFlexGrid4.Cols = 2

For i = 2 To .Rows - 1

If .TextMatrix(i, 1) = .TextMatrix(i - 1, 1) Then

MSHFlexGrid4.TextMatrix(MSHFlexGrid4.Rows - 1, 1) = .TextMatrix(i, 1) '前第三表中重复的数据列在第四表,此第四表中第1列的数据就是你要的答案

MSHFlexGrid4.Rows = MSHFlexGrid4.Rows + 1

End If

Next

MSHFlexGrid4.Rows = MSHFlexGrid4.Rows - 1

End With

End Sub

Private Sub RemoveduplicateRows(MSH As MSHFlexGrid) '删除重复的行

Dim i, j As Integer

With MSH

i = 1

Do

j = i

If .Rows >2 Then

Do While j <.Rows - 1

If (.TextMatrix(i, 1) = .TextMatrix(j + 1, 1)) Or VBA.Len(.TextMatrix(j + 1, 1)) = 0 Then '删除重复的行

.RemoveItem (j + 1)

.Refresh

j = j - 1

End If

j = j + 1

Loop

End If

i = i + 1

Loop Until i >= .Rows

End With

End Sub

Private Sub Form_Load()

Dim i As Integer

Randomize

For i = 1 To 2000

a(i) = Val(VBA.Format((Rnd(i) * 100), "#.##")) 'a(1 To 2000), b(1 To 2000)是你已经有的数据,这里由随机数代替

b(i) = Val(VBA.Format((Rnd(i) * 100), "#.##"))

Next

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12342425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存