(Gスプレッドシート)複数の範囲を結合する方法

 Googleスプレッドシートで複数のセル範囲を結合する方法、言い換えれば表を縦方向や横方向に連結した結果を得る方法についてです。

縦方向に結合する方法

「{範囲1;範囲2}」の記法を使う方法

 次の画像では、B8セルに数式を入力して、B2:D5の範囲とF2:H4の範囲を縦に結合した結果を得ています。

 B8セル

={B2:D5;F2:H4}

 このように2つの範囲を「;」(セミコロン)でつないで波カッコで囲むことで、範囲を縦に結合した結果を得ることができます。
 画像は省略しますが、「{範囲1;範囲2;範囲3…}」のようにして3つ以上の範囲を結合することも可能です(以下の例でも同様)。



 ただし次の画像のように、列数が異なる複数の範囲(B2:D5は3列、F2:G4は2列)を結合しようとするとエラーになります。
 ここではH列に値がないので「={B2:D5;F2:H4}」としてしまえば適当な結果が得られますが、このような場合は次に紹介するVSTACK関数を使った方がよいです。

VSTACK関数を使う方法

 ここでも最初の例と同様にB8セルに数式を入力して、B2:D5の範囲とF2:H4の範囲を縦に結合した結果を得ています。

 B8セル

=VSTACK(B2:D5,F2:H4)

 VSTACK関数を使い、複数の範囲をカンマで区切って指定することで、範囲を縦に結合した結果を得ることができます。



 「{範囲1;範囲2}」の書き方と比べて簡潔でないのが欠点ですが、次の画像のように列数が異なる複数の範囲(B2:D5は3列、F2:G4は2列)でも結合できます。
 ただし表示させる値がない部分(ここではD12:D14の範囲)が#N/Aエラーになる点に注意してください。

 


 この#N/Aエラーを表示させたくない場合はIFNA関数を併用して次のようにします。

 B8セル

=IFNA(VSTACK(B2:D5,F2:G4),"")

 元の表に#N/Aエラーが含まれる場合それらも一緒に消えますが、実用上は特に問題ないだろうと思います。

横方向に結合する方法

「{範囲1,範囲2}」の記法を使う方法

 次の画像では、F2セルに数式を入力して、B2:D4の範囲とB7:C9の範囲を横に結合した結果を得ています。

 F2セル

={B2:D4,B7:C9}

 このように複数の範囲をカンマでつないで波カッコで囲むことで、範囲を横に結合した結果を得ることができます。



 ただし次の画像のように、行数が異なる複数の範囲(B2:D4は3行、B7:C8は2行)を結合しようとするとエラーになります。
 ここでは9行目に値がないので「={B2:D4,B7:C9}」としてしまえば適当な結果が得られますが、このような場合は次に紹介するHSTACK関数を使った方がよいです。

HSTACK関数を使う方法

 1つ上の例と同様にF2セルに数式を入力して、B2:D4の範囲とB7:C9の範囲を縦に結合した結果を得ています。

 F2セル

=HSTACK(B2:D4,B7:C9)

 HSTACK関数を使い、複数の範囲をカンマで区切って指定することで、範囲を横に結合した結果を得ることができます。



 次の画像のように行数が異なる複数の範囲(B2:D4は3行、B7:C8は2行)でも結合できます。
 ただし表示させる値がない部分(ここではI4:J4の範囲)が#N/Aエラーになる点に注意してください。

 


 #N/Aエラーを表示させたくない場合はIFNA関数を併用して次のようにします。

 F2セル

=IFNA(HSTACK(B2:D4,B7:C8),"")

 ただし元の表に含まれる#N/Aエラーも一緒に消えます。

同時に縦横に結合する場合

 縦に結合する方法と横に結合する方法を組み合わせることも可能です。
 次の画像では4つの表をまとめて1つにしています。

 B10セル

={B2:C3,E2:G3;B6:C7,E6:G7}

 「B2:C3,E2:G3」と「B6:C7,E6:G7」でそれぞれ2つの範囲を横に結合し、それらを「;」でつないで縦に結合しています。
 縦に結合してから横に結合する、と考えれば「={B2:C3;B6:C7,E2:G3;E6:G7}」でもよさそうに思えますが、それはエラーになります。



 VSTACK関数とHSTACK関数を使うと次のようになります。

 B10セル

=VSTACK(HSTACK(B2:C3,E2:G3),HSTACK(B6:C7,E6:G7))

 2つのHSTACK関数でそれぞれ2つの範囲を横に結合して、さらにVSTACK関数で縦に結合しています。
 なお「=HSTACK(VSTACK(B2:C3,B6:C7),VSTACK(E2:G3,E6:G7))」でも同じ結果になります。