Excel 检查列并复制是否相同
我有G2:G10范围内的数字,我必须检查这些数字是否在第二个文件B行的一个单元格中。现在,当G2(文件1)和B2(文件2)中的数字相同时,我只有一个true if参数。但我如何才能做到这一点,以便当G2(文件1)和B4(文件2)相同时,if也可以工作Excel 检查列并复制是否相同,excel,vba,Excel,Vba,我有G2:G10范围内的数字,我必须检查这些数字是否在第二个文件B行的一个单元格中。现在,当G2(文件1)和B2(文件2)中的数字相同时,我只有一个true if参数。但我如何才能做到这一点,以便当G2(文件1)和B4(文件2)相同时,if也可以工作 Dim cell As Range Dim wb1 As Workbook, ws1 As Worksheet Dim wb2 As Workbook, ws2 As Worksheet Set wb1 = App
Dim cell As Range
Dim wb1 As Workbook, ws1 As Worksheet
Dim wb2 As Workbook, ws2 As Worksheet
Set wb1 = Application.Workbooks.Open("T:\folder\Map2.xlsm")
Set ws1 = wb1.Sheets("Tabelle1")
Set wb2 = Application.Workbooks.Open("T:\folder\file.xlsx")
Set ws2 = wb2.Sheets("sheet1")
For Each cell In wb1.Sheets(1).Range("G2:G10")
If cell.Value = ws2.Cells(cell.Row, "B").Value Then
ws2.Cells(cell.Row, "D").Resize(1, 3).Select
End If
Next cell
End Sub
这是一本字典,我想你在找它。虽然我可能会把你的床单倒过来。我使用一个工作簿进行了测试,并在工作簿和工作表中添加了值。我也不确定当找到一个值时您想做什么,所以我将其留空
Sub compare()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim cell As Range
Dim lastrow As Long
Dim dict As Object
Set wb1 = Application.Workbooks.Open("T:\folder\Map2.xlsm")
Set ws1 = wb1.Sheets("Tabelle1")
Set wb2 = Application.Workbooks.Open("T:\folder\file.xlsx")
Set ws2 = wb2.Sheets("sheet1")
Set dict = CreateObject("Scripting.Dictionary") 'This is late bound you can change to early binding if you want
With ws2
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row
For Each cell In .Range("B1:B" & lastrow)
If Not dict.exists(cell.Value) Then 'Avoid errors
dict.Add cell.Value,cell 'Add key value, item will be the range
End If
Next cell
End With
With ws1
For Each cell In Range("G2:G10")
If dict.exists(cell.Value) Then 'Duplicate found when true
'Here we take the matched range offset and place it in the new offset range
Range(cell.Offset(0, 2), cell.Offset(0, 4)).Value = Range(dict(cell.Value).Offset(0, 2), dict(cell.Value).Offset(0, 4)).Value
End If
Next cell
End With
End Sub
这是一本字典,我想你在找它。虽然我可能会把你的床单倒过来。我使用一个工作簿进行了测试,并在工作簿和工作表中添加了值。我也不确定当找到一个值时您想做什么,所以我将其留空
Sub compare()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim cell As Range
Dim lastrow As Long
Dim dict As Object
Set wb1 = Application.Workbooks.Open("T:\folder\Map2.xlsm")
Set ws1 = wb1.Sheets("Tabelle1")
Set wb2 = Application.Workbooks.Open("T:\folder\file.xlsx")
Set ws2 = wb2.Sheets("sheet1")
Set dict = CreateObject("Scripting.Dictionary") 'This is late bound you can change to early binding if you want
With ws2
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row
For Each cell In .Range("B1:B" & lastrow)
If Not dict.exists(cell.Value) Then 'Avoid errors
dict.Add cell.Value,cell 'Add key value, item will be the range
End If
Next cell
End With
With ws1
For Each cell In Range("G2:G10")
If dict.exists(cell.Value) Then 'Duplicate found when true
'Here we take the matched range offset and place it in the new offset range
Range(cell.Offset(0, 2), cell.Offset(0, 4)).Value = Range(dict(cell.Value).Offset(0, 2), dict(cell.Value).Offset(0, 4)).Value
End If
Next cell
End With
End Sub
试试这个
Sub test()
Dim c As Range, cx As Range, str$
Dim wb1 As Workbook, ws1 As Worksheet
Dim wb2 As Workbook, ws2 As Worksheet
Set wb1 = Application.Workbooks.Open("T:\folder\Map2.xlsm")
Set ws1 = wb1.Sheets("Tabelle1")
Set wb2 = Application.Workbooks.Open("T:\folder\file.xlsx")
Set ws2 = wb2.Sheets("sheet1")
For Each c In ws1.Range(ws1.Cells(1, 7), ws1.Cells(ws1.Rows.Count, 7).End(xlUp))
For Each cx In ws2.Range(ws2.Cells(1, 2), ws2.Cells(ws2.Rows.Count, 2).End(xlUp))
If c = cx Then
cx.Offset(, 2).Resize(1, 3).Select
str = str & ", " & cx.Address
'Msgbox cx.Address
End If
Next cx
Next c
Msgbox "The following cells meet the conditions: " & Replace(str, ",", "", 1, 1)
End Sub
试试这个
Sub test()
Dim c As Range, cx As Range, str$
Dim wb1 As Workbook, ws1 As Worksheet
Dim wb2 As Workbook, ws2 As Worksheet
Set wb1 = Application.Workbooks.Open("T:\folder\Map2.xlsm")
Set ws1 = wb1.Sheets("Tabelle1")
Set wb2 = Application.Workbooks.Open("T:\folder\file.xlsx")
Set ws2 = wb2.Sheets("sheet1")
For Each c In ws1.Range(ws1.Cells(1, 7), ws1.Cells(ws1.Rows.Count, 7).End(xlUp))
For Each cx In ws2.Range(ws2.Cells(1, 2), ws2.Cells(ws2.Rows.Count, 2).End(xlUp))
If c = cx Then
cx.Offset(, 2).Resize(1, 3).Select
str = str & ", " & cx.Address
'Msgbox cx.Address
End If
Next cx
Next c
Msgbox "The following cells meet the conditions: " & Replace(str, ",", "", 1, 1)
End Sub
嗨,瑞克,我很困惑,你要检查G4是等于B2还是B2对G2。你的要求有点混乱。如果您想比较B2和G4,当您写入
cell.row
时,只需添加+2
?Hi@标记。对不起,我的英语不是最好的。我有G2:G10在这是数字。我必须将这些数字与文件2中的整个B行进行比较。现在,if语句仅在G2和B2是相似数字时才起作用。但是我必须控制整个B行,所以当B15中有类似的数字时,我必须复制这个。你知道我的意思吗?不知道。您需要将一个电子表格中的1个单元格(一次)的值与整列(不是行?)中的多个单元格进行比较。我需要澄清,您想将B2
与G2:G10
之和进行比较吗?我有G2:G10。这些单元格中有数字。例如,单元格G2中的数字是20。我必须检查数字20是否也在整行B的一个单元格中。例如,20在B11中,那么我必须复制它旁边的单元格。当20在B256中时,我必须复制它旁边的单元格。现在它只在20处于G2和B2时工作。但是当20在B3中时,它不会起作用Hi Rick,我很困惑,你想检查G4是否等于B2或B2到G2。你的要求有点混乱。如果您想比较B2和G4,当您写入cell.row
时,只需添加+2
?Hi@标记。对不起,我的英语不是最好的。我有G2:G10在这是数字。我必须将这些数字与文件2中的整个B行进行比较。现在,if语句仅在G2和B2是相似数字时才起作用。但是我必须控制整个B行,所以当B15中有类似的数字时,我必须复制这个。你知道我的意思吗?不知道。您需要将一个电子表格中的1个单元格(一次)的值与整列(不是行?)中的多个单元格进行比较。我需要澄清,您想将B2
与G2:G10
之和进行比较吗?我有G2:G10。这些单元格中有数字。例如,单元格G2中的数字是20。我必须检查数字20是否也在整行B的一个单元格中。例如,20在B11中,那么我必须复制它旁边的单元格。当20在B256中时,我必须复制它旁边的单元格。现在它只在20处于G2和B2时工作。但是,当20在B3中时,它将不起作用。谢谢,我在ws1.Range(单元格(1,7),单元格(Rows.Count,7)。End(xlUp))中的每个c的第行得到一个运行时错误1004,因此,您的范围正在查看一张工作表,而该范围包含的值正在从另一张工作表获取。@Rick请立即重试then@Rick如果我的回答能解决你的问题,请随意接受problem@AsUsual我有个问题,当我执行这个时,makro只会做一个单元格,但不会下一个单元格。我做错什么了吗?谢谢,我在ws1.Range(单元格(1,7),单元格(Rows.Count,7.End)(xlUp))的行中得到一个运行时错误1004。
也许你现在有什么?单元格和行。Count
没有引用它正在使用活动工作表,因此,您的范围正在查看一张工作表,而该范围包含的值正在从另一张工作表获取。@Rick请立即重试then@Rick如果我的回答能解决你的问题,请随意接受problem@AsUsual我有个问题,当我执行这个时,makro只会做一个单元格,但不会下一个单元格。我做错什么了吗?感谢您的帮助,当G2:G10中的单元格与B行中的一个单元格相似时,我必须复制B行中相似单元格旁边的单元格。因此,如果G2
与B4
匹配,您想抓取B3
和B5
?还是A4
和C4
?在哪里粘贴?当G2(文件1)与B4(文件2)匹配时,我必须将B4旁边的D、E和F从文件2复制到文件1中G2Okay旁边的单元格i、J和K。在编辑中添加的字典项现在是cell
,我们使用它来获取偏移值,并将其放置在匹配单元格的偏移量中。非常感谢,当我执行makro时,它不会做任何事情。感谢您的帮助,当G2:G10中的单元格与B行中的一个单元格相似时,我必须复制B行中相似单元格旁边的单元格。因此,如果G2
与B4
匹配,您想抓取B3
和B5
?还是A4
和C4
?在哪里粘贴?当G2(文件1)与B4(文件2)匹配时,我必须将B4旁边的D、E和F从文件2复制到文件1中G2Okay旁边的单元格i、J和K。在编辑中添加的字典项现在是cell
,我们使用它来获取偏移值,并将其放置在匹配单元格的偏移量中。非常感谢,当我执行makro时,它什么也做不了。。