【GAS】セル内消去。シートかセルで挙動が異なるので注意!
momeq
muchi-no-chi
*当ブログではアフェリエイト広告を利用しています。
今回は、GAS(Google Apps Script)でセルの範囲を取得する方法をやってみます。
この記事では、
を学びます。
【VBA】セルの範囲指定。自分の思い通りの範囲を指定する方法。
まずは、基本となるgetRangeでの取得方法から。
getRangeの引数は色々あるから、指定すれば細かくできるんだにゃ。
function myFunction() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
sheet.getRange(1, 1, 13, 3).activate();
}
getDataRangeを使えば、シート上のデータが入っている場所全てを選択できるんだにゃ。
//シート内の値が入っている範囲全て
function myFunction() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
sheet.getDataRange().activate();
}
シート内でもデータが入っていれば、飛地のデータも拾ってきて範囲に入れるのがポイントですね。
getDataRegionは指定したセルから繋がる範囲を指定できます。飛び地を指定するには、別にその場所を指定する必要がありますね。
//指定したセルから繋がる範囲
function myFunction() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
sheet.getRange(1, 1).getDataRegion().activate();
}
Offsetでセルをずらせば、指定したくない場所からずらせるんだにゃ。
function myFunction() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
sheet.getRange(1, 1).getDataRegion().offset(1, 1).activate();
}
これは、上で紹介した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(テックアカデミー)ですね。
無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/