2017-04-04 4 views
0

Ich möchte eine Validierung in Spalte D (siehe die veröffentlichte Tabelle unter dem Link [1]) so einstellen, dass sie nur die Elemente der Spalten A (A3: A) oder B (B3: B) (aber nicht alle Artikel beider Spalten zusammen) abhängig von dem Service, der in Col. C gesetzt wird.Ist es möglich, eine bedingte Validierungsregel als benutzerdefinierte Formel im Validierungsfeld in Google Spreadsheet zu verwenden?

Also, wenn jemand "Typisierung Services" in C3, die Zelle D3 hat eine Validierung mit allen Punkten Spalte A (A3: A) nur. Und in ähnlicher Weise, wenn jemand "Übersetzungsdienste" in C3 setzt, hat die Zelle D3 eine Validierung, die alle Elemente von Spalte B (B3: B) nur aufweist.

Ich glaube, eine benutzerdefinierte Formel in Validierungsbox in Spalte D kann es tun. Ich kann es jedoch nicht herstellen.

Vielen Dank für Ihre Lösung!

[1] https://docs.google.com/spreadsheets/d/1XdcKbxKvIOSFK37zwULZns6giE9ounHPS5iHrRFkvIk/edit#gid=697587372 [1]

+0

Ich denke, das ein benutzerdefiniertes Skript erfordern. –

Antwort

1

Dies sollte das tun, was Sie wollen. Fügen Sie diese auf Ihrem Script-Editor:

function onEdit(event){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("custom formula in validation") 
var sheet = event.source.getActiveSheet().getName(); 
var lr=event.source.getActiveSheet().getLastRow() 
var editedCell = event.range.getSheet().getActiveCell(); 
var editVal=event.range.getSheet().getActiveCell().getValue() 
var editRow=event.range.getSheet().getActiveCell().getRow() 

if(sheet=="custom formula in validation" && editedCell.getColumn() ==3){ 
    if(editVal=="Typing Services"){ 
    var validation=s.getRange(3, 1, lr,1) 
    var cell= s.getRange(editRow,4,1,1) 
    var rule = SpreadsheetApp.newDataValidation().requireValueInRange(validation).build(); 
    cell.setDataValidation(rule); 
    } 
     if(editVal=="Translation Services"){ 
     var validation=s.getRange(3, 2, lr,1) 
     var cell= s.getRange(editRow,4,1,1) 
     var rule = SpreadsheetApp.newDataValidation().requireValueInRange(validation).build(); 
cell.setDataValidation(rule); 
}}} 

Dies ist ein Teil meiner Test-Tabelle ist:

https://docs.google.com/spreadsheets/d/10lQnZ3m6wJYAC29ylZEM1Yj2vCzKljcE9zGZNn-bRiQ/edit?usp=sharing

+0

Das ist genial. :) Vielen Dank, Ed! – viv227295

+0

Hi @Ed 1 weitere Abfrage, wenn es Ihnen nichts ausmacht ... welcher Teil des Skripts bearbeitet werden muss und wie sich die Quelldaten in einem anderen Blatt befinden, dh ob sich die Spalten A und B in einem anderen Blatt als dem aktuellen befinden in der Beispieltabelle die Verbindung, von der ich oben gab. Vielen Dank für Ihre Hilfe. – viv227295

+0

Hi @EdNelson 1 weitere Abfrage, wenn es Ihnen nichts ausmacht ... welcher Teil des Skripts bearbeitet werden muss und wie sich die Quelldaten in einem anderen Blatt befinden, dh ob sich die Spalten A und B in einem anderen Blatt als dem aktuellen befinden in der Beispieltabelle die Verbindung, von der ich oben gab. Vielen Dank für Ihre Hilfe. – viv227295

Verwandte Themen