如何使用 VBA 在活动单元格旁边的空白单元格中打印文本?

问题描述

我有两张床单; SheetA 和 SheetB,我想在 SheetA(B 列)中的所有参数 ID 和 SheetB(A 列)中的相应参数 ID 之间找到匹配项。如果匹配,则将 sheetB(E 列)中的相应参数值打印到 SheetA(C 列)中。这部分工作正常,但不是将所有没有匹配项(IsError)的情况留空,我希望在 SheetA - 列 C 中的空白单元格中添加一个“NA”,在 SheetA - 列 B 中的所有活动单元格旁边。

在 If IsError(rowNumber) Then 和 Else 之间的代码中应该写什么?


>=5 1 2 3
>=5 1 2 3

解决方法

开始为如下工作表设置变量

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