我有一个excel工作簿,我在其中创建了许多lambda函数,每个函数都在名称管理器中命名。例如,我有一个名为WeatherTbl的表,如下所示:
Date Place Humidity Temp Windspeed
1/1/2022 Athens 87 12 4
2/1/2022 Athens 83 11 3
3/1/2022 Athens 81 13 3
4/1/2022 Athens 79 10 4
我创建了一个名为Temp的lambda函数,它返回Temp列的date 1和date 2之间的值:
Temp=LAMBDA(date1;date2;INDEX(FILTER(WeatherTbl;(WeatherTbl[Date]>=date1)*(WeatherTbl[Date]<=date2));;4))
在excel工作表中,Temp函数工作得很好,返回一个动态数组。我的问题是:我可以通过VBA访问这个函数吗?在VBA函数中,我想获取返回的动态数组并在计算中使用它下面我给予了一个抽象的例子,说明我想如何使用它。
Dim TempArray As Object
set TempArray=Temp("1/1/2022","4/1/2022")
For Each element In TempArray
if a.value=4 then a.value=5
Next element
该命令
ActiveWorkbook.Names(Temp)
返回字符串=LAMBDA(日期1;日期2;索引(过滤器(天气表;(天气表[日期]〉=日期1)*(天气表[日期]〈=日期2));;4))我不能用。
1条答案
按热度按时间agxfikkp1#
您可以使用
Evaluate
方法执行LAMBDA。你需要创建一个字符串来表示函数调用,包括LAMBDA能理解的形式的参数。
在这种情况下,您的LAMBDA需要日期序列号。
注1:您的日期是不明确的。它们可能都是一月,或者都是一个月的第一天。您需要调整演示代码的日期常量以匹配您的数据。
注2:在LAMBDA公式中,您的本地使用
;
,我的使用,
。在Evaluate字符串中,您 * 可以 *(我不确定)将,
更改为;