列中的列为Evaluate函数中的数字

时间:2016-02-17 17:42:36

标签: excel vba excel-vba

我想在vba中使用以下代码:

Dim negocio As String
Dim feeder As String
Dim origenAWB As String
Dim destinoAWB As String

Set WS = ActiveSheet

negocio = Cells(6, 6).Value
feeder = Cells(8, 6).Value
origenAWB = Cells(10, 6).Value
destinoAWB = Cells(12, 6).Value

For i = 1 To 53
    WS.Cells(24, 1 + i) _
       = Sheets("Proyeccion").Evaluate("=INDEX(6+i,(MATCH(1,(B:B=""" & negocio & """) * (C:C=""" & feeder & """) * (D:D=""" & origenAWB & """) * (E:E=""" & destinoAWB & """),0))")
Next i

对于INDEX部分,我需要获得第6 + i列的值,但我不知道该怎么做,因为列标有字母。

我需要做的是找到符合"表"中多个条件的值。例如,如果我有下表:

   A    B   C   D   E
1  a1  a2  a3  a4  a5
2  b1  b2  b3  b4  b5
3  .   .            .
4  .   .            .
5  .   .            .
. 
.
.

我需要获取E列中与A,B,C和D列中的值匹配的值。例如,对于值a1,a2,a3和a4,我应该得到a5。所有这些,使用VBA。

1 个答案:

答案 0 :(得分:1)

你能不能让字符串动态化?

原样:
 "...=INDEX(6+i,(MATCH(1,..."

新版本:
 "...=INDEX(" & Col_Letter(6+i)) & ":" & Col_Letter(6+i)) & ",(MATCH(1,..."

用这个来收信。这是来自SO帖子Function to convert column number to letter?

Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function