2016-04-04 7 views
0

現在Googleスプレッドシートを使用して在庫在庫システムを作成していますが、最終的なハードルで問題に突き当たりました。私は行の色などを調整するために条件付き書式を使用しています...特定のドロップダウンオプションが「カートで更新されましたか?しかし、(QTYの)セルが変更されたとき/現在の値(特定の値だけではない)から更新されたときを検出するためには、スクリプトが必要です(条件付き書式設定を使用することはできません)。セルの数値が変更されたことを検出して行の色を変更するスクリプトが必要です

私は、25ページのGoogleと、StackOverflowの無数の記事を無駄にしているように感じました。

これは現時点でのシステムのイメージです。

Image of stock sheet

ユーザが在庫品目の数量を変更するときに、基本的に、行の色を変更しなければなりません。

誰かが私が使用できるスクリプトを知っている場合、Google Spreadsheetのソリューションの正しい方向に向けることができます。

+0

ExcelソリューションまたはGoogleスプレッドシートが必要ですか? – BruceWayne

+0

Googleスプレッドシートソリューションです。 –

答えて

0

いくつかのスクリプトは助けることができる:

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; 

} 

それとも列(E:E)をコピーすることもcoulmnその隣に値(F:F)を、すべてのための条件付き書式ルールを設定しますテーブル範囲数式:=$E2<>$F2

+0

答えをいただきありがとうございますが、これは行の代わりに現在のセルをハイライト表示しているようです。行を強調表示するために変更する必要があるのは何ですか? –

+0

今すぐ試してください。それはかなり簡単です。私はスクリプト内で色を変更する場所を編集しました。また、データのバリデーションの式も変更しました。 –

+0

もう一度おねがいしますが、残念ながら列は行の代わりに強調表示されています。私はコードの下の部分が何をしているのか分からないので、自分でトラブルシューティングすることはできません。 –

関連する問題