例えば、列に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^)/