エクセルの操作について質問です。

二つのデータを突き合わせて比較するために、以下のようなソートされたデータの整理をしたいです

1 1
2 3
3 4
5 6
8 9

左と右の二つのデータを

1 1
2  
3 3
  4

  6

  9

こんな感じでソートしたいのです。両方に一致するデータがある行は同じ行に。片方に飛びがある場合は隙間を空ける。何か良い方法はありますでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/11/10 00:16:02
  • 終了:2006/11/17 00:20:02

回答(2件)

id:y3kz No.1

y3kz回答回数31ベストアンサー獲得回数92006/11/10 01:05:28

ポイント35pt

A列、B列にデータがあるとして、以下のマクロでどうでしょうか。

Sub my_sort()
    Dim i As Long
    
    For i = 1 To 65536
        If Cells(i, 1) = "" Then Exit For
        
        Select Case Cells(i, 1)
        Case Is < Cells(i, 2)
            Cells(i, 2).Insert shift:=xlDown
        Case Is > Cells(i, 2)
            Cells(i, 1).Insert shift:=xlDown
        End Select
    Next
End Sub

http://q.hatena.ne.jp/

id:Sakano

うまくいってます

なるほど、Insertを使えば簡単なんですね

2006/11/10 01:31:26
id:robbie21 No.2

robbie21回答回数34ベストアンサー獲得回数12006/11/14 10:05:10

ポイント35pt
A       B
1	1
2	3
3	4
5	6
8	9

だとして、

  • C列に以下のように連番を入力
A	B	C
1	1	1
2	3	2
3	4	3
5	6	4
8	9	5
		6
		7
		8
		9

  • D1に
=IF(COUNTIF(A:A,$C1),$C1,"")

として、下方向にコピー

  • D列をE列にコピー
  • F1に
=D1&E1

として下方向にコピー


すると以下のようになる。


A	B	C	D	E	F
1	1	1	1	1	11
2	3	2	2		2
3	4	3	3	3	33
5	6	4		4	4
8	9	5	5		5
		6		6	6
		7			
		8	8		8
		9		9	9
  • オートフィルタでF列が空白の行を選択し、行ごと削除すると、D,E列に目的のデータができている
  • [コピー]-[AB列選択]-[右クリック]-[形式を選択して貼り付け]-[値のみ]でAB列に書き戻して
  • C列以下削除する。

ダミーURL

http://d.hatena.ne.jp/robbie21/

id:Sakano

ありがとうございます

マクロ無しでも結構出来るものですね

2006/11/14 22:20:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません