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

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

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

まずは関数名を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”));

実行すると、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^)/