【问题标题】:Add variable to index match function in Excel在 Excel 中将变量添加到索引匹配函数
【发布时间】:2020-02-04 07:55:36
【问题描述】:

需要将变量添加为范围但不能连接给出错误

Dim lr As Long
   lr = Range("A1").CurrentRegion.Rows.Count

Dim arrayRangeAll As String  
Dim arrayRangeID As String  

  arrayRangeAll = Range("A2:L" & lr).Address  
  arrayRangeID = Range("A2:A" & lr).Address 

Range("N1").Select  
ActiveCell.FormulaR1C1 = "Client_Coorelation"  
Range("N2").Select  
ActiveCell.FormulaR1C1 = _
    "=INDEX(SMSv2!" & arrayRangeAll & ",MATCH(SMSv1!RC[-11],SMSv2!" & arrayRangeID & ",0),4)"

【问题讨论】:

  • 错误是什么?
  • 运行时错误'1004':应用程序定义或对象定义错误

标签: excel vba indexing concatenation match


【解决方案1】:

类似这样的东西,但我不确定你有什么工作表 SMSv1。该字符串表示以下公式,来自我的 20 行示例工作表。

=INDEX(SMSv2!$A$2:$L$20,MATCH(SMSv1!RC[-11],SMSv2!$A$2:$A$20,0),4)

    Dim lr As Long
    lr = Range("A1").CurrentRegion.Rows.Count

    Dim arrayRangeAll As String
    Dim arrayRangeID As String

    arrayRangeAll = Range("A2:L" & lr).Address
    arrayRangeID = Range("A2:A" & lr).Address

    Range("N1").Select
    ActiveCell.FormulaR1C1 = "Client_Coorelation"
    Range("N2").Select
    ActiveCell.FormulaR1C1 = "=INDEX(SMSv2!" & arrayRangeAll & ",MATCH(SMSv1!RC[-11],SMSv2!" & arrayRangeID & ",0),4)"

【讨论】:

  • 您是否添加了任何修改我仍然收到运行时错误“1004”:应用程序定义或对象定义错误
  • 您能否提供一些示例数据以供使用,然后我可以更新答案。我对公式中提到的两个工作表 SMSv1 和 SMSv2 的内容不清楚
  • 用上面的方法也试试,但是又遇到了一个错误
【解决方案2】:

添加第二个,因为这可能与变量无关,但与您分配给 FormulaR1C1 属性的公式有关。

使用此处提供的示例:https://www.excel-easy.com/vba/examples/formulaR1C1.html

单元格 B3 包含数字 2,下面的 VBA 用于将公式添加到单元格 D4。

Sub foo_1()

    Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10"

End Sub

但是,使用示例中的公式样式和相同的值不会。

Sub foo_2()

    Range("D4").FormulaR1C1 = "=RC[-1-2]*10"

End Sub

并给出 1004 运行时错误。

使用 offset 函数可以实现很多相同的效果,而且其他人可能更熟悉:

Sub foo_3()

    Range("D4").Formula = "=offset(D4,-1,-2)*10"

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多