ワークシート A、B、C があります。ワークシート A には日付の列が含まれています。B と C にはそれぞれ 2 つの列が含まれています。1 つは日付、もう 1 つは値です。例えば
ワークシート A:
     A           B
1    2001-01-01  ---
2    2001-01-02  ---
ワークシート B:
     A           B
1    2001-01-01  1
ワークシート C:
     A           B
1    2001-01-02  2
=Search(W, date)ワークシートから実行すると、ワークシートAに割り当てられた値を返す関数が必要です。たとえば。dateWSearch(C, "2001-01-02")=2
これは、指定された日付での通貨レートの検索の抽象的なバージョンです。複数のワークシートに通貨のレートが含まれているため、検索すると、どのワークシート (通貨) を選択するかがわかります。
そのような関数を定義する方法は? パラメータをカスタム マクロに渡そうとしましたが、Excel で不可解なエラーが発生し続けます。選択したセルをソースとするマクロも使いやすそうですが、関数の方がいいですね。
編集:私の試みはうまくいきません
Function FindRate()
    Dim FindString As String
    Dim Rate As String
    Dim Src As Range
    Dim Found As Boolean
    MsgBox sheet_name
    Rate = "Not found "
    Set Src = Application.ActiveCell
    FindString = "2006-12-19"
    Sheets("cur CHF").Activate
    Found = False
    For Each c In [A1:C2000]
        If c.Value = FindString Then
            Rate = c.Offset(0, 1).Value
            Found = True
            Exit For
        End If
        Next
    MsgBox Rate
    'FindRate = Rate
End Function
Function Rate(cname As String)
    Dim sheet_name As String
    Dim c2s As New Collection
    c2s.Add "cur worksheet name", "cur"
    sheet_name = c2s.Item(cname)
    Call FindRate(sheet_name)
End Function