エクセルについて教えてください。

同じbook内のsheet1,sheet2のデーター(アルファベット、数字、ハイフンの組み合わせ)を
列単位(例 sheet1のA列データとsheet2のA列データ)でコンペアさせ、コンペア結果、重複データがある場合は、重複データをsheet3のA列へリストとして表示させる方法を教えてください。
有償無償にかかわらず他ソフト(ツール)は用いず、一般の
エクセルの機能(マクロ、関数含む)で実現することとします。

回答の条件
  • 1人3回まで
  • 登録:2008/03/10 22:15:40
  • 終了:2008/03/11 20:51:46

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/03/10 22:51:39

ポイント120pt

VBAで

Sub Macro()
    Dim obj1 As Object
    Dim obj2 As Object
    Dim i As Long
    Dim j As Long
    i = 1
    j = 1
    With Worksheets("Sheet1")
        While .Cells(i, 1).Value <> ""
            Set obj1 = Worksheets("Sheet2").Range("A:A").Find(.Cells(i, 1).Value)
            If Not obj1 Is Nothing Then
                If j = 1 Then
                    Worksheets("Sheet3").Cells(j, 1).Value = .Cells(i, 1).Value
                    j = j + 1
                Else
                    Set obj2 = Worksheets("Sheet3").Range("A1:A" & j - 1).Find(.Cells(i, 1).Value)
                    If obj2 Is Nothing Then
                        Worksheets("Sheet3").Cells(j, 1).Value = .Cells(i, 1).Value
                        j = j + 1
                    End If
                End If
            End If
            i = i + 1
        Wend
    End With
End Sub
id:dongwu

ありがとうございました。

理屈はわからないけど解決できました。

助かりました。

2008/03/11 20:50:01

その他の回答(2件)

id:pooh_san No.1

pooh_san回答回数89ベストアンサー獲得回数52008/03/10 22:45:23

ポイント27pt

sheet3のA列に

=IF(Sheet1!A1=Sheet2!A1,Sheet1!A1,"")

ではダメでしょうか?


的外れだったら無視してください。

id:dongwu

ありがとうございまいた。

2008/03/11 20:49:24
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/03/10 22:51:39ここでベストアンサー

ポイント120pt

VBAで

Sub Macro()
    Dim obj1 As Object
    Dim obj2 As Object
    Dim i As Long
    Dim j As Long
    i = 1
    j = 1
    With Worksheets("Sheet1")
        While .Cells(i, 1).Value <> ""
            Set obj1 = Worksheets("Sheet2").Range("A:A").Find(.Cells(i, 1).Value)
            If Not obj1 Is Nothing Then
                If j = 1 Then
                    Worksheets("Sheet3").Cells(j, 1).Value = .Cells(i, 1).Value
                    j = j + 1
                Else
                    Set obj2 = Worksheets("Sheet3").Range("A1:A" & j - 1).Find(.Cells(i, 1).Value)
                    If obj2 Is Nothing Then
                        Worksheets("Sheet3").Cells(j, 1).Value = .Cells(i, 1).Value
                        j = j + 1
                    End If
                End If
            End If
            i = i + 1
        Wend
    End With
End Sub
id:dongwu

ありがとうございました。

理屈はわからないけど解決できました。

助かりました。

2008/03/11 20:50:01
id:haruo-31 No.3

haruo-31回答回数80ベストアンサー獲得回数102008/03/11 15:56:53

ポイント40pt

上の方と被ってますが・・・

Sub module1()
    ' 重複検索マクロ
    ' Sheet1のA1,Sheet2のA1から検索をはじめ、
    ' 重複したデータはSheet3のA1から上詰めで出力されます。
    ' 尚、比較対照になるシートはそれぞれ、正順でソート(並び替え)されている必要があります。
    ' シートは3ページ必要で、シート名は適宜修正して使用してください。
    Dim objRngA As Range, objRngB As Range
    Dim objRngDest As Range
    
    ' Sheet1のセルA1(比較対象)
    Set objRngA = Sheets("Sheet1").Range("A1")
    ' Sheet2のセルA1(比較対象)
    Set objRngB = Sheets("Sheet2").Range("A1")
    ' Sheet3のセルA1(結果)
    Set objRngDest = Sheets("Sheet3").Range("A1")
    
    ' Sheet1、Sheet2いずれかのセルが空白になるまで続ける
    While objRngA.Value <> "" And objRngB.Value <> ""
        If objRngA.Value < objRngB.Value Then
            ' Sheet1の方がSheet2の比較対象より小さい場合
            Set objRngA = objRngA.Cells(2)
        ElseIf objRngA.Value = objRngB.Value Then
            ' 重複セル発見
            objRngDest.Value = objRngA.Value
            Set objRngA = objRngA.Cells(2)
            Set objRngB = objRngB.Cells(2)
            Set objRngDest = objRngDest.Cells(2)
        Else
            ' Sheet2の方がSheet1の比較対象より小さい場合
            Set objRngB = objRngB.Cells(2)
        End If
    Wend
    
End Sub

id:dongwu

ありがとうございました。

マクロってすごいですね!

2008/03/11 20:50:50

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

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

トラックバック

  • VBAのお勉強 Excelで重複行を探す simple blog いろいろ勉強中 2008-03-13 12:22:02
    http://q.hatena.ne.jp/1205154937 「列単位でコンペアさせ、コンペア結果、重複データがある場合」という 条件がはっきりしないので、勝手に 「Sheet1のA列のある行のデータがSheet2のA列のどこか...
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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