[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートの重複データ検索』(たんぽぽ)
OSはXP バージョン2003
はじめまして。 sheet1のA列に会社の名前、B列にデータ件数の合計 sheet2のA列に会社の名前とB列にクレーム件数の合計が入っています。
順序はB列を基準に数字の大きい順です。なのでSheet1と2の並び順は異なっております。
こんな感じです。 sheet1 Sheet2 A列 B列 A列 B列 AAA CO.,LTD 150 BBB CO.,LTD 90 BBB CO.,LTD 120 AAA CO.,LTD 70 CCC CO.,LTD 90 CCC CO.,LTD 2
Sheet1と2のA列を検索し、同一の値があったらSheet1のC列にSheet2のB列の値を入れたいと思ってます。
A列 B列 C列 AAA CO.,LTD 150 70 BBB CO.,LTD 120 90 CCC CO.,LTD 90 2
たとえば関数を使って IF(OR(C1="",COUNTIF(Sheet2!A:A,A1)=0),"",INDEX(Sheet2!A:B,MATCH(A1,Sheet2!A:A,0),2))
みたいな感じでもいけるかな、と思ってますが(まだ試してませんが) VBAでも同じようなことが出来るでしょうか?
>(まだ試してませんが)
試してみようよ。
>VBAでも同じようなことが出来るでしょうか?
うん。もちろんできる。 ・関数をそのままVBAでセルに入れ込むことができる。 ・VBAで判定して処理することもできる。この方法は、千差万別、たくさんあるね。
★質問の主旨は、できるかできないかを確かめたい? それとも、コードが欲しい?
(ぶらっと)
とりあえず、マッチングのパターンを3つほど。 いずれも、処理効率をアップする手当は割愛している。 なお、アップされた IF(OR(C1="",COUNTIF(Sheet2!A:A,A1)=0),"",INDEX(Sheet2!A:B,MATCH(A1,Sheet2!A:A,0),2)) これって、C1 はだめなんじゃない?
Sub Sample1()
With Sheets("Sheet1")
.Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 2).Formula = _
"=IF(OR(A1="""",COUNTIF(Sheet2!A:A,A1)=0),"""",INDEX(Sheet2!A:B,MATCH(A1,Sheet2!A:A,0),2))"
End With
End Sub
Sub Sample2()
Dim c As Range
Dim a As Variant
With Sheets("Sheet1")
For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
a = Application.Match(c.Value, Sheets("Sheet2").Columns("A"), 0)
If IsNumeric(a) Then
c.Offset(, 2).Value = Sheets("Sheet2").Range("B" & a).Value
Else
c.Offset(, 2).ClearContents
End If
Next
End With
End Sub
Sub Sample3()
Dim dic As Object
Dim c As Range
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Sheet2")
For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
dic(c.Value) = c.Offset(, 1).Value
Next
End With
With Sheets("Sheet1")
For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
c.Offset(, 2).Value = dic(c.Value)
Next
End With
End Sub
(ぶらっと)
すいません。関数間違ってました・・・(汗)
しかも質問の言葉が足りませんでした。
VBAでの関数の組み込み方を知らなかったので、どうするのかと思い
なんかヒントをいただければなー、と。
サンプル1がすごく参考になりました。
内容分かりやすかったです。関数の使い方も勉強できました。
ありがとうございました。
(たんぽぽ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.