- ベストアンサー
excelでの行列データの並び替え
excelで表形式のデータの並び替えをおこないたいのですがいい方法が思いつきません。 どなたか教えて下さい。 具体的には 元のデータは以下の様なフォーマット a b c d e f g h i これを並び替えて a b c d e f g h i としたいということです。 元データの列数は決まっていますが 行数は任意です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
今仮に」、A1セルに「abc」、A2セルに「 def」、A3セルに「 ghi」と入力されていて、B1:B9のセル範囲に a b c d e f g h i と表示させるものとした場合には、B1セルに次の関数を入力してから、B1セルをコピーして、B2以下に貼り付けて下さい。 =MID(A$1&A$2&A$3,ROWS(B$1:B1),1)
その他の回答 (4)
- bunjii
- ベストアンサー率43% (3589/8249)
- msMike
- ベストアンサー率20% (364/1804)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の表現がまずい。2様に取れる。私は下記ではないかと思って回答する。 ーー 本件は「並べ替え」というよりは、表データの「組換え」が適当かと思う。 「並べ替えは」エクセルでは「セルの値」について(よって)、あるルールに並べることを言うと思う。本件はセルの来る(収まる)位置を問題にしているのだろう。 もし私が間違っていたら無視して。 しかし下記も質問者に取って勉強になると思うよ。 ーー データ例 A列 B列 C列 a b c d e f g h i j k l m n G1に=INT((ROW()-1)/3)+1 H1に =MOD(ROW()-1,3)+1 と入れて下方向に式を複写。 結果 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 4 1 4 2 4 3 5 1 5 2 ・・ のようになる。これは仕組みの理解のための作業列です。 これは最終結果を出す列での、行のデータは、元データのセル範囲の何行の、何列から持ってくるかを示す。 最終結果はF列に出すとして F1に =INDEX($A$1:$C$100,G1,H1) と入れて、式を下方向に複写する。 結果は a b c d e f g h i ・ のようになる。 G,H列を使っているが、仕組みを納得すれば、これらの式を、F1の式の第2引数と、第3引数に、先頭の=を省いてコピーして貼りつければ、G,H列は不要になる。 後は式の複写は余分な業までおこたたっとき、空白にするたの、IF文をかぶせる必要があるが、、複雑になるので略。上の例の$C$100の100はデータ数に合わせて修正すること。
- bunjii
- ベストアンサー率43% (3589/8249)
>元のデータは以下の様なフォーマット A1="abc" A2="def" A3="ghi" または A1="a",B1="b",C1="c" A2="d",B2="e",C2="f" A3="g",B3="h",C3="i" のような配列なのですか? 後者の場合は次の数式で良いでしょう。 =INDEX(A:C,INT((ROW()-1)/3)+1,MOD(ROW()-1,3)+1)&""
お礼
なるほどいい方法ですね。ありがとうございます。