如何使用 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