试图找到一个更快的路线,而不是在VBA中使用公式

时间:2016-07-14 18:24:25

标签: excel vba excel-vba

所以现在我有一个宏使用公式从另一个工作簿中提取数据。我想知道是否有更快的方法来处理数据。因为有时间我有大量的数据集,它需要更长的时间来处理,或者这是最快的方式,而且没有办法解决它。以下是我用来提取信息的内容:

With Range("V2:V" & LastDataRow)
    .Formula = "=IF(A2 = ""No Specific Program"",IF(F2 = """",""No PIN"",IFERROR(VLOOKUP(CONCATENATE(B2,F2),'\\NW\Data\Tech\Team\Data\DataMining\[PIN_TABLE.xlsx]Sheet1'!$C:$I,4,FALSE),""NO GAD DATA"")),IFERROR(VLOOKUP(CONCATENATE(A2,F2),'\\NW\Data\Tech\Team\Data\DataMining\[PIN_TABLE.xlsx]Sheet1'!$C:$I,4,FALSE),""NO GAD DATA""))"
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = True
End With

此外,我的ScreenUpdating为False,计算为手动,禁用状态栏,EnableEvents为False。

1 个答案:

答案 0 :(得分:0)

您需要使用If then和ELSEIF语句 -

细分代码
for each y in rng 

If sheet("Name").range("A2") = "No Specific Program" AND sheet("Name").range("A2") = "" then' the A2 here can be controlled with "A" &   y.row
sheet(y.address) = "No PIN"

Else if sheet("Name").range("A2").value & sheet("Name").range("A2").value = "something" then....
sheet(y.address) = "No PIN"
end if
next y

如果只有一个值,我仍然建议使用INDEX(匹配(值,数组,0),匹配(值,数组,0)),否则我会使用sumif / sumifs。或者只是匹配。一切都取决于数据的结构。