在数组公式中部署VBA单元格参考

问题描述:

所以我试图用这个子程序做几件事情,但不能让VBA执行.FormulaArray函数。在数组公式中部署VBA单元格参考

  1. 创建一个名为范围内使用偏移& LASTROW功能
  2. 使用单元格引用插入到数组公式

-

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应该是“$ A $ 2”而不是“mc”。

而且当我尝试执行FormulaArray代码中,我得到一个运行时错误1004“无法设置范围类的FormulaArray属性”

+0

在你的语句中'行(mc&“”:“”&mc1)'你的双引号计算为两个空字符串。真正使用CHR(34)来获取字符串中的引号。 – Kyle 2015-03-02 19:43:23

.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"

+0

啊,这就是为什么它不起作用,我不得不尝试,看看它是如何工作的。谢谢你们。 – Zebra 2015-03-02 20:19:01

+0

好吧,那么如何打印字符串中其他引用的值? IF(标题& 我有“标题”和“绝对”作为我不能打印 – Zebra 2015-03-02 20:38:25

+0

@Zebra逻辑总是相同的引用。如果你想在变量的值,你总是要嵌套它,就像我上面展示的那样:'“IF(”&Title&“”' – 2015-03-02 20:45:23