두 가지 질문이 있습니다. 첫 번째 것은 수식을 검색하기 위해 레코드 매크로를 사용했지만 VBA에서 복제 할 수없는 Excel 수식에 대한 것입니다. 난 내 첫 번째 질문을 해결을 couldnt 및 코드의 효율성에 대해 때문에 : 기본적으로 셀에 AR2는 내가 엑셀 수식을 넣어 해요 :루프를 사용하여 코드를 더 빠르게 실행하는 방법
IF=(P2="LDN";"UK;IF(P2="MAD";"SPAIN"
IF(P2="PRA";"CZECH REPUBLIC";"")))))))))
메신저 국가의 무리를 위해이 일을.
그런 다음 결과를 얻기 위해 내 시트의 데이터가있는 마지막 행까지 두 번째 행의 자동 채우기 대상을 사용하고 있습니다. 주요 문제는 Excel에서 잘 작동하지만 VBA 레코더를 사용하여 VBA에서 코딩 할 때 아래 코드에서 오류가 발생합니다. VBA 레코더의 결과를 붙여 넣기 만해도됩니다. 아래 코드를 찾으십시오. 위의 코드 didnt 한 근무로
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)
는 내가 루프 그러나 나는이 순간의 프로세스 insteand에 5 분 .... 내가 거의 20K 행이 같은 결과를 얻을 나이 걸리는 것을 발견하여 VBA에서 그것을 시도 엑셀 수식을 사용한 결과 : 을 내 루프의 코드는 여기에 있습니다 :
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에서 엑셀 formulat 나던 작업, 내가 어떻게 적어도 20K의 국가를 얻기 위하여 효율적이고 빠른 방법 코드 열을 기다릴 필요없이 거의 즉시 엑셀 수식 자동 채우기 모드와 같은 결과를 얻을 수 있습니다. ryour 도움 FO
많은 감사 올리비에
,
정확히 무엇을 내려 놓으려고 했는가 – Tom
이것은 단기간에 효과가 있지만 모든 도시 코드와 국가 이름은 하드 코딩되어 있다는 단점이 있습니다! –
@ Jean-FrançoisCorbett이 접근법의 가장 큰 단점은 반복과 코드 라인의 양이라고 생각합니다. –