2011-08-25 66 views
1

我有什么做的,如果列是一个变量?语法在选择,如果列和行的变量范围

这是我以前的帖子

Insert COUNTIF formula when you have variable holding the value

下面是解决方案,但现在我得到了一个新的课题

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

如果什么列是一个变量?

什么是语法,如果都是变量(我的意思是,当列和行是未知的,存储在一个变量thier值),什么是语法,如果列变量和行是多少?

我已经试过这些方式

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

这些方式

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

我无法做出来。

回答

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行到前一列的同一行之和。如果只列变量和行是一个数字

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 
+1

* my 2 cents *:如果你不需要'for'循环中的索引,那么使用这种语句'For Each c In Range(“A1:A10”)'会更快, Excel不需要解释每个循环的'范围' – JMax

+0

@Jmax:非常正确。我专注于这个问题,并错过了这个观点。 –

1

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

"first string" & variable1 

这是2串之间的CONCAT,如果你想添加第三个串,你必须使用另一个符号:

"first string " & variable1 & "second string" 

您的代码:

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

在回答您的评论:

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

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

+0

+1什么:

最后,您可以使用“双参数”版本范围(小区1,小区2)? – niko

+0

@Niko与数字,你的意思是字符串文字(如:“1”或“2”)或数字变量? – Jacob

+0

它显示应用程序定义的错误不知道为什么你可以请改变P列也变量在你的答案这是我在做错误,我认为 – niko

4

要定义的范围,你也可以使用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

为ActiveSheet.Cells(1,“A”)+1 ,我从来没有见过 –

+0

+1是的,我最近才看到这个。出于某种原因,我在脑海里想到当你使用Cells()时,这两个值都必须是数字。 :p – aevanko