2017-01-05 2 views
1

列Aの番号が列Bの文字列にある場合は、対応する行全体を非表示にします。リストはかなり長く、データは次のようになります。文字列と非表示行の検索列

Column A  Column B 
1234   3456/4532 
5678   3456/333/1234 
2222   3456/6666

行2は非表示になります。 それを理解できないようです。

function test() 
{ 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var data = sh.getDataRange().getValues(); // read all data in the sheet 
    for(n=0;n<data.length;++n) // iterate row by row and examine data 
    { 
    if(data[n][0].toString().match(data[n][1])==data[n][1]) 
    { 
     sh.hideRows(n); 
    } 
    } 
} 

答えて

1

これを試してみてください:を注意する

for(var i=0; i<data.length; i++) 
    { 
    for(var j=0; j<data.length; j++) 
    { 
     if(data[j][1].toString().indexOf(data[i][0]) >= 0) 
     { 
     sh.hideRows(j+1); 
     } 
    } 
    } 

一つのこと:

変数 'SH'(すなわちSpreadsheetApp.getActiveSheet())が開始インデックス(1 'SH' にシートを格納します、 1)、これはA1セルですが、 'data'変数はスプレッドシートを 'data'の内部に2D配列として格納し、A1は(0,0)とみなします。

したがって、sh.hideRows()を使用する場合は、シートの2行目をインデックス「2」にし、「1」にしないでください。だから私は 'j + 1'を使ったのです。

+0

ありがとうございます!素晴らしい仕事を! – John

+0

あなたの質問が解決される場合は、回答として受け入れることができます。 :) –