这是我之前的帖子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"
答案 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”)