irrlicht tool

オフィスワークで役立つ知識の備忘録です

GAS[Google Apps Script]二次元配列で特定ワードを含む行削除、昇順並び替え、不要列削除、空白行削除


  function test() {
  var AS = SpreadsheetApp.getActiveSheet()  // アクティブシートを選択
  var lastRow = AS.getLastRow()  // 入力最終行を調べる
  const original = AS.getRange(1, 1, lastRow, 8).getValues()  // ここでは8列を二次元配列に格納


  // 不要行を削除 不参加予定の人の行は消す ///////////
    for (var i = 0; i < original.length; i++) {
    if (original[i].indexOf("*不参加*") === -1) continue  // ワイルドカードアスタリスクで部分一致を選別して削除
    original.splice(i, 1)
    i--
  }

    for (var i = 0; i < original.length; i++) {
    if (original[i].indexOf("*欠席*") === -1) continue  // 二つ目のワードを追加したい時はforからの一連を追加
    original.splice(i, 1)
    i--
  }


  // 格納した出席者のフリガナ列をアイウエオ順に並び替え ///////////
  original.sort(sorting_asc)   // ascは昇順です。降順ならdesc
  function sorting_asc(a, b){
  if(a[6] < b[6]){   // ここではフリガナ列は7列目にあります
  return -1
  }else if(a[6] > b[6] ){
  return 1
  }else{
  return 6
  }
  }


  // 不要列を削除 ///////////
  var DeleteColumn1 = [0, 1, 2, 3, 4, 5]   // ここでは1~6列目は用が無くなったので削除して列を詰めます
  for(var i=0; i<original.length; i++){
  for(var j=0; j<DeleteColumn1.length; j++){
  original[i].splice(DeleteColumn1[j]-j, 1)
  }
  }


  // 空白行があったら削除して original2 へ格納 ///////////
  var original2 = original.filter(v => v[0])


  // 貼り付け
  activespreadsheet.getRange(1, 10, original2.length, original2[0].length).setValues(original2)

 }


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

スプレッドの出席名簿を参加者のみピックアップ→アイウエオ順に並び替えて貼り付けを、二次元配列で処理するスクリプトです

コードで指定したい範囲は仮なので書き換えてください

最初と最後の、配列の格納と貼り付けは下記で説明しています↓

irrlicht-tool.hateblo.jp

 

スプレッドは断然、二次元配列を使ったほうがいいです

セル一つ一つの情報を逐一グーグル先生に聞いて処理するので、

セルの数が多いほど時間がかかります

ローカルで動かすエクセルVBAとは速度が天と地の差です

そのかわり二次元配列のコードの解読はわかりやすい方なので、

これぐらいはクリアしないと他の言語は厳しいと思います

VBAの二次元配列は、入れ子が地獄で難しい印象です...)