ここから本文です

vba countifで別シートの値を検索する方法

アバター

ID非公開さん

2014/5/319:03:00

vba countifで別シートの値を検索する方法

Sheet1のA列3行目から20行目にに9桁の数字があります
Sheet2のA列にも3行目から50行目に9桁の数字があります

Sheet2のB列に、Sheet1とSheet2が一致していたら1、不一致なら0と表示したいです
Vbaでcountifを使いたいのですが、
どう記述すればいいですか

何回やってもできないのでご教示ください
よろしくお願いいたします

補足ありがとうございました!実行してできました。

わがままですが、今回はA列3行目から20行目というふうに始点と終点が決まっていますが、
A列には3行目から2000行目の時もあれば、3行目から300行目という場合もあります。
この場合にcells(i,"A")みたいに、最終行まで実行できるよう指定することはできるのでしょうか?

閲覧数:
4,078
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

編集あり2014/5/321:53:37

一例です。

Sub sample()
Dim rng As Range
With Worksheets("Sheet1").Range("A3:A20")
For Each rng In Worksheets("Sheet2").Range("A3:A50")
If Application.CountIf(.Cells, rng.Value) > 0 Then
rng.Offset(, 1).Value = 1
Else
rng.Offset(, 1).Value = 0
End If
Next rng
End With
End Sub

関数式を埋め込み、その式を消したい
というのなら、こんな感じ。

Sub sample2()
Const cFormula As String = "=IF(COUNTIF(Sheet1!$A$3:$A$20,Sheet2!A3)>0,1,0)"

With Worksheets("Sheet2").Range("B3:B50")
.Formula = cFormula
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub

《返信》
行の終端が不定の場合の一例。
Sub sample()
Dim rng1 As Range, rng As Range
With Worksheets("Sheet1")
Set rng1 = .Range("A3", .Cells(Rows.Count, 1).End(xlUp))
End With
With Worksheets("Sheet2")
For Each rng In .Range("A3", .Cells(Rows.Count, 1).End(xlUp))
If Application.CountIf(rng1, rng.Value) > 0 Then
rng.Offset(, 1).Value = 1
Else
rng.Offset(, 1).Value = 0
End If
Next rng
End With
End Sub

Sub sample2()
Dim i As Long
Const cFormula As String = "=IF(COUNTIF(Sheet1!$A$3:$A$#,Sheet2!A3)>0,1,0)"
i = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("Sheet2")
With .Range("A3", .Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)
.Formula = Replace(cFormula, "#", i)
.Copy
.PasteSpecial xlPasteValues
End With
End With
Application.CutCopyMode = False
End Sub

アバター

質問した人からのコメント

2014/5/4 01:33:14

成功 できました。本当にありがとうございました。大変助かりました。感謝感謝です。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる