我有兩個問題,第一個是關於Excel無法在VBA中複製的公式,即使我使用記錄宏來檢索公式,第二個問題因爲我想不出解決我的第一個問題,是關於代碼效率: 基本上在小區AR2我把Excel公式:替代使用循環使代碼運行更快
IF=(P2="LDN";"UK;IF(P2="MAD";"SPAIN"
IF(P2="PRA";"CZECH REPUBLIC";"")))))))))
IM這樣做了一堆的國家。
然後我在我的第二行上做自動填充單元格目的地,直到我的工作表上的數據最後一行才能得到結果。 主要問題是,在Excel中它工作正常,但是當用VBA錄像機在VBA中編碼時,我在下面的代碼中有錯誤。雖然我只是複製粘貼VBA錄音機的結果。 請找到下面的代碼。
i = Range("A:A").Find("*", [A1], xlValues, xlWhole, xlByRows, xlPrevious).Row
Range("AR2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-28]=""LDN"",""UK"",IF(RC[-28]=""MAD"",""SPAIN"",IF(RC[-28]=""STO"",""SWEDEN"",IF(RC[-28]=""DUB"",""IRELAND"",IF(RC[-28]=""SAO"",""BRASIL"",IF(RC[-28]=""PAR"",""FRANCE"",IF(RC[-28]=""TOR"",""CANADA"",IF(RC[-28]=""TOK"",""JAPAN"",IF(RC[-28]=""ZUR"",""SWITZERLAND"",IF(RC[-28]=""HKG"",""HONG KONG"",IF(RC[-28]=""HEL"",""FINLAND"",IF(RC[-28]=""MIL"",""ITALY"",IF(R"& _
""FRA"",""GERMANY"",IF(RC[-28]=""COP"",""DANEMARK"",IF(RC[-28]=""BRU"",""BELGIUM"",IF(RC[-28]=""AMS"",""NETHERLANDS"",IF(RC[-28]=""SIN"",""SINGAPORE"",IF(RC[-28]=""SEO"",""SOUTH KOREA"",IF(RC[-28]=""OSL"",""NORWAY"",IF(RC[-28]=""LIS"",""PORTUGAL"",IF(RC[-28]=""NYK"",""USA"",IF(RC[-28]=""VIE"",""AUSTRIA"",IF(RC[-28]=""LUX"",""LUXEMBOURG"",IF(RC[-28]=""JOH"",""SOUTH AF"& _
"(RC[-28]=""MEX"",""MEXICO"",IF(RC[-28]=""SYD"",""AUSTRALIA"",IF(RC[-28]=""TAI"",""TAIWAN"",IF(RC[-28]=""VAR"",""POLAND"",IF(RC[-28]=""BUD"",""HUNGARY"",IF(RC[-28]=""IST"",""TURKEY"",IF(RC[-28]=""BAN"",""INDIA"",IF(RC[-28]=""MOS"",""RUSSIA"",IF(RC[-28]=""TEL"",""ISRAEL"",IF(RC[-28]=""KUA"",""MALAYSIA"",IF(RC[-28]=""ATH"",""GREECE"",IF(RC[-28] =""PRA"",""CZECH REPUBLIC"& _
"))))))))))))))))))))))))))))))))))"
Range("AR2").Select
Selection.AutoFill Destination:=Range("AR2:AR" & i)
正如上面的代碼didnt工作,我嘗試使用循環然而,我發現,它需要年齡得到的結果,因爲我有將近2萬行.... 5min即可瞬間的過程insteand做在VBA使用Excel公式結果: 我的循環的代碼是在這裏:
For j = 2 To i
If Range("P" & j) = "AMS" Then Range("AR" & j) = "NETHERLANDS"
If Range("P" & j) = "ATH" Then Range("AR" & j) = "GREECE"
If Range("P" & j) = "BAN" Then Range("AR" & j) = "INDIA"
If Range("P" & j) = "BRU" Then Range("AR" & j) = "BELGIUM"
If Range("P" & j) = "BUD" Then Range("AR" & j) = "HUNGARY"
If Range("P" & j) = "COP" Then Range("AR" & j) = "DANEMARK"
.
.
.
.
.
If Range("P" & j) = "VAR" Then Range("AR" & j) = "POLAND"
If Range("P" & j) = "VIE" Then Range("AR" & j) = "AUSTRIA"
If Range("P" & j) = "ZUR" Then Range("AR" & j) = "SWITZERLAND"
Next j
如果在VBA中的Excel formulat不工作,我該怎麼代碼以高效,快捷的方式,以獲得該國至少20K行,而不必等待,幾乎可以即時得到結果,就像Excel公式自動填充模式一樣。
非常感謝FO r系統正在將幫助 奧利維爾
究竟是我要放下的 – Tom 2014-08-28 10:41:43
這在短期內有效,但缺點是所有的城市代碼和國家名稱都是硬編碼的! – 2014-08-28 10:44:47
@ Jean-FrançoisCorbett我認爲這種方法的真正缺點是迭代次數和代碼行數量。 – 2014-08-28 11:07:46