例えば、列に123123・・・と並んでいる場合。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180037-00-1.jpg?resize=1024%2C654)
この列の2・3を行側に動かしたい・・・と思った時。2~3回なら良いかもしれませんが、100回・200回と続くと、手作業での移動は、時間が勿体ないです。 こんな時は、GASの出番です。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180037-01.jpg?resize=950%2C594)
まずは、スクリプトエディタを開きます。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180044-00.jpg?resize=687%2C363)
まずは関数名をCellMoveなどわかりやすい名前に変更して、次に、毎度おまじないのvar sheet=SpreadsheetApp.getActiveSheet();でアクティブシートを取得します。
function CellMove() {
//アクティブシートを取得
var sheet=SpreadsheetApp.getActiveSheet();
moveTo(target)
セル範囲を切り取り&貼り付けする。
引数
名前 | 型 | 説明 |
target | Range 型 | 貼り付け先のセル範囲 |
戻り値
無し。
例:A1をB1に切り取り&貼り付け
//A1のセルを B1 セルに切り取り&貼り付けsheet.getRange(“A1”).moveTo(sheet.getRange(“B1”));
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180136-00.jpg?resize=905%2C431)
実行すると、A1のセルが切り取られ、B1に貼り付けされます。が、これだとセルひとつで実行が終わってしまいます。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180128-00-1.jpg?resize=770%2C405)
「2番目」を右に1・上に1、「3番目」を右に2・上に2、動かします。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180149-00.jpg?resize=989%2C460)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180151-00.jpg?resize=876%2C466)
あとは、これをループさせて、末尾まで繰り返せば完了です。
getLastRow();
最終行を取得します。
sheet.getLastRow();
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180223-01.jpg?resize=916%2C358)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180223-00.jpg?resize=1024%2C615)
最終行までループで回す
for(var row = 1; row <= sheet.getLastRow(); row++) {
2と3の規則性を導き出す
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180234-00.jpg?resize=516%2C434)
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ずらす
}
}
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180238-00.jpg?resize=843%2C274)
つまり。
2の場合は「3で割ったら2余る」の場合
3の場合は「3で割ったら余り0」の場合
という条件で分岐ができそうです。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180239-00.jpg?resize=616%2C187)
if(row % 3 === 2){
セルを右に1,上に1ずらす
}else if(row % 3 === 0){
せるを右に2,上に2ずらす
}
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180243-00.jpg?resize=735%2C240)
あとは、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));
}
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202002180246-00.jpg?resize=832%2C243)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/movie2-200218.gif?resize=737%2C651)
できました!!
まとめ
条件分岐のところでちょっと躓きましたが、割る=余り、の発想が出ればクリアできます!
ご参考下さい(^o^)/