• ベストアンサー

エクセル内で縦列を横列に並べ替える方法を教えて下さい

縦に並んだ列を横に並べ直したいのですが、一定の行ごとに それらを繰り返したいのですが、可能でしょうか? 具体的に言うと、縦に並んだ列を ひたすら横に並べ直すだけで あれば、「形式を選択して貼り付け」 ⇒ 「行列を入れ替える」で 可能ですが、そうではなく、例えば一定の5行まで来たら、 次の行で再度 横一列に並び替える繰り返しって できますか? (説明が下手で すみません;;) 図で説明したほうが伝わりやすいかも知れないので、 説明画像を添付いたしましたので、拝見していただると幸いです。 後、補足ですが、関数を設定して試したことがあるのですが、 そうすると 全てのセル内の文字が、見た目は元から 入力していた通りの文字に見えるのですが、いざ各セル内の 文字をクリックすると、数式バー内にて関数の文字で表記されたり、 文字をコピーしてみても、文字としてコピーできず、設定した 関数文字がコピーされてしまったり、不要な文字を手動で 削除したりすると、表が崩れてしまい関数設定も 無効になってしまいました。。そして次にエクセルを 開きなおすと エラーになり、全ての文字が見れなくなります。 関数設定してもセル内の文字がそのままの文字として表記され、 そのままの文字としてコピーでき、不要な文字を削除(手動で)しても 崩れたりエラーにならない方法ってありますか? 当方、詳しくはないので、具体的に教えていただけると 幸いに思います。 長くなりましたが、どなたかご存知の方が いらっしゃれば、 ご教授 よろしくお願い致しますm(_ _)m

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> そのままの文字としてコピーでき、不要な文字を削除(手動で)しても崩れたりエラーにならない方法ってありますか? じゃあ、関数はやめてVBAでやってみませんか? 現在のシート上での配置がわかりませんので、データがSheet1のA1から下に一列に並んでいるものとし、それをSheet2の1行目からご希望のように並べます。 もし配置やシート名が違っていたら修正してから実行してください。 以下の手順をおためしください。 1.AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test01() Dim j As Long, i As Long, n As Integer With Sheets("Sheet1") j = 1: n = 0 For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row n = n + 1 .Cells(i, "A").Copy Sheets("Sheet2").Cells(j, n) If n Mod 5 = 0 Then j = j + 1 n = 0 End If Next i End With End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります. 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。 これで表示されます。

hyshyschan
質問者

お礼

ご回答ありがとうございます^^ とてもシンプルかつ、ご丁寧なご回答で、 すぐに出来ました! はじめはVBAと聞き、携わったことがないだけに とても不安でしたが、書いていただいた通りに 進めていくだけで、あっさりと出来てしまい、 すごく嬉しかったです。 一発で 一気に ザザーっと並び替えがされて、 すごく感動でした! しかし色んな方法があるものですね~ 回答番号:No.1さんの方法と、時と場合で使い分けて 活用させていただきたいと思います♪ 本当に ありがとうございました(o*。_。)o

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#204879
noname#204879
回答No.2

=OFFSET($A$1,MOD(ROW(A1)-1,5)*5+COLUMN(A1)-1,)

hyshyschan
質問者

お礼

ご回答 ありがとうございます^^ ただ、私は 詳しくない者ですので、 関数式だけでは 理解できませんでした;; せっかく ご回答いただいたのですが、 思うようにならず、申し訳ございませんでした。。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

元のデータが、Sheet1のA1から始まって、縦に並んでいるとして、 結果を、Sheet2に並べる場合、 Sheet2のA1に、 =INDEX(Sheet1!$A:$A,(ROW()-1)*5+COLUMN()-1+1) と入力して、 A1を、右にA5までコピペして、 A1:A5を下にずっとコピペすれば、とりあえず求めたい結果は得られます。 その後に、結果を範囲指定して、コピーし、 同じ場所に、形式を選んで貼り付け、で、値を貼り付ければ、 計算式は上書きされて、値だけになります。 そうすれば、それをコピーして違うところに貼り付けても、値が貼り付けられます。

hyshyschan
質問者

お礼

ご回答、どうもありがとうございます^^ とても分かりやすく書いてくださっていたので、 無知な私ながら、すぐにできました♪ コピペするたびに感動でした(笑 値にしたい方法も分かりましたし、 とても感謝しております。 本当に どうもありがとうございました(o*。_。)o

すると、全ての回答が全文表示されます。

関連するQ&A