Excel中引用变量的Range区域

2025-01-07 21:41:13
推荐回答(5个)
回答1:

  1. 因为要用VB做循环,所以Range的边界必须要用变量。

  2. 程序大概是这样的,一堆xls文件,每个有n个sheets, 每个sheet的表头基本上是一样的,但记录的数据有多有少,开始和结束的行列数都不同。

  3. 所以要用VB做循环,依次把文件打开,定位到每个sheet中数据区的第一行一列和最后一行一列,读出iRow和iColumn,调用excel的Average函数把平均值算出来。

  4. 现在其他都弄好了,就是调用函数中的单元格区域/范围的引用总是搞不定,VB不认那个,表达式写上去,正行立马就变成红的了。 
      

回答2:

range()里面有两种都可以
1.
一个表示单元格(区域)地址的字符串,比如"a1:b10",只要计算结果满足这种字符串,就可以
range("a2:"
&
"c"
&
20),其中除了运算符(&)的任何一部分都可以是变量
2.
range(cells1,cells2),表示左上角为单元格cells1到右下角为cells2的一个矩形区域。变量可以在cells(row,column)中

回答3:

不能这么反回引用范围。这样试试。

Function myRange(a, b, c)
d = Split(Cells(1, c).Address, "$")(1)
'd = "F"
myRange = d & a & ":" & d & b
End Function

然后公式用=countif(INDIRECT(myRange(4,$a$1,column()),"X")

column()重复,删掉一个

回答4:

你赋值写反了,改一下,我给你简化一下吧
Public Function myRange(a, b, c, d)
myRange = Range(Cells(a, b), Cells(c, d))
End Function
你再试试

回答5:

很多问题:
1,统计个数,那么countif在哪儿呢?
2,统计值为x的单元格,那么x在哪儿呢?
3,为什么要赋值呢?
4,为什么要这么多参数?列是所在列,行信息也有,除了x,其实根本不需要其他参数。

Function myRange(a)
myRange = Application.WorksheetFunction.CountIf(Range(Cells(4, ActiveCell.Column), Cells([a1], ActiveCell.Row)), a)
End Function