【问题标题】:VBA Dynamically Building A Formula From An ArrayVBA 从数组动态构建公式
【发布时间】:2021-09-01 14:39:54
【问题描述】:

我正在尝试基于从单元格生成的数组(以逗号分隔)动态构造公式,因为数组中有不同数量的元素,我需要附加一个新的“公式块”在 for each 循环之后生成的 if 语句中使用的更新元素。 VBA 在InvestigateFormula = 行中抛出类型不匹配错误,这是我的代码:

For Each Type In ToIgnore()
    InvestigateFormula = "(ISNUMBER(SEARCH(*" & ToIgnore(Type) & "*," & _
        AssetTypesCol & "2)),"
    FullFormula = InvestigateFormula & FullFormula
Next Asset
    FinalInvestigateFormula = "=IF(OR" & FullFormula & "),""Ignore"", """")"
ActiveCell.Formula = FinalInvestigateFormula

请让我知道是否有更简单的方法来执行此操作,或者我可以如何更正上述代码。顺便说一句,我没有声明一个变体,我只是将ToIgnore() 声明为字符串,并使用包含逗号分隔值的变量中的 split 函数来生成要循环的数组/项目。

【问题讨论】:

  • 您的字符串以额外的逗号结尾。您需要在循环之后从FullFormula 中删除结尾的,
  • COUNT(SEARCH( 公式(不需要通配符顺便说一句)与文本项数组一起使用会更简单(并且更短),或者将数组放入一系列单元格并使用@ 987654327@ 将搜索单元格作为第一个参数,将单元格范围作为第二个参数。
  • @Rory 我正在使用它来生成一个公式,该公式允许我根据值是否在指定的列中忽略某些行,我将如何写出这个公式来做到这一点?我实际上正在修改我之前使用过的现有宏,该公式可以正常工作,但现在有更多要求需要我添加此动态列表以排除值。
  • 类似:FinalInvestigateFormula = "=IF(COUNT(SEARCH({""" & Join(ToIgnore, """,""") & """}," & AssetTypesCol & "2)),""Ignore"", """")"
  • @Rory 非常感谢您完成了我需要做的事情,非常感谢。

标签: excel vba automation excel-2010


【解决方案1】:

“类型”是保留名称?试试 strType 吗?

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2023-02-09
    • 1970-01-01
    • 2018-10-03
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多