-3

セルA1=10,21,34,23,45,67

A2次のことを行うセル内の数式が必要です。

10が含まれているかどうかを確認A1し、はいの場合は「コカ・コーラ」21が含まれている
かどうかを確認し、はいの場合は「ペプシ」を追加します34が含まれている かどうかを確認し、はいの 場合は「7Up」を追加します次に「スプライト」を追加します。45が含まれている かどうかを確認します。はいの場合は「ファンタ」を追加します。67が含まれている かどうかを確認します。はいの場合は「ゲータレード」を追加します。99が含まれている 場合は「レッドブル」を追加します 。 。 など。 A1
A1
A1
A1
A1
A1

したがって、上記の例の値のセルの出力は次のA2ようになります。

Coca Cola , Pepsi , 7Up , Sprite , Fanta , Gatorade

" , "出力値は(すなわち<space> comma <space>)で区切られていることに注意してください。
これは1つのセルの数式として可能ですか?チェックする値は約20あります。

4

1 に答える 1

1

唯一の実用的な方法は、ユーザー定義関数を使用することだと思います(UDF

設定するには、値のリスト、ワークブックのどこかに文字列のペア(この例では、を使用しますG1:H7)、最初の列に値、2番目の列に文字列を配置します。

このコードをモジュールに入れます

Function ListRange(rValues As Range, rLookup As Range) As String
    Dim ListOfValues() As String
    Dim OutputList() As String
    Dim i As Long, j As Long
    Dim v As Variant

    ListOfValues = Split(rValues.Value, ",")
    ReDim OutputList(LBound(ListOfValues) To UBound(ListOfValues))
    j = LBound(ListOfValues)
    For i = LBound(ListOfValues) To UBound(ListOfValues)
        v = Application.VLookup(Val(ListOfValues(i)), rLookup, 2, 0)
        If Not IsError(v) Then
            OutputList(j) = v
            j = j + 1
        End If
    Next
    If j = 0 Then
        ListRange = ""
    Else
        ReDim Preserve OutputList(LBound(OutputList) To j - 1)
        ListRange = Join(OutputList, " , ")
    End If
End Function

このように呼んでください

=ListRange(A1,$G$1:$H$7)
于 2012-10-21T02:46:07.473 に答える