0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASで行ごとのデータを列ごとにする方法&Vlookup

Posted at

GASでgetDataRangeすると、行(横)ごとに配列になる問題

例えば

const sorceData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("参照");
const sorceVal = sorceData.getDataRange().getValues();

console.log(sorceVal);
//[['請求書ID','クライアント名','契約月','契約内容','金額'],
//['123456','○○','9月','○○契約','100万円'],・・・]

行でわけないで~となってしまうのを、forで列ごとに入れなおす。

function getColumn(vals,row){
  //すべての列をいれる配列
  column_arr =[]; 

  for(let i =0; i < vals[0].length; i++){
    //一列ごとに入れるようの配列
    column_arr[i] = [];

    for(let u =0; u < row; u++){
      column_arr[i][u] = vals[u][i];
    }
  }
  return column_arr;
}

上記の関数を使ってVLOOKUPできるようにしてみた

const wsData =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("結果");
const wsVal = wsData.getDataRange().getValues();
const wsRow_Num = wsData.getLastRow();

function lookup(){

  //行ごとに配列に入るデータを列ごとに配列に入れなおす
  let column_arr = getColumn(sorceVal,sorceRow_Num);
  let ws_column_arr = getColumn(wsVal,wsRow_Num);

  //wsdataのA列に検索キーワード 参照のA列にも同じキーワード
  //column_arr[0]にA列すべて


  //結果シートのA列をひとつずつelementにして
  ws_column_arr[0].map((element,index)=>{

    //参照シートのA列から同じものを探して、何行目にあるか(配列の何個めか)
    let matchRow_num = column_arr[0].indexOf(element); 

    //検索結果をいれる配列
    let result = [];

    //さらに一行ごとに入れる用の配列
    let result_sm = [];

    //indexOfで値が見つからなかったときは-1になる
    if(matchRow_num !== -1){

      // 参照シートの該当行の値をすべて配列に入れていく
      for(let i =1; i < column_arr.length; i++){
        result_sm.push(column_arr[i][matchRow_num]);
      }

    }else{
      //該当なしの場合はブランク
      result_sm.push("");
    }

    //横一行に配列を入れていく方法 配列をさらに配列でくくる
    result[index] = [result_sm];

    //できた配列を一行ずつ入れていく
    wsData.getRange(index+1,2,1,result[index][0].length).setValues(result[index]);
    
  });
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?