微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。