如何实现高阶函数" map"在VBA中

时间:2015-04-28 15:30:11

标签: excel-vba haskell vba excel

Clean Code in Excel?中,我寻找一种在Excel / VBA中实现复杂用户定义函数(UDF)的更简洁方法。

因此,假设我已在Excel中将函数f: A -> B实现为UDF。让我们进一步假设我在单元格A1中有10个A值:A10和单元格B1中的"=f(A1)",自动完成到单元格B10。

现在,当一个新的A值到来时,我必须做两件事:

  1. 将值添加到新单元格A11和
  2. 通过调用A11 扩展B列中的自动完成功能。
  3. 因为我的工作簿中有许多功能可以引用A值,所以我想自动完成第二步。

    在我的函数/ Haskell中,我会得到as的列表,并将bs列表表示为

    bs = map f as
    

    因此,当我更改了as时,bs只要重新评估就会更新。

    我确信这可以在具有命名范围的标准Excel / VBA中干净地实现。我想象如下:

    • 具有命名范围NamedAs:=" A1:A10"
    • 在单元格B1中只有一次调用map f NamedAs
    • 的VBA版本
    • 此调用自动填充" NamedAs"
    • 的foreach元素

    然后,当我将新的A值添加到范围" NamedAs"并重新评估工作表,我会完成。 (我不需要更改B列中的调用,只强制重新评估)

    VBA版本"映射f NamedRange"实施??

    PS:在写作时,在我看来,这个问题更多的是关于返回范围的函数的定义/用法 - 高阶可能是次要但有趣的话题......

    PPS:我想知道在FP / Haskell和VBA中是否有人都是冗长的: - )

    PPPS:不,我不能使用FCell。

0 个答案:

没有答案