[VBA]他シートから、検索した文字の左隣の数値を合計したい
エクセルのシートの
G列に検索対象の文字列があり、
F列にその文字列に対応した数値があります。
以下のような感じです
・・・ F列 G列 ・・・
100 AAA
200 AAA
500 BBB
800 BBB
700 BBB
このシート(ここでは「シートX1」と呼ぶ)に対して、
別シートのセルから
kensaku1というユーザ定義関数を使って
該当する検索文字列の左隣(F列)の値を合計したいと
思ってます。また引数は以下のように
"シート名"と"検索文字列"を想定してます。
=kensaku1("シート名","検索文字列")
したがって、やりたいことは何かといいますと、
=kensaku1("シートX1","BBB")とすると、
500+800+700で2000がセルに入ればOKです。
ネットで調査してある程度のコードを見つけることは
できました。
コードは一番下にのせております。
しかし、コードの★1からデバッグすると、
うまく合計した値が返ってくるのですが、
いざシートに
=kensaku1("シートX1","BBB")とすると、
合計値が返ってきません。
デバッグすると★2の場所でNothingになってしまいます。
どなたか
原因を教えていただけないでしょうか?
環境はWindows XP SP2
Excel2000です。
-------------------------------------------
Function kensaku1(sheetName As String, myKey As String) As String
Dim c As Range
Dim FirstAdd As String
Dim Gokei As Long
Gokei = 0
Worksheets(sheetName).Activate
Set c = ActiveSheet.Columns("G").Find( _
What:=myKey, _
LookIn:=xlValues, _
LookAt:=xlPart, _
MatchCase:=False)
If Not c Is Nothing Then ←★2
FirstAdd = c.Address
Do
Gokei = Gokei + c.Offset(, -1).Value
Set c = ActiveSheet.Columns("G").FindNext(c)
If c.Address = FirstAdd Then Exit Do
Loop Until c Is Nothing
End If
kensaku1 = Gokei
End Function
Sub test() ←★1
Call kensaku1("シートX1","BBB")
End Sub
-------------------------------------------
お礼
ありがとうございました。補足も助かります。