いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)行と列を入れ替える方法

 Googleスプレッドシートで、表の行列を入れ替える(転置する)方法についてです。

  • 表をコピーし、貼り付け先で右クリックしてメニューから「特殊貼り付け」→「転置して貼り付け」を選択すると、表の行列を入れ替えた結果を貼り付けられます。
  • TRANSPOSE関数で行列を入れ替えることもできます。元の表の書式は反映されませんが、値の変更は反映されます。

入れ替えの効果について

 まず「行列を入れ替える」ことの意味ですが、具体的には次の画像で左の表(データ)の行列を入れ替えたのが右の表です。
 左の表のそれぞれの列(縦の並び)が右の表では行(横の並び)に変換されています。また、左の表のうち左(右)の方にある列ほど右の表では上(下)の行に変換されているのがわかります。
 なお、入れ替えを2回行うと元の表に戻ります。つまり右の表の行列を入れ替えると左の表に戻ります



 表の見やすさやデータとしての扱いやすさを改善する目的で多用され、重要な操作の一つです(ただし次の画像のようなデータでは、右のような表の行列を入れ替えて左のような表にするケースが多いです。一般にデータが増えるにつれ右に伸びていくタイプの表は扱いにくいからです)。
 しかし手作業でやろうとすると非常に手間がかかるのがポイントです。

手順

 メニューによる方法と関数による方法を紹介します。
 メニューによる方法では実行後に元の表の値を変更しても反映されず、関数では反映されますので、目的に応じて使い分ける必要があります。

「転置して貼り付け」メニューを使う方法

 まずは対象となる範囲(B2:D6)を選択してコピーします。
 やり方としてはCtrl+Cのショートカットや、右クリックして「コピー」を選択する方法があります。



 続いて貼り付け先(F2)セルで右クリックし、メニューから「特殊貼り付け」→「転置して貼り付け」を選択します。



 以上で完了です。
 元の表の書式も含めて貼り付けられます。しかしこれ以降元の表に変更があっても、貼り付け先には一切反映されません。 
 備考ですがコピーではなく切り取り(Ctrl+X)を使っても切り取りにならず元の表が残ってしまうため、元の表の位置で貼り付けを行うと見づらい結果になります。

TRANSPOSE関数を使う方法

  F2セルに次の式を入力します。

=TRANSPOSE(B2:D6)

 TRANSPOSE関数は、行列の入れ替えのための関数で、対象となる表の範囲(B2:D6)を指定するだけで入れ替えを行えます。
 古いExcelではCtrl+Shift+Enterで確定しなければならず扱いにくい関数でしたが、Googleスプレッドシート(及び最近のExcel)では普通にEnterで確定すればOKです。



 確定すると行列を入れ替えた結果が表示されます。
 関数による結果ですので元の表の書式までは反映されません。



 しかし元の表の値に変更があれば直ちに反映されます。