如何使用匹配函数获取数据的值?

时间:2015-11-24 14:57:38

标签: excel vba excel-vba

问题描述如下: 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

1 个答案:

答案 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