プロが教える店舗&オフィスのセキュリティ対策術

エクセルのA列とB列に数値が入っているとき、A列にあってB列にない数値若しくはB列にあってA列にない数値を調べるいい方法があれば教えてください。A列とB列に入っている数値が多いとき(A1~A100くらいまで入っているとき)違う数値を拾うのが大変なので・・・

「エクセルの並び替えの質問です。」の質問画像

A 回答 (4件)

失礼、、、画像トリミング忘れたので、すごい見難いですね^-^;



あと、VBAマクロの設定方法がもしわからない場合

マクロを使ってVBAにチャレンジだ!
http://www.sigoto.co.jp/excel/begin/bgmenu04.htm

こちらを見てください
「エクセルの並び替えの質問です。」の回答画像4
    • good
    • 0

 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行目以下に貼り付けて下さい。

 以上です。
    • good
    • 0

できるなら何でもいいと思うけど、参考までに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列で共通してる値に色をつけてあります
「エクセルの並び替えの質問です。」の回答画像2
    • good
    • 0

こんばんは!


一例です。
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
「エクセルの並び替えの質問です。」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!