【发布时间】:2014-08-28 08:37:56
【问题描述】:
我一直在努力想出 Excel 中的 UDF。基本上我正在寻找的是一个函数,它将接受用户提供的 2 个输入参数(常量),然后该函数将返回预先存储在某个地方的 excel 表中的值之一。这是它的样子:
月高峰期
- 1 月 320 176
- 2 月 320 128
- 三月 368 252
- 4 月 352 128
- 5 月 305 320
函数应该是这样的:=Hours(February, Peak) 然后它会返回二月的高峰时间等等。
感谢所有帮助。非常感谢
编辑:作为注释添加的代码
Public Function calculateHours(ByVal mo As Variant, ByVal period As Variant) As Integer
Dim tablette As Range
Set tablette = Worksheets("Hours").Range("U4:V15")
Set valueRange = Worksheets("Hours").Range("U4:U15")
period = "peak"
For Each ref In valueRange
mo = WorksheetFunction.VLookup(ref, tablette, 1, 0)
Next
ref calculateHours = WorksheetFunction.VLookup(mo, tablette, 2, False)
End Function
当我尝试在 =calculateHours(january, peak) 中使用此函数时,无论参数是什么,我都只能从表中获取最后一个值
【问题讨论】:
-
在您的 UDF 中使用
Application.Vlookup()对您的值表执行查找。 -
您要求基于您想要创建的某些设计的完整功能。请阅读一些关于 VBA 函数的初学者材料,例如Chip Pearson 的站点或 MSDN 上的简单示例,并尝试创建您的函数。然后,如果它给出了一个特定的错误,请在此处发布
-
您可以使用 VLOOKUP 而不是 UDF,就像这样(假设数据保存在 A1:C13 范围内的工作表“小时”中,第 1 行是标题行,当前输入是A1 表示当月,B1 表示高峰/关闭):
=VLOOKUP(A1,Hours!$A$2:$C$13,IF(B1="peak",2,3),FALSE) -
请发布您的部分工作解决方案,以免人们重新创建您的工作。
-
@user3813620 不要使用评论部分发布代码。像我一样编辑你的问题。
标签: excel vba user-defined-functions