2011-08-25 39 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