似乎没发现EXCEL或OFFICE区就在这儿问了……在很多公式中需要绝对引用单元格
比如SUMPRODUCT((Other!$B$2:$B$110="A")*(Other!$C$2:$C$110="B"))由于不能确定另一个表的非空行数
我在A1单元格中使用公式COUNT(Other!A:A)进行了统计现在如何将A1单元格中的数值换入上个公式中的$110处呢?

解决方案 »

  1.   

        Dim sRow As String
        Range("A1").Select
        ActiveCell.Formula = "=COUNT(Other!A:A)"
        sRow = ActiveCell.Value
        Range("B1").Select
        ActiveCell.Formula = "=SUMPRODUCT((Other!$B$2:$B$" & sRow & "=""A"")*(Other!$C$2:$C$" & sRow & "=""B""))"
      

  2.   

    否则怎么将值 110 转成公式中的 $110?
    好像没有现成的 Range() 函数吧。
      

  3.   

    用INDIRECT和INDEX似乎都可以把数值转换过来
    只是用$B$(INDIRECT(A1))和$B$(INDEX(A1,1))这样都会报错
      

  4.   

    $B$110 是固定的格式,没有 $B$(...) 这种格式。
    除非你有这样的函数 Range("B",110)。
      

  5.   

    先修正一下上面的那个公式:
    =SUMPRODUCT((Other!$B$2:$B$110="A")*Other!$C$2:$C$110)使用公式:
    =CONCATENATE("=SUMPRODUCT((Other!$B$2:$B$" & INDEX(A1,1) & "='A')*Other!$C$2:$C$" & INDEX(A1,1) & ")")
    单元格显示内容为:
    =SUMPRODUCT((Other!$B$2:$B$110="A")*Other!$C$2:$C$110)
    但只是一行文本有让这行文本运行的函数吗?
      

  6.   

    没有可用的函数,只能在 VBA 中才可以给 Formula 属性赋值。
      

  7.   

    真是蠢呢
    度娘说公式都是那样子的俺就没想到要修改一下用公式=SUMPRODUCT((Other!$B:$B="B")*(Other!$C:$C="C")*(Other!$D:$D="D")*Other!$A:$A)在新表中测试通过将工作表格进行修改
    却出#VALUE!错误
    检查表格
    发现产生错误原因是工作表格内有标题行
    即处理$A:$A时出现数字与字符混合情况
    删除标题行
    正常看来
    上面那个公式使用$A$2也是有道理的呢……
      

  8.   

    实在不行将 Other 工作表复制一份,去掉标题行,隐藏,供统计用。又:既然数据行数不确定,说明数据是动态生成的,可以在生成时给 Formula 赋值吧?