问题描述
我有两张床单; 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