2016-08-08 15 views
0

Ich habe 30 Spalten und 1000 Zeilen, ich möchte Spalte1 mit einer anderen Spalte vergleichen. Wenn der Wert nicht übereinstimmt, möchte ich ihn rot färben. Im Folgenden finden Sie eine kleine Datenmenge in meiner Tabelle:Wie zwei Spalten in einer Tabelle zu vergleichen

 A  B  C  D E F ... 
1 name sName email 
2 
3 
. 
n 

Weil ich eine große Datenmenge haben, und ich möchte, dass meine Spalten in einem Array zu speichern, wird die erste Zeile Überschrift. Das habe ich gemacht, aber beim Testen bekomme ich kein Ergebnis, kann mir jemand korrigieren, was ich falsch mache?

var index = []; 
 
var sheet = SpreadsheetApp.getActiveSheet(); 
 

 
function col(){ 
 
    var data = sheet.getDataRange().getValues(); 
 
    for (var i = 1; i <= data.length; i++) { 
 
     te = index[i] = data[1]; 
 
     Logger.log(columnIndex[i]) 
 
     if (data[3] != data[7]){ 
 
      // column_id.setFontColor('red'); <--- I can set the background like this 
 
     } 
 
    } 
 
}

Aus dem Code, den Sie ich ganze Tabellendaten am Scannen sehen können [1] die Überschrift erhalten und, wenn Schleife (data[3] != data[7]) zwei Spalten vergleichen. Ich muss an meiner Farbvariablen arbeiten, aber das kann gemacht werden, sobald ich die Daten bekomme, die ich brauche.

+0

Gegeben * Vergleiche Spalte1 mit einer anderen Spalte. Wenn der Wert nicht übereinstimmt, würde ich es gerne rot färben. * Bedingte Formatierung scheint alles zu sein, was Sie brauchen. – pnuts

+0

@pnuts Ja, das ist richtig, aber ich möchte, dass diese Tabelle andere komplizierte Funktionen hat (dies ist die einfache). – tranmaster

+0

Schon Probleme mit dem Einfachen hat man bei denen, die kompliziert sind. Vielleicht hilft Ihnen eine Skriptlösung dabei, den Code für den Rest des Skripts zu verstehen, aber es scheint mir eine seltsame Entscheidung zu sein. – pnuts

Antwort

0

Versuchen Sie, diese tutorial zu überprüfen, wenn es Ihnen bei Ihrem Problem helfen kann. In diesem Tutorial wird ein verwendet, um die beiden Spalten zu vergleichen. Wenn Unterschiede gefunden werden, sollte das Skript darauf hinweisen. Wenn überhaupt keine Unterschiede gefunden werden, sollte das Skript den Text "[id]" ausgeben. Passen Sie diesen Code einfach an Ihre eigene Funktion an.

Hier ist der Code verwendet diese Art von Vergleich

function stringComparison(s1, s2) { 
    // lets test both variables are the same object type if not throw an error 
    if (Object.prototype.toString.call(s1) !== Object.prototype.toString.call(s2)){ 
    throw("Both values need to be an array of cells or individual cells") 
    } 
    // if we are looking at two arrays of cells make sure the sizes match and only one column wide 
    if(Object.prototype.toString.call(s1) === '[object Array]') { 
    if (s1.length != s2.length || s1[0].length > 1 || s2[0].length > 1){ 
     throw("Arrays of cells need to be same size and 1 column wide"); 
    } 
    // since we are working with an array intialise the return 
    var out = []; 
    for (r in s1){ // loop over the rows and find differences using diff sub function 
     out.push([diff(s1[r][0], s2[r][0])]); 
    } 
    return out; // return response 
    } else { // we are working with two cells so return diff 
    return diff(s1, s2) 
    } 
} 

function diff (s1, s2){ 
    var out = "[ "; 
    var notid = false; 
    // loop to match each character 
    for (var n = 0; n < s1.length; n++){ 
    if (s1.charAt(n) == s2.charAt(n)){ 
     out += "–"; 
    } else { 
     out += s2.charAt(n); 
     notid = true; 
    } 
out += " "; 
    } 
    out += " ]" 
    return (notid) ? out : "[ id. ]"; // if notid(entical) return output or [id.] 
} 

Weitere Informationen zu erreichen, nur das Tutorial Link überprüfen oben und diese SO question auf, wie zwei Tabellen zu vergleichen.

Verwandte Themen