- ベストアンサー
エクセルのデータの並び替え
A B C 1 あ い う 2 え お 3 か き く 4 け こ 5 6 このようなデータが400番まであります。 これを A列にすべて並べたいのです。あ い う え お か き く け こ 縦一列に2000個。 エクセルの扱いが不案内なのでどうしたらよいかわかりません。 うまい方法を教えてください。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAで如何でしょうか。 Worksheet名("Sheet1")は変更してください。 Sub 文字列並び() Dim wIx As Integer Dim Rng As String Dim wRow As Integer ' '文字列データをセル「E」列に展開 Rng = "B2:D401" wRow = 0 For Each c In sheets("Sheet1").Range(Rng) If c.Value <> "" Then wRow = wRow + 1 sheets("Sheet1").Cells(wRow, 5) = c.Value End If Next 'あいうえ順にソート sheets("Sheet1").Range("E1:E1001").Sort Key1:=Range("E1"), Order1:=xlAscending End Sub '(1) Alt+F11 (ツール -> マクロ -> Visual Basic Editor) '(2) 挿入 -> 標準モジュール -> 上記のモジュールを貼り付けて実行(F5を押す)する
その他の回答 (3)
- pkh4989
- ベストアンサー率62% (162/260)
No.2 です。 すみません。データの範囲設定が間違っています。 以下のように修正してください。 Rng = "B2:D401" -> Rng = "A1:C400"
- maron--5
- ベストアンサー率36% (321/877)
◆Sheet1 A B C D E 1 あ い う 1 2 え お 4 3 か き く 6 4 け こ 9 ◆Sheet2 A 1 あ 2 い 3 う 4 え 5 お 6 か 7 き 8 く 9 け 10 こ ◆作業列Sheet1のE列の式 E1に「1」と入力します E2=IF(A2="","",COUNTA(A1:C1)+E1) ★E2に式を下にコピー ◆Sheet2の式 A1=IF(ROW(A1)>COUNTA(Sheet1!A:C),"",INDEX(Sheet1!$A:$C,MATCH(ROW(A1),Sheet1!$E:$E),ROW(A1)-INDEX(Sheet1!$E:$E,MATCH(ROW(A1),Sheet1!$E:$E))+1)) ★下にコピー
お礼
早速の回答をありがとうございました。 No2さんの回答でうまくいきました。
- Nayuta_X
- ベストアンサー率46% (240/511)
う~~~ん?!。 補足要求したいのだけど、うまく表現出来るか自信ない。 A B C⇒どこまであるの?。 1 あ い う⇒どこまであるの?。 2 え お 3 か き く 4 け こ 5 行とか列に関係なく "あ"とか "い"とかだけでいいの?。 A列B列C列の文字は、どうするの?。 行のみ 並べ換えるの?。 だとすると、ABC・・・・・・・・・の組み合わせで、並べかえるの?。 あまりにも、漠然として回答出来ません。 あ い う え お か き く け こ 縦一列に2000個 といいますが、あ~ん までは、2000個もないけど?。
補足
説明不足でごめんなさい。 列は3列だけです。 あ い う・・・ は便宜的にデータを表わしただけで実際は単語が入っています。 A列の順番が、A1,B1,C1,A2,B2,A3、B3,C3,A4,B4,A5,B5,C5,A6,B6,A7・・・のデータ順になるようにしたいのです。 行2まででデータは5つ、 行4まででデータは10、 データの合計は1000でした。すみません。 よろしくお願いします。
お礼
早速の回答をありがとうございました。 VBAを使うのは久しぶりでしたが、見事にできました。 ソートは必要なかったので省きました。 丁寧に教えていただき感謝します。ありがとうございました。