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 VLOOKUP
Formel 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 VLOOKUP
Formel 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 A1
in Ihre tatsächliche Dropdown-Zelle.