タカヒロ@extanExcel表で行と列を入れ替える方法!最終行取得も!Excel関数/VBAで行と列を入れ替えたいときはないでしょうか。VBAで行と列を入れ替えたいが方法がよくわからないですよね。別のシートの表の行と列を入れ替えるVBAの実装手順VBAを実行するさいごにExcel関数/VBAで行と列を入れ替えるイメージExcel関数/VBAで行と列を入れ替えるイメージについて説明をします。以下のような表があり、隣に行と列を入れ替えた表に変換していきます。ワークシート関数を一個のセルに入力すると、一瞬で行と列が入れ替わります。最終行を自動取得するようにすれば、元表のデータの増減があったとしても漏れなく変換することが可能です。続いてワークシート関数と同様の処理をVBAでも実現できるようにしていきます。数式ではなく直接値を代入することができます。最終行を自動取得していますので、同様に漏れがなく変換ができます。別のシートに対しても行と列の変換処理が可能です。実装して試してみましょう。行と列を入れ替える表を用意するExcel関数とVBAで行と列を入れ替える対象となる表を用意しましょう。サンプルではA、B、C列にそれぞれ値を入力し、関数とVBAを用いて、E1セルを基点に行と列を入れ替えた表を挿入するようにしていきます。Excel関数で行と列を入れ替えるExcel関数で行と列を入れ替える方法について説明をします。行と列を入れ替える処理を行う関数はTRANSPOSE関数となります。書式は以下の通りです。配列で指定された範囲のデータの行列変換を行います。配列:行列変換したいデータの範囲を指定します。TRANSPOSE関数に行列を入れ替えたい範囲を引数に指定するだけで、その範囲の行と列を入れ替えることができます。数式は1行のみで個々に数式を入力する必要はありません。これをExcelではスピルと呼んでいます。具体的には引数の配列に指定したセルの範囲を数式配列として取り扱い、関数側で自動展開される形となります。タカヒロExcelのスピル機能はMicrosoft365からの対応となり、それ以前のバージョンでは使用できないことご了承ください。TRANSPOSE関数を使って行と列を入れ替えてみましょう。TRANSPOSE関数で行と列を入れ替える先ほど用意したサンプル表でTRANSPOSE関数を使い行と列を入れ替えてみましょう。E1セルを基点に行と列を入れ替えた表を挿入するようにしていきますので、E1セルに以下の数式を入力します。=TRANSPOSE(A1:C6)はい、行と列が入れ替えられましたね。TRANSPOSE関数で最終行を取得し行と列を入れ替える次にTRANSPOSE関数で最終行を自動的に取得し行と列を入れ替える方法について説明をします。している値は固定値であるため、当然ながら行列入れ替えの対象から外れる形となります。この場合は、再度指定範囲を手動で変更する必要がありますが、都度変更することは少々面倒ですよね。そこで、元の表の最終行を自動取得するようにして、範囲を動的に変更させ、手入力する手間を省いていきたいと思います。数式は以下の通りとなります。=TRANSPOSE(INDIRECT("A2:C"&COUNTA(A:A)))数式をE1セルに入力してみましょう。はい、最終行の自動取得がされ、漏れがなく変換されていますね。表のA列の値がある件数をカウントします。COUNTA(A:A)次に”A1:C”と最終行となるカウント値を結合し、INDIRECT関数で文字列を数式として認識させます。INDIRECT("A1:C"&VBAで行と列を入れ替えるVBAで行と列を入れ替える方法について説明をします。VBAコードVBAは以下の通りです。'取得対象範囲を指定します。'貼り付け先のセルを指定します。'指定範囲のセルをコピーします。'コピーしたデータを行列入れ替えモードで指定セルへペーストします。'カットコピーモードを解除します。行と列を入れ替えるVBAの設定内容について説明をします。取得対象範囲を指定します。"A1:C6"貼り付け先のセルを指定します。行と列を入れ替えるVBAの実装方法についてはVBAの実装手順をご参照ください。VBAを実行VBAを実行しましょう。はい、行と列が入れ替わり、値として挿入されていますね。行と列を入れ替えるVBAについて説明をします。指定範囲のセルをコピーします。Range(strRange).Copyコピーしたデータを行列入れ替えモードで指定セルへペーストします。Transpose:=Trueカットコピーモードを解除します。FalseVBAで最終行を自動取得し行と列を入れ替える続いてVBAで最終行を自動取得し行と列を入れ替えるよう変更を加えていきたいと思います。VBAコードVBAは以下の通りです。'最終行数取得の基準となる列を指定します。'取得対象範囲を指定します。最終行は自動取得した値を入れますので除いてください。'貼り付け先のセルを指定します。'指定範囲のセルをコピーします。'コピーしたデータを行列入れ替えモードで指定セルへペーストします。'カットコピーモードを解除します。最終行を自動取得し行と列を入れ替えるVBAの設定内容について説明をします。最終行数取得の基準となる列を指定します。"A"タカヒロ最終行判定はキーとなっている項目が望ましいでしょう。取得対象範囲を指定します。最終行は自動取得した値を入れますので除いてください。"A1:C"貼り付け先のセルを指定します。行と列を入れ替えるVBAの実装方法についてはVBAの実装手順をご参照ください。VBAを実行VBAを実行しましょう。はい、最終行が自動判定され漏れがなく行と列が入れ替わり、値として挿入されていますね。行と列を入れ替えるVBAについて説明をします。End(xlUp).Rowで最終行数を取得し、文字結合して範囲設定し、その指定範囲のセルをコピーします。Rows.Count).End(xlUp).Row).Copyコピーしたデータを行列入れ替えモードで指定セルへペーストします。Transpose:=True別のシートの表の行と列を入れ替える最後に別のシートの表の行と列を入れ替えをしてみましょう。設定は'指定範囲のセルをコピーします。Rows.Count).End(xlUp).Row).Copy'コピーしたデータを行列入れ替えモードで指定セルへペーストします。Transpose:=Trueを以下のようにシート指定するだけです。サンプルのシート名は”Sheet2”としています。'指定範囲のセルをコピーします。Rows.Count).End(xlUp).Row).Copy'コピーしたデータを行列入れ替えモードで指定セルへペーストします。Transpose:=TrueVBAを実行してみましょう。実装手順は以下の通りです。Excel側にVBAを実装していきます。1Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。ショートカットキー「Alt」+「F11」でもOKです。2標準モジュールを追加します。モジュール」を選択します。3右ペインのウインドウに上記のVBAを入力します。VBAを実行するでは早速VBAの実行をしてみましょう。1「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。2処理がされたことが確認できれば完了です。さいごにいかがでしょうか。VBAで最終行を取得し、行(横)と列(縦)を入れ替える方法についてまとめました。他にも便利な方法がありますので、よろしければご参照頂ければと思います。この記事の関連キーワードこちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。「最終行」の関連記事こちらの記事の内容「最終行」に関連する記事一覧です。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。VBA】2つのファイルを比較し差分抽出する方法!違う箇所の色付けも!RECOMMENDこちらの記事も人気です。