Wie kombiniere ich einen Bereich und einen bestimmten Wert in einer Validierungsliste?


0

Ich habe eine Zelle mit einer Dropdown-Liste (mit "Datenüberprüfung").

Die Liste stammt aus einem benannten Bereich in einem anderen Arbeitsblatt.

Ich möchte, dass das Dropdown-Menü den benannten Bereich und einen weiteren vordefinierten Wert anzeigt. Also zum Beispiel, wenn der Bereich so aussieht:

1
2
3
4

Ich möchte, dass die Dropdown-Liste Folgendes anzeigt:

1
2
3
4
17 (my predefined value)

Wie kann man das erreichen?

Antworten:


0

Wenn Sie Validierungsdaten verwenden möchten, um eine Liste zu erstellen, wird die folgende Fehlermeldung angezeigt : Sie dürfen keine Referenzoperatoren (wie z. B. Vereinigungen, Schnittpunkte und Bereiche) oder Array-Konstanten für bedingte Formatierungskriterien verwenden.

Ich schlage vor, Sie versuchen, Code als Problemumgehung zu verwenden, um dieses Problem zu beheben.

Sub SetDataValidation() '

Dim WS As Worksheet

Set WS = Worksheets("Sheet1")

Dim rng As Range

'get range of named range

Set rng = WS.Range("NUMBER")

Dim ARR As Variant

ReDim ARR(1 To 1) As Variant

'add cell value from named range to an array

For i = 1 To rng.Cells.Count

ARR(UBound(ARR)) = rng.Cells(i).Value

ReDim Preserve ARR(1 To UBound(ARR) + 1) As Variant

Next i

'add your predefined value to the array

ARR(UBound(ARR)) = 17

'set validation for B1 with the combined array

With WS.Range("B1").Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(ARR, ",")

End With

End Sub

In meinem Beispiel habe ich den Bereich NUMBER genannt und erhalte das Ergebnis:

Bildbeschreibung hier eingeben


0

Ich hatte ein ähnliches Problem wie Sie. Ich hatte einen benannten Bereich Dyn_ParamList_KillDatemit einer Liste von Daten 1/1/2018, 1/2/2018, etc.... Dieser dynamische benannte Bereich wird von einem Prozess aufgefüllt und ändert sich in der Größe. Das Problem ist manchmal, dass die Liste leer ist und ein leeres Dropdown-Menü Probleme verursacht.

Deshalb habe ich für meine Lösung einen anderen benannten Bereich erstellt Range_Writeback_ModelParamDate, der immer einen Wert hat. Dann änderte ich die Datenvalidierungsliste FROM =Dyn_ParamList_KillDateTO =IF(Dyn_ParamList_KillDate<>"", Dyn_ParamList_KillDate, Range_Writeback_ModelParamDate).

Nachdem ich diesen zweiten Bereich hinzugefügt hatte, stellte ich sicher, dass er immer einen Wert hatte, und änderte die Dropdown-Formel so, dass IF verwendet und aus einem der beiden Bereiche gezogen wurde. Ich hoffe das hilft jemandem.

Die Idee für diese Lösung kam von hier: https://www.mrexcel.com/forum/excel-questions/754454-you-may-not-use-reference-operators-array-constants-data-validation.html

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.