【问题标题】:Type Mismatch error when trying to insert index match formula using vba?尝试使用 vba 插入索引匹配公式时出现类型不匹配错误?
【发布时间】:2017-07-18 07:18:11
【问题描述】:

我正在尝试使用 vba 插入以下带有通配符的索引匹配公式,如下所示:

Cells(i, 13) = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(" * " & Range(""C"" & i).Value & " * ",Contacts!$B:$B,0)),"""")"

由于某种原因,我收到类型不匹配错误。请问有人可以告诉我我做错了什么吗?

编辑:

Cells(i, 13).Formula = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(""*"" & """ & Range("G" & i).value & """ & ""*"",Contacts!$B:$B,0)),IFERROR(INDEX(Contacts!$C:$C,MATCH(""*"" & LEFT(""" & Range("G" & i).value & ,7) """ & ""*"",Contacts!$B:$B,0)),""""))"

【问题讨论】:

  • 如果包含在带引号的文本字符串中,引号字符需要加倍。

标签: vba excel excel-formula formula


【解决方案1】:

就像你放四个双引号得到两个一样,你需要放两个来得到一个:

Cells(i, 13).Formula = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(""*"" & """ & Range("C" & i).Value & """ & ""*"",Contacts!$B:$B,0)),"""")"

【讨论】:

  • 是的,我现在看到了。我的解决方案中没有包含嵌套引号。
  • @Scott Craner 谢谢你的作品。请参阅已编辑的问题。如何在此代码中添加 Left 函数?
  • 请不要在得到答案后更改问题,它会打开那些已经回答的人投反对票。请回滚您的问题并提出一个新问题。 @user7415328
【解决方案2】:

使用

Cells(i, 13).Formula = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(""*" & Range("C" & i).Value & "*"",Contacts!$B:$B,0)),"""")"

【讨论】:

    【解决方案3】:

    您需要用.Formula 指定它是一个公式:

    Cells(i, 13) = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(""*" & Range("C" & i).Value & "*"",Contacts!$B:$B,0)),"""")"
    

    此外,您的代码无法正确识别您的范围(“C”)

    【讨论】:

      【解决方案4】:

      abc 在活动表的 C5 中,

      Dim i As Long
      i = 5
      With ActiveSheet
          .Cells(i, 13).Formula = "=IFERROR(INDEX(Contacts!$C:$C,MATCH("" * " & .Cells(i, "C").Value & " * "",Contacts!$B:$B,0)),"""")"
      End With
      

      这会产生公式,

      =IFERROR(INDEX(Contacts!$C:$C,MATCH(" * abc * ",Contacts!$B:$B,0)),"")
      

      ... 在 M5 中。我不完全清楚你是否想要换行空间。

      【讨论】:

        猜你喜欢
        • 2020-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多