在阵列公式中部署VBA单元格引用

时间:2015-03-02 19:39:30

标签: excel vba excel-vba

所以我试图用这个子程序做一些事情,但是不能让VBA执行.FormulaArray函数。

  1. 使用offset&创建一个命名范围拉斯特罗功能
  2. 使用单元格引用插入数组公式
  3. -

    Sub namedrange()
        Dim firstrow As Long
        Dim LastRow As Long
        Dim ColToLetter, absolute, Title, mc, mc1
    
        ActiveCell.Offset(0, -1).Select
        absolute = ActiveCell.Address
        LastRow = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
        firstrow = ActiveCell.Row
        ColLetter = Mid(ActiveCell.Address, 2, 1)
        ActiveSheet.Range(ColLetter & firstrow & ":" & ColLetter & LastRow).Name = Range(ColLetter & "1").Value
        Title = Range(ColLetter & "1").Value
        ActiveCell.Offset(0, 1).Select
        mc = ActiveCell.Offset(-1, 0).Address
        mc = Mid(mc, 2, 3)
        mc1 = Replace(mc, "$", "")
    
        ActiveCell.FormulaArray= "=IF(ROWS(mc & "":"" & mc1)>SUM(IF(FREQUENCY(IF(Title<>"""",MATCH(Title,Title,0)),ROW(Title)-ROW(absolute)+1),1)),"""",INDEX(Title,SMALL(IF(FREQUENCY(IF(Title<>"""",MATCH(Title,Title,0)),ROW(Title)-ROW(absolute)+1),ROW(Title)-ROW(absolute)+1),ROWS(mc & "":"" & mc1))))"
    End Sub
    

    公式栏显示vba函数输出的内容,这不是我想要的。我不知道为什么它不会输出我创建的参考文献,例如mc应该是&#34; $ A $ 2&#34;不是&#34; mc&#34;。

    当我尝试执行FormulaArray代码时,我得到运行时错误1004&#34;无法设置Range类的FormulaArray属性&#34;

1 个答案:

答案 0 :(得分:0)

您的.FormulaArray内容有一些拼写错误。这是它应该是什么样子(假设所有上面的代码都很好):

ActiveCell.FormulaArray= "=IF(ROWS(" & mc & ":" & mc1 & ")>SUM(IF(FREQUENCY(IF(Title<>" & chr(34) & chr(34) & ",MATCH(Title,Title,0)),ROW(Title)-ROW(absolute)+1),1))," & chr(34) & chr(34) & ",INDEX(Title,SMALL(IF(FREQUENCY(IF(Title<>" & chr(34) & chr(34) & ",MATCH(Title,Title,0)),ROW(Title)-ROW(absolute)+1),ROW(Title)-ROW(absolute)+1),ROWS(" & mc & ":" & mc1 & "))))"

一般来说,请记住,如果您希望将变量的值打印到字符串中,则不能写"a=mc+3"而是a = " & mc & "+3"