如果列和行是变量,则选择范围

时间:2011-08-25 12:02:09

标签: excel vba excel-formula

这是我之前的帖子Insert COUNTIF formula when you have variable holding the value

以下是解决方案。

Range("Q" & minRow + 1).Formula = "=COUNTIF(P$" & minRow & ":P" & minRow & ",P" & minRow + 1 & ")=0"

我有一个新问题。如果列是变量怎么办?

如果两者都是变量(列和行是未知的并且它们的值存储在变量中)的语法是什么?如果列是变量且行是数字,那么语法是什么?

我尝试过这些方法

"=COUNTIF( & Columnz $1: & Columnz &2 ,& Columnz &2000)=0"

和这些方式

"=COUNTIF( "& Columnz" $1: " & Columnz"2,& Columnz &2000)=0"

4 个答案:

答案 0 :(得分:5)

要定义范围,您还可以使用Cells,例如:

ActiveSheet.Cells(1,1)           '=Range ("A1")
ActiveSheet.Cells(1,"A")         '=Range ("A1")

如果要定义范围,可以执行以下操作:

Range(Cells(1,1), Cells(10,5))   '=Range("A1:E10")

因此,您可以这样做:

'where Columnz is a Long or an Integer
"=COUNTIF(" & Range(Cells(1, Columnz), Cells(2, Columnz)).Address & "," & Cells(2000,Columnz).Address & ")=0"    

答案 1 :(得分:2)

我想补充上面的反应,OFFSET非常有用,特别是在循环时。
例如:

With Range("B3")
    For i = 1 to 10
        .offset(0, i) = "something"
    Next i
End With

您还可以使VBA更具可读性,并通过使用本机Excel(R1C1)语法消除对“变量公式”的需求。喜欢

myRange.offset(0,i).FormulaR1C1 = "=SUM(R1C[-1]:RC[-1])"

表示从前一列的第1行到上一列的同一行的总和。

最后,你可以使用RANGE的“双参数”版本(cell1,cell2):

With Range("B3")
    For i = 1 to 10
        .offset(0, i).formula = "=SUM(" & Range(cells(10, 1),cells(10, i)).address & ")"
    Next i
End With

答案 2 :(得分:1)

行号已经是示例中的变量:minRow。字符串连接使用VB / A中的&符号(&)完成。你是正确的一半,但错过了第二个&符号。你可以这样想:

"first string" & variable1

这是两个字符串之间的连续,如果你想添加第三个字符串,你必须使用另一个&符号:

"first string " & variable1 & "second string"

您的代码:

 "=COUNTIF(" & columnz & "$"  & minRow & ":" & columnz & minRow & ",P" & (minRow + 1) & ")=0"

回应你的意见:

"=COUNTIF(" & columnz & "$1" & ":" & columnz & "1,P2)=0"

只需从字符串中删除变量,并在其他字符串文字中包含该行。

答案 3 :(得分:0)

可能是这样的:

startRow = 3
endRow = 17

myRange =(“ B”&StartRow&“:”&“ B”&EndRow)
那么您的范围=(“ B3”:“ B17”)