*当ブログではアフェリエイト広告を利用しています。

GAS

【GAS】セル範囲を思い通りに取得する方法!

momeq
モー
モー

今回は、GAS(Google Apps Script)でセルの範囲を取得する方法をやってみます。

この記事では、

  • GASで表の最後やデータの最後のセルまでを範囲指定をする方法
  • 少しずらした位置を指定する方法
  • 範囲指定でできること

を学びます。

【VBA】セルの範囲指定。自分の思い通りの範囲を指定する方法。

セルの範囲を取得する方法

getRange()で取得範囲を指定

モー
モー

まずは、基本となるgetRangeでの取得方法から。

ニャー
ニャー

getRangeの引数は色々あるから、指定すれば細かくできるんだにゃ。

  1. getRange(行番号, 列番号) => getRange(1, 1)
  2. getRange(行番号, 列番号, 行数) => getRange(1, 1, 13)
  3. getRange(行番号, 列番号, 行数, 列数) => getRange(1, 1, 13, 3)
  4. getRange(“R1C1形式”) => getRange(“A1:C13”)
function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  sheet.getRange(1, 1, 13, 3).activate();
}

getDataRange()でシートのデータが入っている場所を全て指定

getDataRangeを使えば、シート上のデータが入っている場所全てを選択できるんだにゃ。

ニャー
ニャー
//シート内の値が入っている範囲全て
function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  sheet.getDataRange().activate();
}
モー
モー

シート内でもデータが入っていれば、飛地のデータも拾ってきて範囲に入れるのがポイントですね。

getDataRegion()で指定したセルから繋がる範囲を指定

モー
モー

getDataRegionは指定したセルから繋がる範囲を指定できます。飛び地を指定するには、別にその場所を指定する必要がありますね。

//指定したセルから繋がる範囲
function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  sheet.getRange(1, 1).getDataRegion().activate();
}

指定したセルをずらす

Offset()でセルをずらす

ニャー
ニャー

Offsetでセルをずらせば、指定したくない場所からずらせるんだにゃ。

function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  sheet.getRange(1, 1).getDataRegion().offset(1, 1).activate();
}

getLastRow(),getLastColumn()で範囲を取得する

モー
モー

これは、上で紹介したgetRAngeの応用です。開始位置をずらせば、セルの範囲もずれます。

ニャー
ニャー

そして、getLastRow()で行数を、getLastColumn()で列数を取得して、増減させると好きな範囲を指定できるんだにゃ。

function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  let lastRow = sheet.getLastRow();
  let lastCol = sheet.getLastColumn();
  sheet.getRange(2, 2, lastRow - 1, lastCol - 1).activate();
}

セルを取得した後の処理

モー
モー

セルを取得後は、範囲の値を削除したり、コピーしたり、配列に入れて使ったりできます。

# 削除
function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  sheet.getDataRange().clearContent();
}
# コピー
function myFunction() {
  let sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  let sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート2");
 let lastRow = sheet.getLastRow();
  let lastCol = sheet.getLastColumn();
  sheet1.getRange(1, 5, lastRow, lastCol).copyTo(sheet2.getRange(1, 1));
}
# 配列に入れる
function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  let lastRow = sheet.getLastRow();
  let lastCol = sheet.getLastColumn();
  let rng = sheet.getRange(1, 1, lastRow, lastCol);
  let ary = rng.getValues()
  console.log(ary)
  sheet.getRange(1, 5, lastRow, lastCol).setValues(ary)  // 元の表の右側に出力
}

>> [ [ 1, 1, 1, '' ],
  [ 2, 2, 2, '' ],
  [ 3, 3, 3, '' ],
  [ 4, 4, 4, '' ],
  [ 5, 5, 5, '' ],
  [ 6, 6, 6, '' ],
  [ 7, 7, 7, '' ],
  [ 8, 8, 8, '' ],
  [ 9, 9, 9, '' ],
  [ 10, 10, 10, '' ],
  [ 11, 11, 11, '' ],
  [ 12, 12, 12, '' ],
  [ 13, 13, 13, '' ],
  [ '', '', '', '' ],
  [ '', '', '', 15 ] ]

【VBA】セルの範囲指定。自分の思い通りの範囲を指定する方法。

プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

TechAcademy [テックアカデミー]

モー
モー

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。

TechAcademyのおすすめポイント
  • オンラインで選抜された現役エンジニアから学ぶことができる
  • 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
  • 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている
ニャー
ニャー

無料体験や相談もあるから、一度試してみてもいいんだにゃ!

\無料体験、無料相談はこちらから/



記事URLをコピーしました