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