在VBA中以语法形式编写公式

在VBA中以语法形式编写公式,vba,excel,Vba,Excel,我想在一系列单元格中运行一个秩公式。我在琢磨它为什么不起作用。Lastrow只是计算行数的公式 Range("B1:B" & Lastrow).Formula = "=RANK(A1,Offset(" & Chr$(36) & "A1" & Chr$(36) & "," & Lastrow & ",0))" 我觉得Chr$(36)有些问题,但当我尝试Chr(36)时,它也不起作用。(移除这些chr(36)并仅使用偏移量(A1…等)即可)

我想在一系列单元格中运行一个秩公式。我在琢磨它为什么不起作用。Lastrow只是计算行数的公式

Range("B1:B" & Lastrow).Formula = "=RANK(A1,Offset(" & Chr$(36) & "A1" & Chr$(36) & "," & Lastrow & ",0))"
我觉得Chr$(36)有些问题,但当我尝试Chr(36)时,它也不起作用。(移除这些chr(36)并仅使用偏移量(A1…等)即可)


提前谢谢

很难看出你想做什么。下面的VBA代码行至少可以工作

Range("B1:B" & LastRow).Formula = "=RANK(ROW(),$A1:$A$" & LastRow & ",0)"
您的问题似乎与RANK()函数有关。它有3个参数,(1)秩,(2)查找秩的范围和(3)升序/降序。在公式中,缺少第一个参数,并且“Offset(&Chr$(36)&“A1”&Chr$(36)&“,&LastRow”没有描述范围,读作
Offset($A1$,300
,缺少右括号)


我上面的公式建议将行号表示为秩,表示第1行为1,第2行为2,等等。但如第3个参数所示(取自您的公式),行号是递减的第二个参数是a列中A1和最后一行之间的范围。这可能不是您想要的,但我希望您能够调整它。

很难看到您想要做什么。下面的VBA代码行至少可以工作

Range("B1:B" & LastRow).Formula = "=RANK(ROW(),$A1:$A$" & LastRow & ",0)"
您的问题似乎与RANK()函数有关。它有3个参数,(1)秩,(2)查找秩的范围,以及(3)升序/降序。在您的公式中,缺少第一个参数,您的“Offset”(&Chr$(36)&“A1”&Chr$(36)&“,”和“LastRow”没有描述范围,读作
Offset($A1$,300
,缺少右括号


我上面的公式建议将行号表示为秩,表示第1行为1,第2行为2,等等。但是,正如第3个参数(取自您的公式)所示,递减,并且作为第二个参数,a列中A1和最后一行之间的范围。这可能不是您想要的,但我希望您能够调整它。

太傻了!
range(“B1:B”&Lastrow.Formula=“=RANK(A1,A1:Offset(&Chr(36)和“A”&Chr(36)和“1”&Lastrow&“0”)”
你让它工作了吗?为什么你要使用Chr(36)而不是仅仅在字符串中添加$?它工作了,但感谢你建议用“$”而不是Chr(36)。我不认为我可以这么做!太傻了!
Range(“B1:B”&Lastrow).Formula=“=RANK(A1,A1:Offset(&Chr(36)&“A”&Chr(36)&“1”&Lastrow&“0”)”
这样就可以工作了?为什么要使用Chr(36)而不是只向字符串中添加$呢?它可以工作,但感谢您建议使用“$”而不是Chr(36)。我不认为我被允许这么做!嗨,谢谢你的回答。我已经弄明白了,但是你对Row()函数的建议很聪明,因为它为我删除了额外的列。谢谢!嗨,谢谢你的回答。我已经弄明白了,但是你对Row()函数的建议很聪明,因为它为我删除了额外的列。谢谢!