ワークシート 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
に割り当てられた値を返す関数が必要です。たとえば。date
W
Search(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