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

範囲が( "B1:B"&Lastrow).Formula = " = RANK(A1、A1:Offset( "&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、行番号2などのように行番号を示唆していますが、3番目の引数(式から取得)と2番目の引数A1とLastRowの間の列Aで、おそらくあなたが望むものではありませんが、あなたがそれを微調整することができることを望みます。

+0

ご回答いただきありがとうございます。私はそれを理解しているが、私のために追加の列を削除するので、Row()関数のあなたの提案は賢いです。ありがとう! – mrhappysmile

関連する問題