Excel 在多列中查找宏
Excel Macro Find in multiple columns
我有两部作品sheet"Accounts"和"Mock up"。在第一个 sheet 中,我有 A 到 L 列和 1409 行。在第二个 sheet 中,用户在单元格 B4 中输入一个值。我必须在第一个 sheet 中的 A1:A1409 范围内搜索此值。如果在 A100 中找到该值,则 A100 到 L100 将分配给第二个 sheet.
中的单元格 B8:B11、B16:B19 和 B22:B25
如果在A1:A1409范围内没有找到,那么我必须在E1:E1409和return范围内搜索A100到L100再到B8:B11,B16 :B19 和 B22:B25 在第二个 sheet.
正在尝试创建 excel 2010 vba 宏来完成此操作。感谢任何帮助。
第一 Sheet
第 2 sheet
此致,
拉加夫
这段代码发生了什么:
- 从"Mock Up!B4"
中获取搜索值
- 在 "Accounts"
上搜索 A 列
- 如果找到匹配项,将数据从 "Mock Up" 复制到 "Accounts"(行),与提供的图片匹配。
- 如果在 "A" 中找不到匹配项,请通过 "E"
重新搜索
- 如果在 "E" 上找到匹配项,将数据从 "Accounts"(行)复制到 "Mock Up"
代码:
Sub MockUpTranfer()
Dim lastRow As Long, lRow As Long
Dim source As String, target As String, tempVal As String
Dim match As Boolean
match = False
source = "Mock up"
target = "Accounts"
'Get last Row of target Sheet and temp value to search.
lastRow = Sheets(target).Range("A" & Rows.count).End(xlUp).row
tempVal = Sheets(source).Range("B4")
'Check the search value against Column A on "Accounts"
For lRow = 1 To lastRow
'Copy from MockUp to Accounts
If Sheets(target).Cells(lRow, "A") = tempVal Then
Sheets(target).Cells(lRow, "B") = Sheets(source).Range("B10")
Sheets(target).Cells(lRow, "C") = Sheets(source).Range("B8")
Sheets(target).Cells(lRow, "D") = Sheets(source).Range("B9")
Sheets(target).Cells(lRow, "E") = Sheets(source).Range("B19")
Sheets(target).Cells(lRow, "F") = Sheets(source).Range("B18")
Sheets(target).Cells(lRow, "G") = Sheets(source).Range("B17")
Sheets(target).Cells(lRow, "H") = Sheets(source).Range("B16")
Sheets(target).Cells(lRow, "I") = Sheets(source).Range("B22")
Sheets(target).Cells(lRow, "J") = Sheets(source).Range("B23")
Sheets(target).Cells(lRow, "K") = Sheets(source).Range("B24")
Sheets(target).Cells(lRow, "L") = Sheets(source).Range("B25")
match = True
End If
Next lRow
'No match found in "A", now searching "E"
If match = False Then
For lRow = 1 To lastRow
'Copy from Accounts to MockUp
If Sheets(target).Cells(lRow, "E") = tempVal Then
Sheets(source).Range("B10") = Sheets(target).Cells(lRow, "B")
Sheets(source).Range("B8") = Sheets(target).Cells(lRow, "C")
Sheets(source).Range("B9") = Sheets(target).Cells(lRow, "D")
Sheets(source).Range("B19") = Sheets(target).Cells(lRow, "E")
Sheets(source).Range("B18") = Sheets(target).Cells(lRow, "F")
Sheets(source).Range("B17") = Sheets(target).Cells(lRow, "G")
Sheets(source).Range("B16") = Sheets(target).Cells(lRow, "H")
Sheets(source).Range("B22") = Sheets(target).Cells(lRow, "I")
Sheets(source).Range("B23") = Sheets(target).Cells(lRow, "J")
Sheets(source).Range("B24") = Sheets(target).Cells(lRow, "K")
Sheets(source).Range("B25") = Sheets(target).Cells(lRow, "L")
End If
Next lRow
End If
End Sub
注意:如果存在多个匹配项,最后一个将覆盖第一个。这将遍历整个帐户 Sheet。
我有两部作品sheet"Accounts"和"Mock up"。在第一个 sheet 中,我有 A 到 L 列和 1409 行。在第二个 sheet 中,用户在单元格 B4 中输入一个值。我必须在第一个 sheet 中的 A1:A1409 范围内搜索此值。如果在 A100 中找到该值,则 A100 到 L100 将分配给第二个 sheet.
中的单元格 B8:B11、B16:B19 和 B22:B25如果在A1:A1409范围内没有找到,那么我必须在E1:E1409和return范围内搜索A100到L100再到B8:B11,B16 :B19 和 B22:B25 在第二个 sheet.
正在尝试创建 excel 2010 vba 宏来完成此操作。感谢任何帮助。
第一 Sheet
第 2 sheet
此致, 拉加夫
这段代码发生了什么:
- 从"Mock Up!B4" 中获取搜索值
- 在 "Accounts" 上搜索 A 列
- 如果找到匹配项,将数据从 "Mock Up" 复制到 "Accounts"(行),与提供的图片匹配。
- 如果在 "A" 中找不到匹配项,请通过 "E" 重新搜索
- 如果在 "E" 上找到匹配项,将数据从 "Accounts"(行)复制到 "Mock Up"
代码:
Sub MockUpTranfer()
Dim lastRow As Long, lRow As Long
Dim source As String, target As String, tempVal As String
Dim match As Boolean
match = False
source = "Mock up"
target = "Accounts"
'Get last Row of target Sheet and temp value to search.
lastRow = Sheets(target).Range("A" & Rows.count).End(xlUp).row
tempVal = Sheets(source).Range("B4")
'Check the search value against Column A on "Accounts"
For lRow = 1 To lastRow
'Copy from MockUp to Accounts
If Sheets(target).Cells(lRow, "A") = tempVal Then
Sheets(target).Cells(lRow, "B") = Sheets(source).Range("B10")
Sheets(target).Cells(lRow, "C") = Sheets(source).Range("B8")
Sheets(target).Cells(lRow, "D") = Sheets(source).Range("B9")
Sheets(target).Cells(lRow, "E") = Sheets(source).Range("B19")
Sheets(target).Cells(lRow, "F") = Sheets(source).Range("B18")
Sheets(target).Cells(lRow, "G") = Sheets(source).Range("B17")
Sheets(target).Cells(lRow, "H") = Sheets(source).Range("B16")
Sheets(target).Cells(lRow, "I") = Sheets(source).Range("B22")
Sheets(target).Cells(lRow, "J") = Sheets(source).Range("B23")
Sheets(target).Cells(lRow, "K") = Sheets(source).Range("B24")
Sheets(target).Cells(lRow, "L") = Sheets(source).Range("B25")
match = True
End If
Next lRow
'No match found in "A", now searching "E"
If match = False Then
For lRow = 1 To lastRow
'Copy from Accounts to MockUp
If Sheets(target).Cells(lRow, "E") = tempVal Then
Sheets(source).Range("B10") = Sheets(target).Cells(lRow, "B")
Sheets(source).Range("B8") = Sheets(target).Cells(lRow, "C")
Sheets(source).Range("B9") = Sheets(target).Cells(lRow, "D")
Sheets(source).Range("B19") = Sheets(target).Cells(lRow, "E")
Sheets(source).Range("B18") = Sheets(target).Cells(lRow, "F")
Sheets(source).Range("B17") = Sheets(target).Cells(lRow, "G")
Sheets(source).Range("B16") = Sheets(target).Cells(lRow, "H")
Sheets(source).Range("B22") = Sheets(target).Cells(lRow, "I")
Sheets(source).Range("B23") = Sheets(target).Cells(lRow, "J")
Sheets(source).Range("B24") = Sheets(target).Cells(lRow, "K")
Sheets(source).Range("B25") = Sheets(target).Cells(lRow, "L")
End If
Next lRow
End If
End Sub
注意:如果存在多个匹配项,最后一个将覆盖第一个。这将遍历整个帐户 Sheet。