Excel 在两个工作簿中找到匹配值,然后在满足条件时做标记
我不确定这是否可行,但这就是我想做的: 我有两本不同的作业本 工作簿A中的每一行在C列中都包含一个值。 1.在工作簿B的C列中查找值(不仅仅是行号), 2.移到同一行中的G列。 如果G列中的值为零,请返回工作簿a并在H列中输入0。 如果该值不是零,请在工作簿a的H列中输入1。 3.继续,直到没有更多有效行可供选择 在工作簿A(变量编号)中搜索 我有大约200个工作表要匹配(相同的工作表名称,不同的工作簿),所以我想确保VBA知道如何转到正确的工作表。我很乐意自己手动更改每个工作表的代码。这是通过进入工作簿A中的######和工作簿B中的###来完成的吗 我基本上对VBA一无所知,所以我甚至不知道从哪里开始。我想应该是一堆If语句Excel 在两个工作簿中找到匹配值,然后在满足条件时做标记,excel,vba,Excel,Vba,我不确定这是否可行,但这就是我想做的: 我有两本不同的作业本 工作簿A中的每一行在C列中都包含一个值。 1.在工作簿B的C列中查找值(不仅仅是行号), 2.移到同一行中的G列。 如果G列中的值为零,请返回工作簿a并在H列中输入0。 如果该值不是零,请在工作簿a的H列中输入1。 3.继续,直到没有更多有效行可供选择 在工作簿A(变量编号)中搜索 我有大约200个工作表要匹配(相同的工作表名称,不同的工作簿),所以我想确保VBA知道如何转到正确的工作表。我很乐意自己手动更改每个工作表的代码。这是通过
谢谢大家! 您需要的几种武器:
Range.Find(key)
返回与键匹配的Range对象Range.Offset(r,c)
返回向下为r
行,向右为c
列的范围范围(“C”和Rows.Count).End(xlUp)
获取数据的最后一行Dim ws As Worksheets
For Each ws In ThisWorkbook
'do something
Next ws
ws.name
获取工作表名称,并通过Workbook.Worksheets(name)
Private Sub test()
Application.ScreenUpdating = False
'Assuming the code is in workbook A, and we open workbook B here
Dim wbA As Workbook, wbB As Workbook
Set wbA = ThisWorkbook
'May get a failure when the path is incorrect
Set wbB = Workbooks.Open("FULL PATH OF WORKBOOK B")
Dim lastRow As Long, i As Long
Dim ws As Worksheet
'Loop throuth wbA.Worksheets so we can get the job done in each worksheet
For Each ws In wbA.Worksheets
'Getting the last row in column C
lastRow = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
'ws.Name to get the name, and find it in workbook B
'May get a failure if there is no worksheet named after that
With wbB.Worksheets(ws.Name)
'Loop from C2 to the last data in C, assuming C1 is a title
For i = 2 To lastRow
'Range.Find returns a range with the key, and offset from C to G, which is 4 columns right.
'May get a failure due to mismatching
If .Range("C:C").Find(ws.Range("C" & i).Value).Offset(0, 4) = 0 Then
ws.Range("H" & i).Value = 0
Else
ws.Range("H" & i).Value = 1
End If
Next i
End With
Next ws
Application.ScreenUpdating = True
End Sub
谢谢你,newacc2240!到目前为止,它似乎工作正常,我所要做的就是将I改为14,并将列偏移5。