【发布时间】:2013-02-14 03:51:44
【问题描述】:
我有工作表 A、B 和 C。工作表 A 包含一个带日期的列。 B 和 C 各包含两列:一列包含日期,一列包含值。例如
工作表 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 运行时,它返回分配给工作表W 中date 的值。例如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
【问题讨论】:
-
展示现有代码总是有帮助的。