【GAS】同じ値のセルを自動で結合させたい (縦方向/垂直)コピペでOK
【Googleスプレッドシート】連続するセル同士を自動で結合させるスクリプトGAS(Google Apps Script)を書いてみました。縦方向(垂直)に連続する同じ値のセルを自動で結合させます。
空白とセル結合済みのセルは無視します。
(横方向/水平)は別の記事で書きました。
【GAS】同じ値のセルを自動で結合させたい (横方向/水平)コピペでOK
使い方
スプレッドシートの「拡張機能」から「Apps Script」を選択します。
開いた先の画面で、function から始まるコードを全て消します。
このページの一番下のコード「GAS(Google Apps Script)」を全部コピーして貼り付けて、
そのコードの一番上から2行目に書いてある
MergeVertically('B’,2,’D’,100);//B2:D100の範囲、
の( )内を、チェックして自動セル結合させたい範囲に書き換えます。
A1:C50の範囲を指定する場合、
MergeVertically('A’,1,’C’,50);
と書き換えてください。
最後に、フロッピー💾のマークを押して保存します。
スプレッドシートに戻って、
「拡張機能」⇨「マクロ」⇨「マクロをインポート」⇨ MergeVTestの 「 関数を追加」して、
右上の「✖︎」で閉じます。
「拡張機能」⇨「マクロ」⇨「MergeVTest」を選択してプログラムを実行します。
初めてプログラムを実行する場合、このような表示が出てきますので、「続行」を選択してください。
次の画面で「無題のプロジェクト(安全ではないページ)に移動」を選択します。
次の画面で「許可」を選択してから、もう一度、
「拡張機能」⇨「マクロ」⇨「MergeVTest」を選択してプログラムを実行します。
選択した範囲A1:C50の、縦方向に連続して同じ値のセル同士が自動的にセル結合されていきます。
ボタンで実行したい時は
「挿入」⇨「図形描画」から、
適当な図形を書いて、「保存して終了」
図形の右上あたりにある「・・・」を選択して、
「スクリプトを割り当て」、「MergeVTest」と入力して「OK」を押します。
あとは、その図形をクリックするだけでプログラムが実行されます。
縦方向に連続で同じ値のセル同士を結合するGAS(Google Apps Script
function MergeVTest(){ MergeVertically('B',2,'D',100);//B2:D100の範囲 } function MergeVertically(cell1,n1,cell2,n2){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getRange(cell1+n1+':'+cell2+n2); var values = range.getValues(); for (var col = 0; col < range.getNumColumns(); col++) {//列数分処理 var colA1= range.getColumn()+col;//列Noに1(col)ずつ足していくことで現在の列Noを代入 var mCount = 1; for (var row = 0; row < range.getNumRows(); row++) {//行数分処理 var rowA1 = range.getRow()+row;//行Noに1(row)ずつ足していくことで現在の行Noを代入 //次の値のnullチェック && 空白チェック && 結合済みチェック if(values[row + 1] && !sheet.getRange(rowA1+1,colA1).isBlank() && !sheet.getRange(rowA1+1,colA1).isPartOfMerge() ){ //次の値がnull/空白/結合済みじゃなければ、一致しているかチェック if (values[row][col]==values[row + 1][col] ) { mCount ++; // 一致していなくて mCountが1より大きい場合結合してmCountリセット }else if(mCount>1){//2行一致の時にmCount=2、3行一致の時に mCount=3、セルは値が一致している一番下のセルになる sheet.getRange(rowA1-mCount+1,colA1,mCount).mergeVertically();//(値が一致している一番上の行No,列No,結合する行数,結合する列数は1なので省略)を縦方向に結合 var mCount = 1;//結合セルカウントリセット } //次の値がnull/空白/結合済みで mCountが1より大きい場合は結合してmCountリセット }else if(mCount>1){//2行一致の時にmCount=2、3行一致の時に mCount=3、セルは値が一致している一番下のセルになる sheet.getRange(rowA1-mCount+1,colA1,mCount).mergeVertically();//(値が一致している一番上の行No,列No,結合する行数,結合する列数は1なので省略)を縦方向に結合 var mCount = 1;//結合セルカウントリセット //次の値がnull/空白/結合済みで mCountが1なら何もしない }else{} } } }
参考サイト
【GAS】スプレッドシートの結合機能まとめ【サンプルソース付】
セルを結合または解除する【Googleスプレッドシート】 | G Suite ガイド – G Suite ガイド:G Suite の導入方法や使い方を徹底解説!
ディスカッション
コメント一覧
まだ、コメントがありません