it-swarm.com.de

In-Cell-Dropdown mit gefiltertem Bereich erstellen

Ich verwende Google Spreadsheet.

Zur Veranschaulichung meines Problems verwende ich den Bereich A2:A8 für die Datenvalidierung von D2 und E2.

enter image description here

Da Sie jedoch in der Zelle D2 nur ein Tier auswählen sollen, möchte ich den Bereich mit B2:B8 filtern.

Was ich ausprobiert habe, ist die Verwendung meiner eigenen Formel: 

=FILTER(A2:A8;IS("B2:B8";"ANIMAL"))

dies funktioniert jedoch nicht und ich kann die Option "Dropdown" nicht auswählen, wenn ich eine benutzerdefinierte Formel verwende.

Ich habe meine Formel auch in meiner Bereichsauswahl ausprobiert, sie ist jedoch nicht gültig. Was ist die richtige Formel für ein Dropdown mit gefilterten Daten?

Irgendwelche Gedanken?

14
rayfranco

In Google Sheets besteht die einzige Möglichkeit, die Dropdown-Listen auf native (dh ohne auf Google Apps Script zurückzugreifen) zu füllen, darin, eine durch Kommas getrennte Liste zu verwenden oder auf einen Bereich zu verweisen. In Ihrem Fall müssten Sie also Ihre gefilterte Liste irgendwo in der Tabelle (möglicherweise auf einem verborgenen Blatt) reproduzieren:

=FILTER(A2:A8;B2:B8="ANIMAL")

verweisen Sie dann in der Datenüberprüfung auf den Bereich dieser Ausgabe.

Die Möglichkeit, eine Formel zum direkten Generieren der Dropdown-Liste zu verwenden, wäre eine leistungsstarke Funktion, die von vielen als Feature-Anfrage übermittelt wurde (Sie möchten möglicherweise das Gleiche tun: Hilfemenü, Problem melden).

18
AdamL

Die Antwort oben hinzugefügt, um einige weitere Möglichkeiten zu bieten, dies zu erreichen.

  • Erstellen Sie eine Pivot-Tabelle im Bereich A: B, fügen Sie den Pivotzeilen "Einige Werte" hinzu (deaktivieren Sie die Option "Gesamtwerte anzeigen"), fügen Sie dem Filter "Animal" hinzu und bearbeiten Sie den Filter, um nur Tiere auszuwählen. Dies würde eine Liste von Tiernamen erzeugen. Verwenden Sie diese Spalte schließlich als Bereich für Ihre Datenvalidierungsregel.
  • Eine weitere Option ist das Erstellen einer Spalte mithilfe der Abfrageformel. Zum Beispiel:

    = QUERY(A:B, "SELECT A WHERE B = 'ANIMAL'", 0)
    

Es gibt eine Lösung mithilfe von Google Apps-Skripts.

Ein ordentliches Video, das alle beteiligten Mechanismen erläutert:

Grundsätzlich wird durch das Bearbeiten einer Zelle, von der Ihr Dropdown-Menü abhängt (z. B. Land für Stadtliste), für die zugehörige Zelle "Stadt" automatisch der Bereich für Validierungsdaten neu berechnet (Liste möglicher Städte).

Kopieren/Einfügen des Skripts hier für den Fall, dass es nicht mehr verfügbar ist (in diesem Beispiel werden Automodelle und Modelle für abhängige Dropdowns verwendet):

function onEdit() {
  var tabLists = "lists";
  var tabValidation = "Main";
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);

  var activeCell = ss.getActiveCell();

  if (activeCell.getColumn() == 1 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){

    activeCell.offset(0, 1).clearContent().clearDataValidations();

    var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();

    var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;

    if (makeIndex != 0){
        var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
        var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
        activeCell.offset(0, 1).setDataValidation(validationRule);
     }  
  }
}
0
Frosty Z
=QUERY(A:B, "SELECT A WHERE B = 'ANIMAL'", 0)  

Erweist sich möglicherweise als erweiterbarer als die zuvor gewährte Gutschrift.

=QUERY(A:B, CONCATENATE("SELECT A WHERE B = '" , G3   "'", 0) )   

könnte sich für einige Anwendungen als erweiterbar genug erweisen.

0
Robin Hammond