2017-11-18 126 views
0

我想在单元格范围内运行排名公式。我在挠挠我的头,为什么它不工作。拉斯特罗只是计算行数的公式。在VBA中将公式作为语法写入

Range("B1:B" & Lastrow).Formula = "=RANK(A1,Offset(" & Chr$(36) & "A1" & Chr$(36) & "," & Lastrow & ",0))" 

我觉得这是与CHR $(36)做错事,但是当我尝试CHR(36),它也不起作用。 (删除这些chr(36)的和只有偏移量(A1 ...等)工作正常)。

在此先感谢!

+0

被愚蠢!'Range(“B1:B”&Lastrow).Formula =“ = RANK(A1,A1:偏移量(“&Chr(36)&”A“&Chr(36)&”1“)&Lastrow &“,0))”' – mrhappysmile

+0

所以你得到它的工作? – ashleedawg

+1

为什么你使用Chr(36)而不是只给$加入字符串? – ashleedawg

回答

2

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

Range("B1:B" & LastRow).Formula = "=RANK(ROW(),$A1:$A$" & LastRow & ",0)" 

你的问题似乎与RANK()函数。它有3个参数,(1)等级,(2)找到等级的范围和(3)上升/下降。在公式的第一个参数丢失和您的“偏移(” & CHR $(36)&“A1” & CHR $(36)&“” & LASTROW”没有描述的范围内,与右括号读为Offset($A1$,300丢失

我上面的公式建议行号作为等级,这意味着1行1,2行2等,但降序,如第三个参数(取自您的公式)所示,作为第二个参数的范围在A1和LastRow之间的列A中,它可能不是你想要的,但是我希望你能够调整它

+0

嗨,感谢您的回复。我已经想通了,但是你对Row()函数的建议很聪明,因为它为我删除了额外的列。谢谢! – mrhappysmile