- ベストアンサー
エクセル データの並べ替え
名前:山田 姓:男 ・ ・ 年齢:20才 名前:吉田 姓:女 ・ ・ 年齢:30才 ・ ・ ・ このようなデータを次のように並べ替えたいのですが、 簡単に行える方法はないでしょうか? A列 B列 F列 名前:山田 姓:男 ・ ・ 年齢:20才 名前:吉田 姓:女 ・ ・ 年齢:30才 ・ ・ ・
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 仮にデータがA列にあるとして、とりあえずB~G列に参照します。 B1に、 =INDEX($A:$A,(ROW(A1)-1)*6+COLUMN(A1)) と入力して、G1までコピー、 さらにB1:G1を下の行にコピーします。 そうしたら、コピーしたB1:Gxを選択してコピー、 同じ場所にメニューの[編集]→[形式を選択して貼り付け]の[値]貼り付けします。 あとは、必要に応じて元のA列を削除して1列ずらして下さい。
その他の回答 (5)
- Musaffah
- ベストアンサー率36% (37/101)
「簡単に」を重視するのであればこれでしょうね。 並び替えをしたいシートを表示して、このマクロ(並び替え)を実行すると、後は勝手にやってくれますよ。 A列に入力なしの行が10行続くと終了するようになります。 あとはこれをベースに多少アレンジを加えるといいと思いますよ。 Option Explicit Public Sub 並び替え() Dim iInRow As Integer Dim iOutRow As Integer Dim iInterval As Integer iInRow = 1 iOutRow = 0 iInterval = 0 With ActiveSheet While iInterval <= 10 If InStr(1, .Cells(iInRow, 1), "名前") <> 0 Then iOutRow = iOutRow + 1 Call Makelist(iInRow, iOutRow) iInterval = 0 End If iInRow = iInRow + 1 iInterval = iInterval + 1 Wend End With End Sub Private Sub Makelist(iInRow As Integer, iOutRow As Integer) Dim iOutCol As Integer iOutCol = 1 With ActiveSheet While Len(Trim(.Cells(iInRow, 1))) <> 0 If iInRow <> iOutRow Then .Cells(iOutRow, iOutCol) = .Cells(iInRow, 1) .Cells(iInRow, 1).ClearContents End If iInRow = iInRow + 1 iOutCol = iOutCol + 1 Wend End With End Sub
お礼
わざわざマクロを作っていただき、ありがとうございました。 今回は自分が知らないだけで、エクセルの関数を 駆使するば出来るのかもしれないと思い質問しました。 思ったとおり、関数の工夫でもやれることが分かりました。
- DoragonFang
- ベストアンサー率41% (91/221)
基本的には他の方が書かれているように、「コピー」→「形式を選択してコピー」→「行列を入れ替える」にチェック。という手順しかない(自動的にやろうとするとマクロでないと無理かと)。 でも、1レコードずつやるのは大変なので、もうちょっと楽にするテクニックで、 A列に上記のデータがあるとします。 B1セルに =LEFT(A1,FIND(":",A1,1)-1) と入力して、データの数だけ下にコピーします。 名前、性別、年齢などの項目が取り出せてると思うので、 A,B列を選んで、メニューバーから「データ」→「フィルタ」→「オートフィルタ」を選びます。 1行目のセルに▼マークがついたと思います。B列のこのマークをクリックすると、選択肢が現れますので、名前を選びます。 すると名前だけのデータが並びます。 ここで、A列の名前だけのデータを範囲指定して、、「コピー」→「形式を選択してコピー」→「行列を入れ替える」をやれば、名前は一度にできます。 で、あとは、B列の選択肢を性別、年齢・・などに変えて同じことやれば、項目の数だけコピーする操作で並び替えができます。
お礼
回答ありがとうございます。 確かに回答の方法で出来ました。
- a987654
- ベストアンサー率26% (112/415)
基本的には、no1,no2の方の答えられている 方法ですが、件数が多くて大変であれば登録マクロを 使われたらいかがですか?方法は下記を参考に、 1.マクロ登録を2名分行う。 2.マクロ修正にて、1名分の処理をFOR-NEXTで囲む 3.2名目のプログラムを参考にしてFOR増分値、最終値 FOR内でのセル値の変更等を追記する 4.2名目のプログラム行を削除 あとはマクロを起動すれば、自動的に終了します。
お礼
回答ありがとうございます。
- haruko2005
- ベストアンサー率52% (235/447)
こんにちは。 「名前:山田」~「年齢:20才」をコピーして、貼り付けたいセルで右クリック→形式を選択して貼り付け→"行列を入れ替える"にチェック→OK を繰り返せば、地道ですが確実にできます。 ご参考になれば幸いです。
お礼
回答ありがとうございます。 質問の仕方がまずくてすみません。 回答のようにするのが大変なので、 もう少しうまくやれる方法はないかという質問です。
- mu2011
- ベストアンサー率38% (1910/4994)
対象のデータ行単位になっていれば、次の方法で可能です。 ・対象のセル範囲をドラッグし右クリック→コピー ・移動先で右クリック→形式を選択して貼り付け→行列を入れ替えをチェックオン
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。 うまく行きました。