2017-11-18 61 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