GAS開発者向けにスプレッドシートの結合機能をすべてまとめました。
表を作成する際、同じ値のセルを結合して1セルで表示したい時ってありますよね。
横方向に結合、縦方向に結合、結合確認や解除などです。必要な場面で柔軟に結合してみてください。
結合に関するメソッドをすべて載せてます。少しでも参考になれば幸いです。
Google Apps Script スプレッドシート 基礎 リファレンス
当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。
若干、文言がおかしい可能性がありますが、あらかじめご了承ください。
GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。
まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。
GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。
基本的な仕様やよく使われる機能の設定方法がまとまっています。
※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。
セル範囲クラス[Range]の結合設定
セル範囲のいろいろな結合メソッドです。
すべて結合[merge()]
merge()
範囲内のセルを1つのブロックに結合します。
function mergeSample() {
var sheet = SpreadsheetApp.getActiveSheet();
// 以下のコードはA1からB3のセルを2次元でマージします
sheet.getRange('A1:B3').merge();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | merge()
横方向に結合[mergeAcross()]
mergeAcross()
範囲の列をまたいで範囲内のセルを結合します。
function mergeAcrossSample() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// 下のコードはセルC5:E5を1つのセルに結合します
var range1 = sheet.getRange("C5:E5");
range1.mergeAcross();
// 次のコードは、2つの水平方向のセル、F5:H5とF6:H6を作成します。
var range2 = sheet.getRange("F5:H6");
range2.mergeAcross();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | mergeAcross()
縦方向に結合[mergeVertically()]
mergeVertically()
範囲内のセルを結合します。
function mergeVerticallySample() {
var sheet = SpreadsheetApp.getActiveSheet();
// 以下のコードはA1からA10までのセルを垂直方向にマージします
sheet.getRange('A1:A10').mergeVertically();
// 次のコードは3つの結合された列を作成します:B1からB10、C1からC10、そしてD1からD10
sheet.getRange('B1:D10').mergeVertically();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | mergeVertically()
セル範囲クラス[Range]の結合解除
セル範囲の結合解除です。
結合解除[breakApart()]
breakApart()
範囲内の複数列のセルを個別のセルに分割します。
範囲に対してこの関数を呼び出すことは、範囲を選択して「フォーマット」 - >「結合」 - >「結合解除」をクリックするのと同じです。
function breakApartSample() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:B3");
range.breakApart();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | breakApart()
セル範囲クラス[Range]の結合取得
セル範囲のいろいろな結合メソッドです。
結合セル取得[getMergedRanges()]
getMergedRanges()
現在の範囲内に完全に収まっているか、現在の範囲内に少なくとも1つのセルを含んでいる結合セルを表すRangeオブジェクトの配列を返します。
function getMergedRangesSample() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:B3");
var mergedRanges = range.getMergedRanges();
for (var i = 0; i < mergedRanges.length; i++) {
Logger.log(mergedRanges[i].getA1Notation());
Logger.log(mergedRanges[i].getDisplayValue());
}
}
Return
Range[] - 範囲と重なるマージされたセルを表すRangeオブジェクトの配列。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getMergedRanges()
セル範囲クラス[Range]の結合セル確認
セル範囲の現在セル結合判断です。
現在セル結合確認[isPartOfMerge()]
isPartOfMerge()
現在の範囲のセルがマージされたセルと重なる場合はtrueを返します。
function isPartOfMergeSample() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:B3");
// A1:B3のいずれかのセルがマージに含まれる場合はtrue
var isPartOfMerge = range.isPartOfMerge();
}
Return
Boolean - 範囲が結合されたセルと重なる場合はtrue、それ以外の場合はfalseを返します。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | isPartOfMerge()
セル範囲リストクラス[RangeList]の結合解除
セル範囲リストの結合解除です。
結合解除[breakApart()]
breakApart()
範囲リストに含まれる水平方向または垂直方向にマージされたセルをすべて個別のセルに分割します。
範囲リストでこの関数を呼び出すことは、一連の範囲を選択して[書式]> [結合]> [シートの結合解除]メニュー項目を選択するのと同じです。
function breakApartSample() {
var sheet = SpreadsheetApp.getActiveSheet();
var rangeList = sheet.getRangeList(['A:A', 'C:C']);
rangeList.breakApart();
}
Return
RangeList - 連鎖用のセル範囲リスト。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class RangeList | Methods | breakApart()
最後に
GAS結合機能のまとめをご紹介させていただきました。
必要に応じて、有益な情報でさらに更新していきたいと思います。
プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。
実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。
実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。
自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。
GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓
ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。
コメント