2

Excelに入力すると完璧に機能する次の式がありますが、マクロを開くとエラーが発生し、FRANCEが強調表示されます。

コンパイル エラーが予想されます: ステートメントの終わり

何を間違えているのかわからず本当に困っています。どなたか、これを見てください。

ActiveCell.FormulaR1C1 = "=IF(LEFT(R[-1]C[1],6)=""AT_COM"",""AUSTRIA"",IF(LEFT(R[-1]C[1],6)=""BE_COM"",""BELUX"",IF(LEFT(R[-1]C[1],6)=""CP_COM"",""CZECH"",IF(LEFT(R[-1]C[1],6)=""CZ_COM"",""CZECH"",IF(LEFT(R[-1]C[1],6)=""DK_COM"",""DENMARK"",IF(LEFT(R[-1]C[1],6)=""FI_COM"",""FINLAND"",IF(LEFT(R[-1]C[1],6)=""FR_COM""," & _ ""**FRANCE**"",IF(LEFT(R[-1]C[1],6)=""DE_COM"",""GERMANY"",IF(LEFT(R[-1]C[1],6)=""GR_COM"",""GREECE"",IF(LEFT(R[-1]C[1],6)=""IL_COM"",""ISRAEL"",IF(LEFT(R[-1]C[1],6)=""IT_COM"",""ITALY"",IF(LEFT(R[-1]C[1],6)=""ME_COM"",""MIDDLE EAST"",IF(LEFT(R[-1]C[1],6)=""NL_COM"",""NETHERLANDS"",IF(LEFT(R[-1]C[1],6)=""NO_COM"",""NORWAY"",IF(LEFT(R[-1]C[1],6)=""PL_COM"",""POLAND"",IF(LEFT(R[-1]C[1],6)=""PT_COM"",""PORTUGAL"",IF(LEFT(R[-1]C[1],6)=""RU_RUSSIA"",""RUSSIA"",IF(LEFT(R[-1]C[1],6)=""RU_ENT"",""RUSSIA"",IF(LEFT(R[-1]C[1],6)=""SEE_CO"",""SEE"",IF(LEFT(R[-1]C[1],6)=""ES_COM"",""SPAIN"",IF(LEFT(R[-1]C[1],6)=""SA_COM"",""SOUTH AFRICA"",IF(LEFT(R[-1]C[1],6)=""SE_COM"",""SWEDEN"",IF(LEFT(R[-1]C[1],6)=""CH_COM"",""SWITZERLAND"",IF(LEFT(R[-1]C[1],6)=""TR_COM"",""TURKEY"",IF(LEFT(R[-1]C[1],6)=""UK_COM"",""UK"",IF(LEFT(R[-1]C[1],6)=""UK_ENT"",""UK PS"",""UNKNOWN""))))))))))))))))))))))))))"

4

4 に答える 4

3

VBA を使用していて、UDF に反対していない場合は、次のようなカスタム関数を提案します。これは、ワークシートから呼び出すことができます。

ワークシートの UDF のスクリーンショット

Function LookupCountryCode(countrycode As String) As String
Dim myVal As String
Dim cntryShort As String

cntryShort = Left(countrycode, 6)

    Select Case Trim(UCase(cntryShort))
        Case "AT_COM"
            myVal = "AUSTRIA"
        Case "BE_COM"
            myVal = "BELUX"
        Case "CP_COM", "CZ_COM"
            myVal = "CZECH"
        Case "DK_COM"
            myVal = "DENMARK"
        Case "FI_COM"
            myVal = "FINLAND"
        Case "FR_COM"
            myVal = "FRANCE"
        Case "DE_COM"
            myVal = "GERMANY"
        Case "GR_COM"
            myVal = "GREECE"
        Case "IL_COM"
            myVal = "ISRAEL"
        Case "IT_COM"
            myVal = "ITALY"
        Case "ME_COM"
            myVal = "MIDDLE EAST"
        Case "NL_COM"
            myVal = "NETHERLANDS"
        Case "NO_COM"
            myVal = "NORWAY"
        Case "PL_COM"
            myVal = "POLAND"
        Case "PT_COM"
            myVal = "PORTUGAL"
        Case "RU_COM", "RU_ENT"
            myVal = "RUSSIA"
        Case "SEE_CO"
            myVal = "SEE"
        Case "ES_COM"
            myVal = "SPAIN"
        Case "SA_COM"
            myVal = "SOUTH AFRICA"
        Case "SE_COM"
            myVal = "SWEDEN"
        Case "CH_COM"
            myVal = "SWITZERLAND"
        Case "TR_COM"
            myVal = "TURKEY"
        Case "UK_COM"
            myVal = "UK"
        Case "UK_ENT"
            myVal = "UK PS"
        Case Else
            myVal = "UNKNOWN"
    End Select

    LookupCountryCode = myVal

End Function

VBAでは、これを次のように呼び出すことができます。私のR1C1表記法は少しさびているので、少し調整する必要があるかもしれません:

With ActiveCell
    .FormulaR1C1 = "=LookupCountryCode(" & _
        .Offset(-1, 1).Address(, , xlR1C1) & _
        ")"
End With
于 2013-05-07T17:22:25.377 に答える
1

私が見た中で最大のものだと思います!

文字列を開始するには France 1 の前に 3 " が必要であり、数式で文字列を作成するには 2 が必要です。

ActiveCell.FormulaR1C1 = "=IF(LEFT(R[-1]C[1],6)=""AT_COM"",""AUSTRIA"",IF(LEFT(R[-1]C[1],6)=""BE_COM"",""BELUX"",IF(LEFT(R[-1]C[1],6)=""CP_COM"",""CZECH"",IF(LEFT(R[-1]C[1],6)=""CZ_COM"",""CZECH"",IF(LEFT(R[-1]C[1],6)=""DK_COM"",""DENMARK"",IF(LEFT(R[-1]C[1],6)=""FI_COM"",""FINLAND"",IF(LEFT(R[-1]C[1],6)=""FR_COM""," & _ """**FRANCE**"",IF(LEFT(R[-1]C[1],6)=""DE_COM"",""GERMANY"",IF(LEFT(R[-1]C[1],6)=""GR_COM"",""GREECE"",IF(LEFT(R[-1]C[1],6)=""IL_COM"",""ISRAEL"",IF(LEFT(R[-1]C[1],6)=""IT_COM"",""ITALY"",IF(LEFT(R[-1]C[1],6)=""ME_COM"",""MIDDLE EAST"",IF(LEFT(R[-1]C[1],6)=""NL_COM"",""NETHERLANDS"",IF(LEFT(R[-1]C[1],6)=""NO_COM"",""NORWAY"",IF(LEFT(R[-1]C[1],6)=""PL_COM"",""POLAND"",IF(LEFT(R[-1]C[1],6)=""PT_COM"",""PORTUGAL"",IF(LEFT(R[-1]C[1],6)=""RU_RUSSIA"",""RUSSIA"",IF(LEFT(R[-1]C[1],6)=""RU_ENT"",""RUSSIA"",IF(LEFT(R[-1]C[1],6)=""SEE_CO"",""SEE"",IF(LEFT(R[-1]C[1],6)=""ES_COM"",""SPAIN"",IF(LEFT(R[-1]C[1],6)=""SA_COM"",""SOUTH AFRICA"",IF(LEFT(R[-1]C[1],6)=""SE_COM"",""SWEDEN"",IF(LEFT(R[-1]C[1],6)=""CH_COM"",""SWITZERLAND"",IF(LEFT(R[-1]C[1],6)=""TR_COM"",""TURKEY"",IF(LEFT(R[-1]C[1],6)=""UK_COM"",""UK"",IF(LEFT(R[-1]C[1],6)=""UK_ENT"",""UK PS"",""UNKNOWN""))))))))))))))))))))))))))"

余談ですが、以下のように書きます。

ActiveCell.FormulaR1C1 = "=IF(LEFT(R[-1]C[1],6)=""AT_COM"",""AUSTRIA""," & _
"IF(LEFT(R[-1]C[1],6)=""BE_COM"",""BELUX""," & _
"IF(LEFT(R[-1]C[1],6)=""CP_COM"",""CZECH""," & _
"IF(LEFT(R[-1]C[1],6)=""CZ_COM"",""CZECH""," & _
"IF(LEFT(R[-1]C[1],6)=""DK_COM"",""DENMARK""," & _
"IF(LEFT(R[-1]C[1],6)=""FI_COM"",""FINLAND""," & _
"IF(LEFT(R[-1]C[1],6)=""FR_COM"",""**FRANCE**""," & _
....
于 2013-05-09T11:28:25.310 に答える