Finden Wert in der Tabelle mit google-script

Situation:

  1. 1 Arbeitsblatt
  2. mehrere Blätter
  3. 1 Zelle ausgewählt (kann variieren)

Was ich gerne tun möchte, ist zu finden und den Fokus auf die nächste Zelle in jedem Blatt, das entspricht der ausgewählten Zelle (der groß-und Kleinschreibung) bei Klick auf eine Schaltfläche-wie das Bild in der Tabelle. In der Art, wie Sie einen benutzerdefinierten index MS Word erstellen können, für Sie.

Mein Ansatz ist:
- eingestellten Wert der ausgewählten Zelle als variable ("erfolgreich")
- finde die erste Zelle, dass Spiele, die variable (nicht der ausgewählten Zelle) (kein Erfolg)
- Wert der gefundenen Zelle als variable2 (kein Erfolg)
- setzen Sie den Fokus der Kalkulationstabelle, die variable2 (ohne Erfolg),

function FindSetFocus() 

{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var activecell = sheet.getActiveCell();
var valueactivecell = activecell.getValue();

//here comes the code :)

}

Ich gefunden habe, dieses snippet in das folgende Thema, aber ich habe ein wenig Probleme bei der Einstellung der input-und etwas zu tun mit der Ausgabe: Wie Suche ich in Google Tabellen?

Denke ich, kann ich ersetzen Sie "Wert" mit "valueactivecell', aber ich weiß nicht, wie, um den Bereich zu suchen, durch alle Arbeitsblätter in der Tabellenkalkulation. Auch möchte ich die Ausgabe etwas zu sein, kann ich den Fokus auf etwas wie 'ss.setActiveSheet(Blatt).setActiveSelection("D5");'

/**
 * Finds a value within a given range. 
 * @param value The value to find.
 * @param range The range to search in.
 * @return A range pointing to the first cell containing the value, 
 *     or null if not found.
 */
function find(value, range) {
  var data = range.getValues();
  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < data[i].length; j++) {
      if (data[i][j] == value) {
        return range.getCell(i + 1, j + 1);
      }
    }
  }
  return null;
}

fand auch dieses aber kein Glück daran, es zu arbeiten, die auf die ausgewählte Zelle und Einstellung Fokus: Wie kann ich suchen und finden der Koordinaten eine Zeile in Google-Tabellen beste Antwort, der erste code.

Bitte beachtet, dass ich bin nicht ein pro-coder 🙂 Wenn code-Beispiele werden bereitgestellt, bitte Kommentar inline hehe.

Vielen Dank im Voraus für jede Hilfe.

Bearbeiten 24/10: Verwendet den code aus der Antwort unten ein und bearbeitet es ein wenig. Jetzt können schauen Sie durch mehrere Seiten in einem Tabellenblatt um den Wert zu finden. Das einzige problem mit diesem bit wird: Meine Zelle ist gelb hervorgehoben, aber die Zelle mit dem gefundenen Wert nicht ausgewählt ist. Siehe code unten hopping durch die Blätter. Die ich nicht bekommen kann meinen Kopf herum 🙂

function SearchAndFind() {

//determine value of selected cell
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet();
var cell = ss.getActiveCell();
var value = cell.getValue();

//create array with sheets in active spreadsheet
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

//loop through sheets to look for value
for (var i in sheets) {

 //Set active cell to A1 on each sheet to start looking from there
  SpreadsheetApp.setActiveSheet(sheets[i])
  var sheet = sh.getActiveSheet();
  var range = sheet.getRange("A1");
  sheet.setActiveRange(range);

//set variables to loop through data on each sheet
  var activeR = cell.getRow()-1;
  var activeC = cell.getColumn()-1;
  var data = sheets[i].getDataRange().getValues()
  var step = 0

//loop through data on the sheet  
  for(var r=activeR;r<data.length;++r){
    for(var c=activeC;c<data[0].length;++c){
      step++
      Logger.log(step+' -- '+value+'  =  '+data[r][c]);
      if(data[r][c]==''||step==1){ continue };
      if(value.toString().toLowerCase()==data[r][c].toString().toLowerCase()){
         sheet.getRange(r+1,c+1).activate().setBackground('#ffff55');
        return;
      }
    }
  }
 }

}
vielleicht finden Sie auch dieses nützliche - stackoverflow.com/a/18482717/80428

InformationsquelleAutor Lone Programmer | 2013-10-18

Schreibe einen Kommentar