Werteabruf aus der Dropdown-Liste mit Mehrfachauswahl in Excel

Werteabruf aus der Dropdown-Liste mit Mehrfachauswahl in Excel

Ich versuche, eine Berechnung aus meinem Dropdown-Menü durchzuführen. In Blatt 1 meines Excel habe ich das folgende Dropdown-Menü.

## Category ##
### AAA ###
### BBB ###
### CCC ###
### DDD ###

In Blatt 2 habe ich entsprechende Werte für dieses Dropdown.

## Category  Category Value##
### AAA    1###
### BBB    2###
### CCC    3###
### DDD    4###

Ich habe VBA-Code für Mehrfachauswahl hinzugefügt und auch eine einfache VLOOKUPFormel zum Abrufen des Kategoriewerts hinzugefügt.

=VLOOKUP(E2;Sheet2!I2:J5;2;)

Mit dem VBA-Code kann ich alle drei Kategorien auswählen und die ausgewählte Kategorie später auch wieder entfernen. Aber ich kann die Summe der ausgewählten Kategorien nicht abrufen. Wenn ein Kunde beispielsweise die Kategorien AAA und CCC wählt, sollte er/sie die Summe als 4 sehen können. Wenn ein Kunde zuerst alle drei Kategorien auswählt und dann eine davon entfernt, sollte die Summe aktualisiert werden. Ich verstehe nicht, wie ich meine VLOOKUPFormel aktualisiere, um die Summe zu erhalten.

Hier ist mein VBA-Code für Mehrfachauswahl.

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated: 2016/4/12
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    If Target.Count > 1 Then Exit Sub
    On Error Resume Next
    Set xRng = Cells.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    If Not Application.Intersect(Target, xRng) Is Nothing Then
        xValue2 = Target.Value
        Application.Undo
        xValue1 = Target.Value
        Target.Value = xValue2
        If xValue1 <> "" Then
            If xValue2 <> "" Then
                '                If xValue1 = xValue2 Or _
                '                   InStr(1, xValue1, ", " & xValue2) Or _
                InStr(1, xValue1, xValue2 & ",") Then
                If InStr(1, xValue1, xValue2 & ",") > 0 Then
                    xValue1 = Replace(xValue1, xValue2 & ", ", "") ' If it's in the middle with comma
                    Target.Value = xValue1
                    GoTo jumpOut
                End If
                If InStr(1, xValue1, ", " & xValue2) > 0 Then
                    xValue1 = Replace(xValue1, ", " & xValue2, "") ' If it's at the end with a comma in front of it
                    Target.Value = xValue1
                    GoTo jumpOut
                End If
                If xValue1 = xValue2 Then        ' If it is the only item in string
                    xValue1 = ""
                    Target.Value = xValue1
                    GoTo jumpOut
                End If
                Target.Value = xValue1 & ", " & xValue2
            End If
            jumpOut:
        End If
    End If
    Application.EnableEvents = True
End Sub

Antwort1

=SUM(IF(ISERR(FIND(Sheet2!$I$2:$I$5;A1;1));0;Sheet2!$J$2:$J$5))

Das muss funktionieren, aber es ist keine reguläre Formel. Es ist eineAnordnungFormel. Damit Array-Formeln funktionieren, geben Sie sie einnichtmit Enter, sondern verwenden Sie stattdessen eine Kombination aus Ctrl+ Shift+ Enter.

Ändern Sie außerdem A1in Ihre tatsächliche Dropdown-Zelle.

Beispiel

verwandte Informationen