• ベストアンサー

Excelの行列の入れ替えについて

Excelのファイルで下記のようにデータが入っているものをA列にいっきにまとめることはできないでしょうか? A B C 1 a b c 2 a b c 3 a b c ↓というでーたを。。。 A 1 a 2 a 3 a 4 b 5 b 6 b 7 c 8 c 9 c ↑こんな感じにはできないでしょうか?切り取り&貼り付けしかないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#148473
noname#148473
回答No.2

VBAを使うか、あるいは「切り取り&貼り付け」か、 どちらかだと思います。 関数やExcel自体の機能では対応できないでしょう(多分) もし、任意の文字を改行コードに置換できるタイプのテキストエディタを お持ちなら、データ全体を範囲指定して「コピー」し、 別のシートに「形式を指定して貼り付け」-「行列を入れ替え」-「OK」で 貼り付け、そのシートを「名前を付けて保存」で「CSV形式」で保存します。 保存したファイルをテキストエディタで開き、半角カンマ[,]を 改行コードに一括置換して、保存します。 このファイルを、再びExcelで開けば、ご要望の形式になっている筈です。 そういうテキストエディタをお持ちでない場合は、 下記のマクロを使ってください。 ---------------------------- Sub 行列入れ替え()   Dim i, j, k, endofrow, endofcol As Integer      endofrow = ActiveSheet.UsedRange.Rows.Count   endofcol = ActiveSheet.UsedRange.Columns.Count   k = endofrow + 1      For i = 2 To endofcol     For j = 1 To endofrow              ActiveSheet.Cells(k, 1) = ActiveSheet.Cells(j, i)       ActiveSheet.Cells(j, i).ClearContents       k = k + 1            Next   Next    End Sub ---------------------------- Excelのメニューバーの「ツール」-「マクロ」-「VisualBasicEditor」をクリック、 VisualBasicEditorが表示されますので、「挿入」-「標準モジュール」を選び、 右側の白紙のウィンドウ(コードウィンドウ)に、点線内を貼り付けてください。 Excelに戻って、「ツール」-「マクロ」-「マクロ」をクリック、 「行列入れ替え」を選んで「実行」してください。

jinah
質問者

お礼

回答ありがとうございます。やはりVBAでやるのが一番ですね。今回の件を機にVBAに挑戦したいと思います。丁寧な説明をありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

できますが、相当凝ったものになりますよ。 (1)A1:C3にテストデータとして 1 4 3 2 5 4 3 7 5 を入れます。 (2)E列のE1に=INT((ROW()-1)/3)+1 E9まで式を下へ複写します。 (3)F列のF1に=MOD(ROW()-1,3)+1 F9まで式を下へ複写します。 (4)D列D1に=INDEX($A$1:$C$3,E1,F1) D9まで式を複写します。 (5)結果は 1 4 3 2 5 4 3 7 5 となります。 (6)判りやすいようにE、Fを別に作っていますが、なれれば=index($a$1:$c$3,INT((ROW()-1)/3)+1,MOD(ROW()-1,3)+1)と書けるようになるでしょう。 こんなのよりVBAを勧めたいですが。

jinah
質問者

お礼

回答ありがとうございます。関数だと大変ですね。やはりVBAでやるのが一番ですね。今回の件を機にVBAに挑戦したいと思います。丁寧な説明をありがとうございました。

  • gon_gon
  • ベストアンサー率26% (33/124)
回答No.3

#1です。 すみません。セル内で縦に並べたかったのですね?勘違いしてました!(ごめんなさい) #1で説明した方法ですと別々のセルのものを一つにまとめる事しかできません。(しかも横並びに・・・(>_<)) 一つのセル内に縦に並び替える方法をお探しだったのですね・・・・ ごめんなさい。そのような方法があるのかちょっと分かりかねますm(__)m やはり切り取り&貼り付けしかないかなぁ・・・ お役に立てませんで申し訳ありませんでした・・・

  • gon_gon
  • ベストアンサー率26% (33/124)
回答No.1

多分、これでできると思います。 空白のセルに、=A1&B1 エンター これでA1のセルとB1のセル内がまとまります。 もっとセルをまとめたい場合は =A1&B1&C1 とつなげて入力すればOKです。

jinah
質問者

補足

=A1&B1と入力すると1つのセルにABと入力され縦に並びませんでした。

関連するQ&A