【发布时间】:2020-05-17 12:18:59
【问题描述】:
我在同一个工作簿中有两个工作表。一个是主数据(“玩家目录”),另一个是每周摘要页面(“玩家跟踪”)。
玩家追踪页面将包含更新的信息以及应该添加到玩家目录页面的新玩家。
我想过创建 3 个数组。一个用于播放器跟踪,另一个用于播放器目录,最后一个用于新信息,但我在任何工作和搜索互联网方面都没有成功。
比较这两张表并将缺失的数据添加到玩家目录的最佳方法是什么。两张表都按玩家 ID 列出了玩家,这是一个很好的起点。
使用Player Tracking Page比较和更新的信息如下:
- 如果在玩家目录中找不到玩家 ID 号,则将此玩家添加到目录中。
- 如果号码匹配,请比较 C 列和 D 列,并分别更新玩家目录表 C 和 D 列中的玩家姓名和昵称,并更新任何更改。
- 如果数字匹配,请将玩家跟踪工作表中 G 列中的费用添加到 K 列中的费用数字中,并在列中返回该新数字的结果。
Sub DirectoryAdds()
Dim arUpdates() As Variant
Dim arOriginal() As Variant
Dim arAdds() As Variant
Dim wsPD As Worksheet
Dim i As Long
Dim j As Long
Dim k As Long
Set wsPD = Worksheets("Player Directory")
ReDim Preserve arUpdates(4 To ActiveSheet.Range("B" & Rows.Count).End(xlUp).row)
ReDim Preserve arOriginal(4 To wsPD.Range("B" & Rows.Count).End(xlUp).row)
ReDim Preserve arAdds(4 To UBound(arUpdates, 1))
'arUpdates = ActiveSheet.Range("B4", Range("B" & Rows.Count).End(xlUp)).Value
'arOriginal = wsPD.Range("B4", Range("B" & Rows.Count).End(xlUp)).Value
For i = LBound(arUpdates) To UBound(arUpdates)
arUpdates(i) = ActiveSheet.Cells(i, 2)
Next i
For j = LBound(arOriginal) To UBound(arOriginal)
arOriginal(j) = wsPD.Cells(j, 2)
Next j
For k = LBound(arUpdates) To UBound(arUpdates)
If IsError(Application.Match(arUpdates(i), arOriginal(j), 0)) Then
k = k + 1
arAdds(k, 2) = arUpdates(i, 2)
End If
Next k
'Range("K2").Resize(j) = Application.Transpose(v3)
End Sub
【问题讨论】:
标签: arrays excel vba compare match