【发布时间】:2020-12-10 23:21:05
【问题描述】:
我有 3 个工作表(user1、user2、result)。每张表有三列(A:System_ID,B:评论,C:上次修改时间)。
代码是这样做的:
- 获取 c 列中 user1 和 user2 之间的最大上次修改时间。
- 结果是在 b 列中获得该评论(与 c 列中找到的最大时间相邻)
- 将结果(注释)放在结果表的 b 列中
仅以最后修改时间为准,并粘贴到结果 WS 中。
无论如何,我的问题是,如果 A 列中的两个索引具有相同的排序/顺序,我只能进行索引匹配。
我需要匹配 A 列中的所有记录,即使它们具有不同的 row.number 或行索引。
无论A列的顺序如何,如何进行索引匹配
Sub Get_LastModified_Here()
Application.EnableEvents = False
Dim Location1 As Workbook
Set Location1 = GetWorkbook("C:\Users\HP\Desktop\User_1.xlsb")
Dim Location2 As Workbook
Set Location2 = GetWorkbook("C:\Users\HP\Desktop\User_2.xlsb")
Dim SourceCell As Range, SourceRange As Range, CurrentRange As Range
Dim rngTarget As Range
Dim strAdr As String
Dim vSource As Variant, vTarget As Variant, vCurrent As Variant
Dim i As Long
Set SourceRange = Workbooks("User_2.xlsb").Sheets("Data").Range("A2:" & "A1607")
With SourceRange
Set SourceRange = .Resize(.Rows.Count, .Columns.Count + 3)
End With
strAdr = SourceRange.Address
Set rngTarget = Workbooks("User_1.xlsb").Worksheets("Data").Range(strAdr)
Set CurrentRange = ThisWorkbook.Worksheets("Data").Range(strAdr).Offset(0, 1)
vSource = SourceRange
vTarget = rngTarget
vCurrent = CurrentRange
For i = 1 To UBound(vSource, 1)
'Match Column A
If vSource(i, 1) = vTarget(i, 1) Then
'Check max time in Column C (user1 vs user2)
If vSource(i, 3) > vTarget(i, 3) Then
'Get max comment from ((user max)) in column B (result ws)
vCurrent(i, 1) = vSource(i, 2)
ElseIf vSource(i, 3) < vTarget(i, 3) Then
vCurrent(i, 1) = vTarget(i, 2)
ElseIf vSource(i, 3) = vTarget(i, 3) Then
vCurrent(i, 1) = vSource(i, 2)
End If
End If
Next i
SourceRange = vSource
rngTarget = vTarget
CurrentRange = vCurrent
Application.EnableEvents = True
End Sub
这里是问题的详细解释(我对大写字母表示歉意):
用户 1 表
我在## 第 1 行 ##
中有 SYSTEM_ID| System_ID | Comment | LastModTime |
|---|---|---|
| ID_1 | User1 notes | 09/12/2020 10:00:01 PM |
用户 2 表
我在## 第 2 行 ##
中有 SAME SYSTEM_ID| System_ID | Comment | LastModTime |
|---|---|---|
| ID_1 | User2 notes | 09/12/2020 10:00:02 PM |
这是我在结果表中得到的
我有 SAME SYSTEM_ID 但在 ## 第 3 行 ##
| System_ID | Comment | LastModTime |
|---|---|---|
| ID_1 |
这就是我想要的结果表
我有 SAME SYSTEM_ID 但在 ## 第 3 行 ##
| System_ID | Comment | LastModTime |
|---|---|---|
| ID_1 | User2 notes | 09/12/2020 10:00:02 PM |
我们的代码可以做什么
根据上次修改时间获取评论,仅当“ID_1”在同一行 # 时。我已经尝试过(没用)
我们的代码不能做什么
根据上次修改时间获取评论,即使“ID_1”位于 A DIFFERENT ROW # 上。这是我需要帮助的地方吗?
【问题讨论】: