[[20200207164323]] 『ひとつの行のデータをふたつの行に並べ替えたい』(グラン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ひとつの行のデータをふたつの行に並べ替えたい』(グラン)

【元々、下記のようなデータがあるのですが、】

  A列 B列 C列 D列 E列
1 国名 男A 男B 女A 女B
2 日本 10  15  20  25
3 米国 20  30  15  20
4 中国 25  20  20  35

【上記を、下記のように変えたいと思っています】

  A列 B列 C列 D列
1 国名 性別 A  B
2 日本 男  10  15
3 日本 女  20  25
4 米国 男  20  30
5 米国 女  15  20
6 中国 男  25  20
7 中国 女  20  35

本当はデータ(行)がもっと山ほどあるため、ひとつひとつ手で動かしたく
ありません。
何か簡単にできる方法があれば教えて頂きたいです。
宜しくお願い致します。

< 使用 Excel:Excel2010、使用 OS:unknown >


Sub main()
    'Sheet1をSheet2に変える
    Dim c As Range
    With Sheets("Sheet2")
        .Cells.ClearContents
        .Range("A1:D1").Value = Array("国名", "性別", "A", "B")
        For Each c In Sheets("Sheet1").Range("A2:A" & Rows.Count).SpecialCells(2)
            .Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 4).Value = Array(c.Value, "男", c.Offset(, 1).Value, c.Offset(, 2).Value)
            .Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 4).Value = Array(c.Value, "女", c.Offset(, 3).Value, c.Offset(, 4).Value)
        Next c
    End With
End Sub
(mm) 2020/02/07(金) 17:32

mmさま、ありがとうございます。
マクロはよくわからないのですが、トライしてみます。
もしマクロを使わないやり方がありましたらご教示いただけますと幸いです。
(グラン) 2020/02/07(金) 17:42

  A列 B列 C列 D列 E列 F列
1 国名 性別 A  B  A  B
2 日本 男  10  15  20  25
3 日本 女
4 米国 男  20  30  15  20
5 米国 女
6 中国 男  25  20  20  35
7 中国 女


ここまでは出来るのですが、E2:F2をC3:D3(以下、E4:F4をC5:D5、・・・)へ
まとめて移す手段は無いでしょうか?
(グラン) 2020/02/07(金) 17:54


     A列 B列 C列 D列
 1 国名 性別 A  B
 2 日本 男
 3 日本 女
 4 米国 男
 5 米国 女
 6 中国 男
 7 中国 女

 この部分が出きているのなら、
 C2
 =VLOOKUP($A2,Sheet1!$A$1:$E$4,MATCH($B2&C$1,Sheet1!$1:$1,0),0)
(BJ) 2020/02/08(土) 02:45

 上の部分が出来無いというのなら、手動だけど

 元の国名だけ別シートにコピー
 隣のB列に連番を振る。

 日本       1
 米国       2
 中国       3
 タイ       4
 インド     5
 イギリス   6

 これをコピーして最下部へ貼り付け

 日本       1
 米国       2
 中国       3
 タイ       4
 インド     5
 イギリス   6
 日本       1
 米国       2
 中国       3
 タイ       4
 インド     5
 イギリス   6

 B列をキーにして並べ替え。

 日本       1
 日本       1
 米国       2
 米国       2
 中国       3
 中国       3
 タイ       4
 タイ       4
 インド     5
 インド     5
 イギリス   6
 イギリス   6

 A列をコピーして、メイン?シートに張り付け。

 男
 女

 と入った2セルをコピー
 先ほどメイン?シートに張り付けた物と同等の数のB列を選択して貼り付け。

 日本       男
 日本       女
 米国       男
 米国       女
 中国       男
 中国       女
 タイ       男
 タイ       女
 インド     男
 インド     女
 イギリス   男
 イギリス   女
(BJ) 2020/02/08(土) 11:14

 >ひとつひとつ手で動かしたくありません。

		[A]	[B]	[C]	[D]	[E]
	[1]	国名	男A	男B	女A	女B
	[2]	日本	10	15	20	25
	[3]	米国	20	30	15	20
	[4]	中国	25	20	20	35

1)A1セル選択
2)Ctrlキー + Shiftキー + :キー を押下
3)Ctrlキー + Cキー 押下
4)H1セル選択
5)Ctrlキー + Vキー 押下

ここまでやると、

		[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]	[J]	[K]	[L]
	[1]	国名	男A	男B	女A	女B			国名	男A	男B	女A	女B
	[2]	日本	10	15	20	25			日本	10	15	20	25
	[3]	米国	20	30	15	20			米国	20	30	15	20
	[4]	中国	25	20	20	35			中国	25	20	20	35

こうなると思います。

		[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]	[J]	[K]	[L]	[M]	[N]
	[1]	国名		男A	男B	女A	女B			国名		男A	男B	女A	女B
	[2]	日本	男	10	15	20	25			日本	女	10	15	20	25
	[3]	米国		20	30	15	20			米国		20	30	15	20
	[4]	中国		25	20	20	35			中国		25	20	20	35

6)列をそれぞれ挿入して、
7)男と女を入れます。

8)B2セルを選択したらセルの枠が太く強調されると思います。
で、その右下に黒い■があると思います(新しいバージョンは色が違うかも?)
それをダブルクリックでフィルコピー出来ると思います。
(■に合わせるとマウスカーソルが十字になると思います。)
9)J2セルも同様にフィルハンドルをダブルクリック

10)左の表の女A女Bの列を削除
11)右の表の男A男Bの列を削除

		[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]	[J]
	[1]	国名		男A	男B			国名		女A	女B
	[2]	日本	男	10	15			日本	女	20	25
	[3]	米国	男	20	30			米国	女	15	20
	[4]	中国	男	25	20			中国	女	20	35

12)E1セルに1、E2セルに2と入れてE1:E2の範囲を選択
13)またフィルハンドルをダブルクリック
14)そのまま、Ctrlキー + Cキー でコピー
15)K1セルを選択して、Ctrlキー + Vキー で貼付

		[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]	[J]	[K]
	[1]	国名		男A	男B	1		国名		女A	女B	1
	[2]	日本	男	10	15	2		日本	女	20	25	2
	[3]	米国	男	20	30	3		米国	女	15	20	3
	[4]	中国	男	25	20	4		中国	女	20	35	4

16)H1セルを選択し Ctrl + Shift + :
17) Ctrl + C
18) A1セルを選択して、Ctrlキー + ↓矢印キー 押下
19)一つ下のセルを選択して、Ctrl + V

		[A]	[B]	[C]	[D]	[E]
	[1]	国名		男A	男B	1
	[2]	日本	男	10	15	2
	[3]	米国	男	20	30	3
	[4]	中国	男	25	20	4
	[5]	国名		女A	女B	1
	[6]	日本	女	20	25	2
	[7]	米国	女	15	20	3
	[8]	中国	女	20	35	4

20)E1セルを選択して、昇順で並び替え

		[A]	[B]	[C]	[D]	[E]
	[1]	国名		男A	男B	1
	[2]	国名		女A	女B	1
	[3]	日本	男	10	15	2
	[4]	日本	女	20	25	2
	[5]	米国	男	20	30	3
	[6]	米国	女	15	20	3
	[7]	中国	男	25	20	4
	[8]	中国	女	20	35	4

21)2行目を削除して
22)1行目を書き直す
23)E列を選択して値をクリア

		[A]	[B]	[C]	[D]	[E]
	[1]	国名	性別	A	B	
	[2]	日本	男	10	15	
	[3]	日本	女	20	25	
	[4]	米国	男	20	30	
	[5]	米国	女	15	20	
	[6]	中国	男	25	20	
	[7]	中国	女	20	35	

で、意図した結果になると思います。
手順が長いですが、
「ひとつひとつ」よりは楽かなと。
(※表の中に空白行、空白列が無い前提です)

「エクセル ショートカットキー」
「フィルハンドル」
を調べてみてください。
あと、作業列(作業用に仮に順番や数式を入れておいて、後で消す列)に
順番を入れておいて
並び替えるテクニックも覚えておいて損はないかと思います。
(まっつわん) 2020/02/08(土) 21:48


まっつわんさん、ありがとうございました。
無事にできました。
(グラン) 2020/02/17(月) 15:47

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.