问题描述如下: A是总可用测试; B,C是对对象及其结果进行的测试; D,E是输出
可用的总测试在A列中.B列表示对对象进行的测试,因此如果对象发生更改,则它们会发生变化,而C列会给出测试结果。再次输出D代表总测试,E分别给出特定测试的结果。我想使用VBA将结果以C到E给出。剩余的单元格为空。请帮帮我怎么样?
A B C D E
qq qq 23 qq 23
ww dde 34 ww
ee gg 45 ee
dd dd
ff ff
gg gg 45
vv vv
dde dde 34
ass ass
bb bb
nn nn
xx xx
答案 0 :(得分:1)
这个公式应该这样做:
=IFERROR(INDEX($C:$C,MATCH(D1,$B:$B,0)),"")
将其放入E1并复制下来。不需要VBA。
对于美国以外的地区,可能需要将,
替换为;
,如下所示:
=IFERROR(INDEX($C:$C;MATCH(D1;$B:$B;0));"")
如果vba是理想的方式,那么:
Sub subha()
Dim rng As Range
With ActiveSheet
For Each rng In .Range(.Range("D1"), .Range("D" & .Rows.Count).End(xlUp))
rng.Offset(, 1) = WorksheetFunction.IfError(Application.Index(.Range("C:C"), Application.Match(rng, .Range("B:B"), 0)), vbNullString)
Next rng
End With
End Sub