下面是我制作的VBA宏。它将在名称列上进行过滤,并从另一个工作表中查找空单元格。
应该找到电话号码的名称并将其粘贴在此处。
我只希望用于空单元格,但是此代码适用于每一行。
如何仅查找可见单元格的值?
Sub namenumbers()
On Error Resume Next
rw = ActiveWorkbook.Name
MP = InputBox("Please enter Marketplace", "AU/AE/BR/CA/CN/DE/ES/FR/IT/UK/US/IN/JP/MX/SG/TR")
Dim wb As Worksheet, rng As Range
lrr = ActiveSheet.UsedRange.Rows.Count
Set r = Range("A1").CurrentRegion
r.AutoFilter
BN = r.Find(what:="Numbers", after:=r(1)).Column
Kolumn = r.Find(what:="names", after:=r(1)).Column
r.AutoFilter Field:=Kolumn, Criteria1:="="
Workbooks.Open "C:\Macros\names with numbers.xlsx"
nw = ActiveWorkbook.Name
Workbooks(nw).Activate
Workbooks(nw).Sheets(MP).Activate
Workbooks(rw).Activate
For I = 3 To lrr
Cells(I, Kolumn) = Application.WorksheetFunction.VLookup(Cells(I, BN), Workbooks(nw).Sheets(MP).Range("B2:D1000000"), 3, 0)
Next
End Sub
您可以尝试这样的事情:
Sub namenumbers()
Dim wb As Workbook, MP, lrr As Long, wsData As Workbook, i As Long
Dim ws As Worksheet, rng As Range, r As Range, BN As Long, Kolumn As Long
On Error Resume Next
Set wb = ActiveWorkbook
Set ws = ActiveSheet
MP = InputBox("Please enter Marketplace", _
"AU/AE/BR/CA/CN/DE/ES/FR/IT/UK/US/IN/JP/MX/SG/TR")
Set r = ws.Range("A1").CurrentRegion
lrr = r.Rows.Count
BN = r.Rows(1).Find(what:="Numbers", lookat:=xlWhole).Column
Kolumn = r.Rows(1).Find(what:="names", lookat:=xlWhole).Column
Set wsData = Workbooks.Open("C:\Macros\names with numbers.xlsx").Worksheets(MP)
For i = 3 To lrr
With ws.Cells(i, Kolumn)
If Len(.Value) = 0 Then
.Value = Application.VLookup(ws.Cells(i, BN).Value, _
wsData.Range("B2:D1000000"), 3, False)
End If
End With
Next
End Sub