当两列单元格中的值与另一列中相同列中的值匹配时 sheet,然后复制整行
When values in cells in two columns match values in the same columns in another sheet, then copy the whole row
Option Explicit
Sub test()
Dim rg As Range
Dim name As String
Dim name2 As String
Dim wsh1 As Worksheet, wsh2 As Worksheet
Dim i As Long
Set wsh1 = ThisWorkbook.Worksheets("Database")
Set wsh2 = ThisWorkbook.Worksheets("Løbs-skabelon")
On Error GoTo 0
Application.ScreenUpdating = False
name = wsh2.Range("a" & Rows.Count).End(xlUp).Value
name2 = wsh2.Range("e" & Rows.Count).End(xlUp).Value
For i = 1 To wsh1.Range("a" & Rows.Count).End(xlUp).Row
If wsh1.Cells(i, 1) = name And wsh1.Cells(i, 5) = name2 Then
wsh1.Range(wsh1.Cells(i, 1), wsh1.Cells(i, 9)).Copy
wsh2.Range("a" & Rows.Count).End(xlUp).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
Next i
Application.ScreenUpdating = True
Worksheets("Løbs-skabelon").Range("a3").Select
Exit Sub
End Sub
我有两个 sheet。一个是包含从 A 列到 I 列的所有行中的所有信息的数据库。在另一个 sheet 中,我在列中具有相同的结构,但只有 A 列和 E 列中的信息,这将给出仅匹配一行的唯一组合在数据库中。
因此,只有当 A 列和 E 列中的单元格与数据库中的一行匹配时,我才希望将数据库中的整行复制到这一行中。我的 vba 到目前为止只复制了一个 row/last 行...
worksheet
database
更新工作表行
Option Explicit
Sub UpdateWorksheetRows()
Const sName As String = "Database"
Const sfRow As Long = 5
Const dName As String = "Lobs-skabelon"
Const dfRow As Long = 5
Dim sws As Worksheet: Set sws = ThisWorkbook.Worksheets(sName)
Dim slRow As Long: slRow = sws.Range("A" & sws.Rows.Count).End(xlUp).Row
Dim srCount As Long: srCount = slRow - sfRow + 1
Dim srg1 As Range: Set srg1 = sws.Range("A5").Resize(srCount)
Dim srg2 As Range: Set srg2 = sws.Range("E5").Resize(srCount)
Dim dws As Worksheet: Set dws = ThisWorkbook.Worksheets(dName)
Dim dlRow As Long: dlRow = dws.Range("A" & dws.Rows.Count).End(xlUp).Row
Dim drCount As Long: drCount = dlRow - dfRow + 1
Application.ScreenUpdating = False
Dim sIndex As Variant
Dim r As Long
For r = dfRow To dlRow
sIndex = dws.Evaluate("MATCH(1,('" & sName & "'!" & srg1.Address & "=" _
& dws.Range("A" & r).Address & ")*('" & sName & "'!" _
& srg2.Address & "=" & dws.Range("E" & r).Address & "),0)")
If IsNumeric(sIndex) Then
'Debug.Print r, sIndex
dws.Rows(r).Columns("A:I").Value _
= srg1.Cells(sIndex).EntireRow.Columns("A:I").Value
End If
Next r
Worksheets("Lobs-skabelon").Range("A3").Select
Application.ScreenUpdating = True
MsgBox "Worksheet rows updated.", vbInformation
End Sub
Option Explicit
Sub test()
Dim rg As Range
Dim name As String
Dim name2 As String
Dim wsh1 As Worksheet, wsh2 As Worksheet
Dim i As Long
Set wsh1 = ThisWorkbook.Worksheets("Database")
Set wsh2 = ThisWorkbook.Worksheets("Løbs-skabelon")
On Error GoTo 0
Application.ScreenUpdating = False
name = wsh2.Range("a" & Rows.Count).End(xlUp).Value
name2 = wsh2.Range("e" & Rows.Count).End(xlUp).Value
For i = 1 To wsh1.Range("a" & Rows.Count).End(xlUp).Row
If wsh1.Cells(i, 1) = name And wsh1.Cells(i, 5) = name2 Then
wsh1.Range(wsh1.Cells(i, 1), wsh1.Cells(i, 9)).Copy
wsh2.Range("a" & Rows.Count).End(xlUp).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
Next i
Application.ScreenUpdating = True
Worksheets("Løbs-skabelon").Range("a3").Select
Exit Sub
End Sub
我有两个 sheet。一个是包含从 A 列到 I 列的所有行中的所有信息的数据库。在另一个 sheet 中,我在列中具有相同的结构,但只有 A 列和 E 列中的信息,这将给出仅匹配一行的唯一组合在数据库中。
因此,只有当 A 列和 E 列中的单元格与数据库中的一行匹配时,我才希望将数据库中的整行复制到这一行中。我的 vba 到目前为止只复制了一个 row/last 行...
worksheet database
更新工作表行
Option Explicit
Sub UpdateWorksheetRows()
Const sName As String = "Database"
Const sfRow As Long = 5
Const dName As String = "Lobs-skabelon"
Const dfRow As Long = 5
Dim sws As Worksheet: Set sws = ThisWorkbook.Worksheets(sName)
Dim slRow As Long: slRow = sws.Range("A" & sws.Rows.Count).End(xlUp).Row
Dim srCount As Long: srCount = slRow - sfRow + 1
Dim srg1 As Range: Set srg1 = sws.Range("A5").Resize(srCount)
Dim srg2 As Range: Set srg2 = sws.Range("E5").Resize(srCount)
Dim dws As Worksheet: Set dws = ThisWorkbook.Worksheets(dName)
Dim dlRow As Long: dlRow = dws.Range("A" & dws.Rows.Count).End(xlUp).Row
Dim drCount As Long: drCount = dlRow - dfRow + 1
Application.ScreenUpdating = False
Dim sIndex As Variant
Dim r As Long
For r = dfRow To dlRow
sIndex = dws.Evaluate("MATCH(1,('" & sName & "'!" & srg1.Address & "=" _
& dws.Range("A" & r).Address & ")*('" & sName & "'!" _
& srg2.Address & "=" & dws.Range("E" & r).Address & "),0)")
If IsNumeric(sIndex) Then
'Debug.Print r, sIndex
dws.Rows(r).Columns("A:I").Value _
= srg1.Cells(sIndex).EntireRow.Columns("A:I").Value
End If
Next r
Worksheets("Lobs-skabelon").Range("A3").Select
Application.ScreenUpdating = True
MsgBox "Worksheet rows updated.", vbInformation
End Sub