如何使用 VBA 在活动单元格旁边的空白单元格中打印文本?
How to print text in blank cells next to active cells using VBA?
我有两张纸; SheetA 和 SheetB,我想在 SheetA(B 列)中的所有参数 ID 与 SheetB(A 列)中的相应参数 ID 之间找到匹配项。如果匹配,则将相应的参数值从 sheetB(E 列)打印到 SheetA(C 列)。这部分工作正常,但不是将所有没有匹配(IsError)的情况留空,我想在 SheetA 中的空白单元格中添加一个“NA” - SheetA 中所有活动单元格旁边的 C 列 - B 列。
在 If IsError(rowNumber) Then 和 Else 之间要在我的代码中写入什么?
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
iRow = 1
eRow = 4000
For I = iRow To eRow
rowNb = Application.Match(Worksheets("SheetB").Range("A" & I), Worksheets("SheetA").Columns(2), 0)
If IsError(rowNb) Then
'How to write NA where IsError(rowNb) is True?
Else
Worksheets("SheetA").Range("C" & rowNb).Value = Worksheets("SheetB").Range("E" & I).Value
End If
Next I
Application.ScreenUpdating = True
End Sub
开始为下面的工作表设置变量
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
将 eRow = 4000
更改为 eRow=wsB.range("A" & rows.count).end(xlup).row
然后检查条件 If IsError(rowNb) =true Then
完整代码
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
iRow = 1 ' if u have headers iRow should be 2
eRow=wsB.range("A" & rows.count).end(xlup).row
For I = iRow To eRow
rowNb = Application.Match(wsB.Range("A" & I), wsA.Columns(2), 0)
If IsError(rowNb)= true Then
'How to write NA where IsError(rowNb) is True?
wsA.Range("C" & rowNb)="n/a" ' "NA" etc
Else
wsA.Range("C" & rowNb).Value = wsB.Range("E" & I).Value
End If
Next I
Application.ScreenUpdating = True
End Sub
*// 已编辑
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
dim wanted as string
dim findRng as range
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
iRow = 1 ' if u have headers iRow should be 2
eRow=wsB.range("A" & rows.count).end(xlup).row
For I = iRow To eRow
wanted =wsA.cells(i,2)
set findRng = wsB.range("A:A").find(wanted, lookat:=xlpart)
If findRng is nothing Then
'How to write NA where IsError(rowNb) is True?
wsA.cells(i,3)="n/a" ' "NA" etc
Else
wsA.cells(i,3) = wsB.cells(findRng.row, 5)
End If
Next I
Application.ScreenUpdating = True
End Sub
我有两张纸; SheetA 和 SheetB,我想在 SheetA(B 列)中的所有参数 ID 与 SheetB(A 列)中的相应参数 ID 之间找到匹配项。如果匹配,则将相应的参数值从 sheetB(E 列)打印到 SheetA(C 列)。这部分工作正常,但不是将所有没有匹配(IsError)的情况留空,我想在 SheetA 中的空白单元格中添加一个“NA” - SheetA 中所有活动单元格旁边的 C 列 - B 列。
在 If IsError(rowNumber) Then 和 Else 之间要在我的代码中写入什么?
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
iRow = 1
eRow = 4000
For I = iRow To eRow
rowNb = Application.Match(Worksheets("SheetB").Range("A" & I), Worksheets("SheetA").Columns(2), 0)
If IsError(rowNb) Then
'How to write NA where IsError(rowNb) is True?
Else
Worksheets("SheetA").Range("C" & rowNb).Value = Worksheets("SheetB").Range("E" & I).Value
End If
Next I
Application.ScreenUpdating = True
End Sub
开始为下面的工作表设置变量
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
将 eRow = 4000
更改为 eRow=wsB.range("A" & rows.count).end(xlup).row
然后检查条件 If IsError(rowNb) =true Then
完整代码
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
iRow = 1 ' if u have headers iRow should be 2
eRow=wsB.range("A" & rows.count).end(xlup).row
For I = iRow To eRow
rowNb = Application.Match(wsB.Range("A" & I), wsA.Columns(2), 0)
If IsError(rowNb)= true Then
'How to write NA where IsError(rowNb) is True?
wsA.Range("C" & rowNb)="n/a" ' "NA" etc
Else
wsA.Range("C" & rowNb).Value = wsB.Range("E" & I).Value
End If
Next I
Application.ScreenUpdating = True
End Sub
*// 已编辑
Private Sub CommandButtona1_Click()
Application.ScreenUpdating = False
dim wb as workbook
dim wsA as worksheet, wsB as worksheet
dim wanted as string
dim findRng as range
set wb=thisworkbook
set wsA = wb.worksheets("SheetA") ' or set wsA = wb.worksheets(sheet1.name)
set wsB = wb.worksheets("SheetB") ' or set wsB = wb.worksheets(sheet2.name)
iRow = 1 ' if u have headers iRow should be 2
eRow=wsB.range("A" & rows.count).end(xlup).row
For I = iRow To eRow
wanted =wsA.cells(i,2)
set findRng = wsB.range("A:A").find(wanted, lookat:=xlpart)
If findRng is nothing Then
'How to write NA where IsError(rowNb) is True?
wsA.cells(i,3)="n/a" ' "NA" etc
Else
wsA.cells(i,3) = wsB.cells(findRng.row, 5)
End If
Next I
Application.ScreenUpdating = True
End Sub