- 締切済み
エクセルの並び替えの質問です。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- neochi_life
- ベストアンサー率43% (115/263)
失礼、、、画像トリミング忘れたので、すごい見難いですね^-^; あと、VBAマクロの設定方法がもしわからない場合 マクロを使ってVBAにチャレンジだ! http://www.sigoto.co.jp/excel/begin/bgmenu04.htm こちらを見てください
- kagakusuki
- ベストアンサー率51% (2610/5101)
C列とD列を作業列として使用し、 E列に「A列にあってB列にない数値」を数値が小さい順番に並べ、 F列に「B列にあってA列にない数値」を数値が小さい順番に並べる方法です。 (データー数がどちらの列が多いかは関係しません) まず、C1セルに次の数式を入力して下さい。 =IF(AND(ISNUMBER($A1),COUNTIF($B:$B,$A1)=0),$A1,"") 次に、C1セルに次の数式を入力して下さい。 =IF(AND(ISNUMBER($B1),COUNTIF($A:$A,$B1)=0),$B1,"") 次に、E1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT(C:C),"",SMALL(C:C,ROWS($1:1))) 次に、E1セルをコピーして、F1セルに貼り付けて下さい。 次に、C1~F1をコピーして、同じ列の2行目以下に貼り付けて下さい。 以上です。
- neochi_life
- ベストアンサー率43% (115/263)
できるなら何でもいいと思うけど、参考までにVBAマクロを使用した記述例でもどうぞ A列とB列のデータの長さはどっちがどっちでもいいです。 A列~C列の1行目には、表のヘッダがあるものとします 記述はちょっと長いですが、やってることは単純です 元データを全てコピー 元データと逆の列の値を参照して同じ値だったら空白にする 空白行を上詰めで削除 C列の罫線を引きなおす これだけです Sub numberCheck() ' 変数 Dim ws1 As Worksheet Dim i, j As Integer Dim checkLength As Integer Dim data1, data2 As Integer ' 初期設定 Set ws1 = Worksheets("sheet1") '使用するシート名 data1 = ws1.Range("A2").End(xlDown).Row 'A列のデータ数 data2 = ws1.Range("B2").End(xlDown).Row 'B列のデータ数 ' 処理 ' 抽出欄にデータを一旦全てコピー For i = 2 To data1 ws1.Cells(i, 3) = ws1.Cells(i, 1) Next j = data1 + 1 For i = 2 To data2 ws1.Cells(j, 3) = ws1.Cells(i, 2) j = j + 1 Next checkLength = ws1.Range("C2").End(xlDown).Row 'コピーされたC列のデータ数 ' 抽出欄と元データのチェック For i = 2 To data2 For j = 2 To data1 If ws1.Cells(i, 2) = ws1.Cells(j, 3) Then ws1.Cells(j, 3) = "" End If Next Next For i = 2 To data1 For j = (data1 + 1) To checkLength If ws1.Cells(i, 1) = ws1.Cells(j, 3) Then ws1.Cells(j, 3) = "" End If Next Next ' 不要な空白セルを削除 i = 2 j = 2 Do While j <> checkLength If ws1.Cells(i, 3) = "" Then ws1.Cells(i, 3).Delete shift:=xlShiftUp Else i = i + 1 End If j = j + 1 Loop ' 罫線を引く checkLength = ws1.Range("C1").End(xlDown).Row With ws1.Range(Cells(1, 3), Cells(checkLength, 3)).Borders .LineStyle = xlContinuous .ColorIndex = xlAutomatic .Weight = xlThin End With End Sub 添付画像では、見やすいようにA列とB列で共通してる値に色をつけてあります
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 A・B列のデータ数は同じかもしくはA列データの方が多い場合です。 ↓の画像のように作業用の列を設けています。 作業列C2セルに =IF(COUNTIF(B:B,A2)=1,ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピー! 結果のE2セルに =IF(COUNT(C:C)<ROW(A1),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) という数式を入れオートフィルで下へコピーすると画像のような感じになります。 これでB列にないA列のデータのみが表示されると思います。 尚、B列データの方が多い場合、作業列C2セルの数式は =IF(COUNTIF(A:A,B2)=1,ROW(),"") としてオートフィルで下へコピー! 結果の数式は同じで良いのですが、表示される結果は 「B列にありA列にないデータ」となります。 参考になれば良いのですが・・・m(__)m