- ベストアンサー
エクセルのデーターの検索方法
エクセルの同じ内容のデーターが二つあります。しかし別の人が管理しているのでなぜか数が多くなってしまいます。数が200以上あるのでどれが二重になっているのか探すのに困難です。一つは200でもうひとつは203あります。この3件を探す何か良い検索方法はないでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 #5のコードが、どうしても気になって、試してみたら、やはりミスがありました。足りないほうは、チェックできても、ダブっているものは、チェックできませんので、すみませんが、サブルーチン側を差し替えてください。 真中の Sub s_SearchValue(myRange As Range)の行から以下を差し替えてください。 '--------------------------------------------- Sub s_SearchValue(myRange As Range) Dim r As Range Dim myFirstAddress Dim DoubleFlg As Boolean With Sh2.UsedRange Set r = .Find( _ What:=myRange.Text, _ LookIn:=xlValues, _ lookat:=xlWhole, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not r Is Nothing Then myFirstAddress = r.Address Do If DoubleFlg = False Then DoubleFlg = True Else r.Interior.ColorIndex = 3 '赤 End If Set r = .FindNext(r) Loop Until r Is Nothing Or r.Address = myFirstAddress Else myRange.Interior.ColorIndex = 6 '黄色 End If End With End Sub '---------------------------------------
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 少し、様子をみさせていただきました。 以下のマクロは、「標準モジュール」に登録してください。 >(5)電話番号もしくは名前等文字での検索です。 >(6)比べる値はAもBも一つの列に収まっています とは言うものの、それ以上の具体的な情報はありませんでしたので、シート全体を調べるマクロにしました。それを、双方向で同じデータが「ある・なし」を調べます。片方にない場合は、黄色で色が塗られます。 使い方は、 Alt + F8 で、CompareEachSheetsDateというマクロ名を探して、クリックします。 そうすると、ダイアログで、もう1つのシートを選ぶように出てきますから、シートを選び、そのシートの任意のシートを選択します。 後は、自動的に検索します。念のため、日付情報や時間情報は、このマクロでは検索できません。 '--------------------------------------------- Option Explicit Dim Sh2 As Worksheet Sub CompareEachSheetsData() Dim c As Range Dim Sh1 As Worksheet Dim buf As Object Dim tmp As Object Dim i As Integer Set Sh1 = ActiveSheet On Error GoTo ErrHandler Set tmp = Application.InputBox("検索するシートの任意のセルを選んでください", Default:="Sheet2!$A$1", Type:=8) On Error GoTo 0 Set Sh2 = tmp.Worksheet If Sh1.Name = Sh2.Name Then MsgBox "同じシートを選ぶことは出来ません。", vbInformation Exit Sub End If For i = 0 To 1 If i = 1 Then Set buf = Sh1: Set Sh1 = Sh2: Set Sh2 = buf For Each c In Sh1.UsedRange.Cells If Not IsEmpty(c) Then s_SearchValue c End If Next c Next i Set buf = Nothing: Set Sh1 = Nothing: Set Sh2 = Nothing Beep '終了の合図 Exit Sub ErrHandler: If tmp Is Nothing Then Exit Sub MsgBox "正しい選択をしてください。", vbInformation Resume End Sub Sub s_SearchValue(myRange As Range) Dim r As Range Dim myFirstAddress With Sh2.UsedRange Set r = .Find( _ What:=myRange.Text, _ LookIn:=xlValues, _ lookat:=xlWhole, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not r Is Nothing Then myFirstAddress = r.Address Do Set r = .FindNext(r) Loop Until r Is Nothing Or r.Address = myFirstAddress Else myRange.Interior.ColorIndex = 6 '黄色 End If End With End Sub '---------------------------------------------
お礼
大変ありがとうございます。トライしてみたいと思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
#2のWendy02です。 一応、#3さんの回答待ちにで、コードを掲示したいと思います。情報が多ければ多いほど、より確実です。
お礼
すみませんよろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の内容について(意味するとこ)。 どこかに書いて亜場合は、お許しください。 (1)この質問の範囲で、言及しているブックはいくつですか。Aさんの作ったファイル(=ブック)とBさんの作ったファイルと2つですか? (2)シートはいくつ。Aさんのファイルのシート数が200で、203はBさんの作ったファイルのシート数ですか。 (3)それともAさんのファイルは1シート内に200行、Bさんのそれは203行ですか。 (4)シート名が3つだけ違ったものがあるということですか。 セルデータで違ったセルが3セルあるのでしょうか (5)同一というのはセルの値ですか。たとえば生徒コードのように データの組の1部のコードなどで比べるのでしょうか。 (5)比べる値はAのものも、Bのものも一つの列に収まっていますか。
お礼
すみませんよろしくお願いします。
補足
(1)そうですファイルは2つです。 (2)データーが200でシートは1つづつです。 (3)そうです1シート内です。 (4)セルデーターが3つだけ違うのです。 (5)電話番号もしくは名前等文字での検索です。 (6)比べる値はAもBも一つの列に収まっています。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Sheet1 と Sheet2 のA列を比較する場合。 B1:~ =IF(COUNTIF(Sheet2!$A$1:$A$300,A1)>0,"重複","") で、フィルダウン・ドラッグコピーをします。 データが散在していると、このような式は出来ないかもしれませんが、列同士なら、出来ますね。 データが散在しているなら、私は、マクロを書きます。
お礼
ありがとうございます。試してみます。
補足
私無知なものでマクロの書き方は教えてもらえないでしょうか。
- cooutarou
- ベストアンサー率33% (14/42)
もっと簡単な方法があるかもしれないけど・・・ 私だったら並べ替えをして、見比べてみます。 ずれている所を探すだけなのでちょっとは楽かも。 あまり参考にならないかもしれませんが、頑張ってください。
お礼
早速のご回答ありがとうございます。頑張ります。
補足
何か楽な検索方法があるらしいのですが教えてもらえたらありがたいです。
お礼
何度もすみません助かりますありがとうございました。