Menu

Excelで行と列を入れ替える: TRANSPOSE関数と貼り付け

=TRANSPOSE(A1:D3)はA1:D3の行を列に変え、元のデータとつながったままになります。一度きりのコピーなら、形式を選択して貼り付け > 行列を入れ替える を使います。TOCOLはマス目全体を1つの列に積み重ねます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

Excelで行と列を入れ替えるには、結果を始めたい場所に=TRANSPOSE(A1:D3)と入力します。A1:D3の1行目が結果の1列目になります。結果はつながったままなので、元のデータの数値を変えるとコピーの数値も変わります。B2を50に変えて、B6がそれに合わせて変わるのを確かめてください。

横に並んだ四半期を縦に
A5
ABCD
1RepQ1Q2Q3
2Ann10129
3Ben81114
4
5RepAnnBen
6Q1108
7Q21211
8Q3914
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

元のデータは3行4列なので、結果は4行3列になります。Excel 2021とMicrosoft 365では、TRANSPOSEはスピルします。1つのセルに入力してEnterを押すだけです。

形式を選択して貼り付けで行列を入れ替える

入れ替えた表が一度だけ必要なら、形式を選択して貼り付けのほうが手早く、数式も残りません:

  1. 範囲を選択してコピーします(Ctrl+C、MacではCmd+C)。
  2. コピーした範囲の外で、結果を置きたい場所の左上のセルをクリックします。
  3. ホームタブで「貼り付け」の下の矢印をクリックして「行/列の入れ替え」を選ぶか、Ctrl+Alt+V(MacではCmd+Ctrl+V)を押して「行列を入れ替える」にチェックを入れ、OKをクリックします。

Windowsでは、コピーした後にAlt、H、V、Tの順にキーを押しても同じです。貼り付けたコピーは書式を保ちますが、つながってはいません。元のデータが変わったら、もう一度貼り付けます。Excelはコピーした範囲の中の数式を新しい位置に合わせて調整します。相対参照を使っている数式は確認するか、数値だけが必要なら値として貼り付けてください。

TRANSPOSE関数の構文

=TRANSPOSE(array)

引数は入れ替える範囲か配列の1つだけです。TRANSPOSEは昔からExcelにありますが、Excel 2021より前は配列数式です。先に正しい形の貼り付け先(上の例なら4行3列)を選択し、数式を入力してCtrl+Shift+Enter(MacではCmd+Shift+Enter)を押します。するとExcelは数式を中かっこで囲んで{=TRANSPOSE(A1:D3)}と表示します。Excel 2021とMicrosoft 365では普通にEnterを押すだけで済み、邪魔になる値があると#SPILL!になります。

GoogleスプレッドシートにもTRANSPOSEがあり、同じようにスピルします。

列を行に変える

同じ関数で1つの列を行に変えられます。たとえば名前のリストを列見出しにする場合です:

名前の列が行になる
C2
ABCDEFG
1Name
2AnnAnnBenCaraDanEve
3Ben
4Cara
5Dan
6Eve
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

C2はAnnからEveまでをC2:G2に横にスピルします。数式が読むのはA2:A6なので、A7に名前を足しても含まれません。含めるには範囲をA2:A7かそれ以上に広げます。

TRANSPOSEで空白のセルが0になる理由

空のセルを指す数式は0を返し、TRANSPOSEも同じです。下のシートでは3月の売上がないので、そのままの数式では元が空の場所に0が表示されます:

空白のセルが0になる
D4
ABCDE
1MonthJanFebMarApr
2Sales12095150
3
4MonthSalesMonthSales
5Jan120Jan120
6Feb95Feb95
7Mar0Mar
8Apr150Apr150
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

B7はMarに0を表示します。2つ目の数式は先にIFで空のセルをそれぞれ空の文字列に変えるので、E7は空白のままです。D2に数値を入力すると、どちらの数式にもそれが表示されます。

複数の行を1つの列にまとめる

マス目全体を1つの列に積み重ねるには、TOCOL(Microsoft 365とExcel 2024)を使います。TOCOLは範囲を1行ずつ読み、TOROWは同じことを1つの行に対して行います:

1つの列に積み重ねたマス目
F2
ABCDEF
1RepQ1Q2Q3All values
2Ann1012910
3Ben8111412
49
58
611
714
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

F2は、Annの行から10、12、9を、続いてBenの行から8、11、14を並べます。代わりに各列を下方向に読むには、3つ目の引数をTRUEにします:=TOCOL(B2:D3,,TRUE)。=TOCOL(B2:D3,1)は空のセルを飛ばします。

練習: 月を横ではなく縦に

やってみよう
A5
ABCDE
1MonthJanFebMarApr
2Sales1209580150
3
4Months down
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: A5で、A1:E2の表の向きを変え、月がA列の下方向に、売上がB列の下方向に並ぶようにしてください。

TRANSPOSEか、行方向の検索か

横に長い表にVLOOKUPを使うためだけに行列を入れ替える人がよくいます。その必要はありません。HLOOKUPとXLOOKUPは行を直接探します。=XLOOKUP("Mar",B1:E1,B2:E2)は、上の横長の表から何も入れ替えずに3月の売上を返します。行列を入れ替えるのは、グラフ、レポート、1行に1件のデータを求めるシステムのように、レイアウトそのものを変えなければならないときです。

よくある質問

Excelで行と列を入れ替えるには?

範囲をコピーし、結果を始めたいセルを右クリックして、形式を選択して貼り付け > 行列を入れ替える を選びます(Ctrl+Alt+Vを押してからE、Enter)。これは固定のコピーを貼り付けます。元のデータと一緒に更新されるコピーにするには、貼り付け先のセルに=TRANSPOSE(A1:D3)と入力します。

TRANSPOSEで空のセルが0になるのはなぜですか?

空のセルを参照する数式は0を返し、TRANSPOSEも例外ではないからです。先に空のセルを空の文字列に置き換えます:=TRANSPOSE(IF(A1:E2="","",A1:E2))。

Excel 2019以前でTRANSPOSEを使うには?

行と列を入れ替えた大きさの貼り付け先(3行4列の元データなら4行3列)を選択し、=TRANSPOSE(A1:D3)と入力してCtrl+Shift+Enter(MacではCmd+Shift+Enter)を押します。Excel 2021以降はEnterだけで済みます。

複数の行を1つの列にするには?

Microsoft 365かExcel 2024でTOCOLを使います。=TOCOL(B2:D3)は範囲を1行ずつ読み、すべての値を1つの列に積み重ねます。=TOCOL(B2:D3,1)は空のセルを飛ばし、TOROWは同じことを1つの行に対して行います。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める