2016-04-04 2 views
0

Ich erstelle gerade ein Lagerbestandssystem mit Google Tabellen, und ich habe ein Problem bei der letzten Hürde. Ich verwende bedingte Formatierung, um Farben von Reihen usw. anzupassen, wenn eine bestimmte Dropdown-Option aus dem "Aktualisiert am Einkaufswagen?" Spalte, aber ich brauche ein Skript (weil dies nicht nur durch bedingte Formatierung möglich ist) zu erkennen, wenn die Zelle "QTY" geändert hat/aktualisiert von seinem aktuellen Wert (zu irgendetwas, nicht nur einen bestimmten Wert).Ich benötige ein Skript, um zu erkennen, wann sich der numerische Wert einer Zelle geändert hat, und ändere die Zeilenfarbe

Ich habe durch, was sich wie 25 Seiten von Google fühlt, und unzählige Beiträge auf StackOverflow, vergeblich.

Hier ist ein Bild des Systems, wie es im Moment ist.

Image of stock sheet

Also im Grunde, wenn ein Benutzer die Menge einer Lagerposition ändert, soll die Zeile Farbe ändern.

Wenn jemand von einem Skript weiß, das ich verwenden kann, oder kann mich in die richtige Richtung einer Lösung für Google Spreadsheet zeigen, die großartig wäre.

+0

Möchten Sie eine Excel-Lösung oder Google Spreadsheet? – BruceWayne

+0

Eine Google Spreadsheet-Lösung. –

Antwort

0

könnte Einige Skript helfen:

function onEdit(t) { 

var workSheetName = 'Sheet1'; // change sheet name to yours 
var targetRangeAddress = 'E2:E'; // change if needed 

var ss = SpreadsheetApp.getActiveSheet(); 
var sn = ss.getName(); 

if (sn == workSheetName) { 
    var myr = ss.getRange(targetRangeAddress); 
    var tr = t.range; 
    if (t.oldValue != tr.getValue() && t.oldValue != undefined) { 
    if (RangeIntersect(tr, myr)) { 
     var cr = ss.getRange(tr.getRow(),1,1,ss.getLastColumn()); 
     cr.setBackgroundRGB(200, 200, 200); // change if needed 
    } 
    } 
} 
} 


function RangeIntersect(R1, R2) { 

    var LR1 = R1.getLastRow(); 
    var Ro2 = R2.getRow(); 
    if (LR1 < Ro2) return false; 


    var LR2 = R2.getLastRow(); 
    var Ro1 = R1.getRow(); 
    if (LR2 < Ro1) return false; 

    var LC1 = R1.getLastColumn(); 
    var C2 = R2.getColumn(); 
    if (LC1 < C2) return false; 

    var LC2 = R2.getLastColumn(); 
    var C1 = R1.getColumn(); 
    if (LC2 < C1) return false; 

return true; 

} 

Oder kann einfach kopieren Spalte (E: E) Werte an den neben ihm coulmn (F: F) und stellen Sie Bedingte Formatierung Regel für alle Tabelle Bereich mit Ihrer Formel: =$E2<>$F2

+0

Danke für die Antwort, aber das scheint nur die aktuelle Zelle statt der Zeile zu markieren. Was muss ich ändern, um die Zeile zu markieren? –

+0

Bitte versuchen Sie es jetzt. Das ist ziemlich einfach. Ich habe gerade den Zielbereich im Skript bearbeitet, wo die Farbe geändert werden kann. Ich habe auch die Formel für die Datenvalidierung geändert, und es sollte auch funktionieren. –

+0

Danke nochmal, aber leider wird die Spalte anstatt der Zeile markiert. Ich bin nicht sicher, was der untere Teil des Codes tut, also kann ich ihn nicht selbst beheben. –

Verwandte Themen