2017-08-17 1 views
0

私は "A1" = "c"でセルの値を持っていて、 "B"で一致させたい別の値を持っている場合など、単純なループのアイデアを持っています:B "。Googleスプレッドシートにマルチループを適用する方法

var lastRow = targetSheet.getLastRow(); 
var match = sheet.getRange("A1").getValue(); 

var dataRange = targetSheet.getRange(B1:B5).getValues(); //doubt here too 
for(var i=0;i<dataRange.length;i++) { 

    if(dataRange[i][0] == match) 
{ Do something } 
         } 

    A  B 
------------ 
1 c  x 
2   c 
3   b 

しかし、一致する複数の値がある場合、同じ方法を実行する方法は非常に分かりません。

A  B 
1 z  x 
2 x  c 
3 c  b 
4 v 
5 b 

何かお手数ですが、

+0

一致するものがある場合は{{何か}}の値を一致させたいです。例えば、列Bにxが見つかった場合、列Bで{見つかった場合は何か} {何か他のこと}を実行します。私のコードはAからBまでの値と一致していなければなりません。まず、z、x、cなどを探します。それぞれの試合で{何か}する。 – Mask

+0

しかし、値 "A"が列AとBの両方にある場合、または列Aの値が列Bに存在する場合に実行するアクションを定義したい場合は、明示的な処理を行いますか? – Casper

+0

列Aの値が列Bに存在するときに実行するアクションを定義したいだけです。 – Mask

答えて

3

私はこれを正確に理解していれば、Aという列をループしたいのですが、そこに設定値がある場合は、B列の同じ値を探したいとします。これは、ループ内のループの単純な問題です。私は機能を改正している依頼者ごとに:あなたは1つのアレイ

function myFunction() { 
    var sheet = SpreadsheetApp.getActiveSheet() 
    var values = sheet.getRange(1, 1, sheet.getLastRow(), 2).getValues() //this will get columns A and B until the last row with data into a 2D array 

    var i, ii; 

    for (i = 0; i < values.length; i++) { 
    if (values[i][0] == '') break; // if first column is empty we stop looking for the next one, you can get rid of this 

    for (ii = 0; ii < values.length; ii++) { 
     if (values[ii][1] == '') break; //if last entry reached we stop, same as before 

     if (values[i][0] == values[ii][1]) { 
     /* This is the part where you do what you want 
     to do when you find a match, for example change background to red */ 
     sheet.getRange(ii + 1, 2).setBackground('red') 
     } 
    } 
    } 
} 

EDITで2列があるとしましょう。これは本質的にあなたのifステートメントの違いです.Bコラムに何かが存在するかどうかを確認するだけで、最初のループにはifは必要ありません。私がそこに置いたのは、列Aに3つの項目がありますが、列Bに7つの項目があるとします。逆のシナリオでも同じことです。それ以外の場合は、forの直後にif文を取り除くことができます。これは、getLastRow()がシート上のデータを持つ最後の行を取るために行われます。列Aに3つの値があり、列Bに7の値しかないがC10の値がある場合は、getLastRow() = 10ということに注意してください。

+0

ヘルプVytautasに感謝します! – Mask

+0

しかし、 "chkVal"は変数ではなく、列A自体からの値でなければなりません。あなたの答えを編集してください。 – Mask

+0

@Maskなので、明らかにするには、列Aの各値がループBの列に存在するかどうかチェックしますか? – Vytautas

関連する問題