エグウェブ.JP@福岡/WEBセミナー・分析・WEBサイト制作

福岡でWEB分析・ホームページ・WEBサイト作成・WordPress、Googleアナリティクス、LINEスタンプ、Photshop・illustrator、Excelの講座やセミナーを開催

【GoogleAppsScript(GAS)入門】セルの位置や順番を並び替える方法|moveTo(target)

time 2020/02/18

例えば、列に123123・・・と並んでいる場合。

この列の2・3を行側に動かしたい・・・と思った時。2~3回なら良いかもしれませんが、100回・200回と続くと、手作業での移動は、時間が勿体ないです。 こんな時は、GASの出番です。

まずは、スクリプトエディタを開きます。

まずは関数名をCellMoveなどわかりやすい名前に変更して、次に、毎度おまじないのvar sheet=SpreadsheetApp.getActiveSheet();でアクティブシートを取得します。

function CellMove() {
//アクティブシートを取得
var sheet=SpreadsheetApp.getActiveSheet();

moveTo(target)

セル範囲を切り取り&貼り付けする。

引数

名前説明
targetRange 型貼り付け先のセル範囲

戻り値

無し。

例:A1をB1に切り取り&貼り付け

//A1のセルを B1 セルに切り取り&貼り付けsheet.getRange(“A1”).moveTo(sheet.getRange(“B1”));

実行すると、A1のセルが切り取られ、B1に貼り付けされます。が、これだとセルひとつで実行が終わってしまいます。

「2番目」を右に1・上に1、「3番目」を右に2・上に2、動かします。

あとは、これをループさせて、末尾まで繰り返せば完了です。

getLastRow();

最終行を取得します。

sheet.getLastRow();

最終行までループで回す

for(var row = 1; row <= sheet.getLastRow(); row++) {

2と3の規則性を導き出す

for(var row = 1; row <= sheet.getLastRow(); row++) {
if(2、2+3、5+3、8+3・・・の時){
セルを右に1,上に1ずらす
}else if(3、3+3、6+3・・・の時){
セルを右に2,上に2ずらす
}
}

つまり。

2の場合は「3で割ったら2余る」の場合
3の場合は「3で割ったら余り0」の場合

という条件で分岐ができそうです。

if(row % 3 === 2){
セルを右に1,上に1ずらす
}else if(row % 3 === 0){
せるを右に2,上に2ずらす
}

あとは、moveToでそれぞれセルを動かしてあげれば完了です!

if(row % 3 === 2){
sheet.getRange(row,1).moveTo(sheet.getRange(row-1,2));
}else if(row % 3 === 0){
sheet.getRange(row,1).moveTo(sheet.getRange(row-2,3));
}

できました!!

まとめ

条件分岐のところでちょっと躓きましたが、割る=余り、の発想が出ればクリアできます!

ご参考下さい(^o^)/

download

プロフィール

EGUWEB

EGUWEB

【皆さまの人生に最良のファーストステップを】WEBサイトを作りたい!WEB分析を学びたいけど分からない。とりあえず色々と知りたい!皆様の悩みを解決できるように頑張ります。 [詳細]

カテゴリー