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

Excel 如果列和行是变量,则选择范围,excel,vba,excel-formula,Excel,Vba,Excel Formula,这是我以前的帖子 下面是解决方案 Range("Q" & minRow + 1).Formula = "=COUNTIF(P$" & minRow & ":P" & minRow & ",P" & minRow + 1 & ")=0" 我有一个新问题。如果列是一个变量怎么办 如果两者都是变量(列和行是未知的,它们的值存储在变量中),那么语法是什么?如果列是变量,行是数字,那么语法是什么 我试过这些方法 "=COUNTIF( & C

这是我以前的帖子

下面是解决方案

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"

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

"first string" & variable1
这是两个字符串之间的concat,如果要添加第三个字符串,必须使用另一个与符号:

"first string " & variable1 & "second string"
您的代码:

 "=COUNTIF(" & columnz & "$"  & minRow & ":" & columnz & minRow & ",P" & (minRow + 1) & ")=0"
针对你的评论:

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

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

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

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"    
因此,您可以:

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"    

我想补充一下上面的回答,偏移量非常有用,特别是在循环时。
e、 g:

您还可以通过使用原生Excel(R1C1)语法使VBA更具可读性,并消除对“变量公式”的需要。像

myRange.offset(0,i).FormulaR1C1 = "=SUM(R1C[-1]:RC[-1])"
这意味着从上一列的第1行到上一列的同一行的总和

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


可能是这样的:

startRow=3
endRow=17

myRange=(“B”和StartRow&“:”和“B”和EndRow)

那么你的范围=(“B3”:“B17”)

@Niko带数字,你是指字符串文字(如:“1”或“2”)还是数字变量?它显示应用程序定义的错误不知道为什么你可以在回答中将p列也更改为变量这就是我犯错误的地方我想我的2美分:如果你不需要
循环的
内的索引,对于范围内的每个c(“A1:A10”)
使用此类语句会更快,因为这样Excel就不必在每个c上解释范围loop@Jmax:非常正确。我把注意力集中在这个问题上,忽略了这个观点。+1是的,我最近才看到这一点。出于某种原因,我认为当使用Cells()时,两个值都必须是数字:P