私は、可視セル上でのみ実行されるように、自動フィルタリングされたスプレッドシート上でPercentRank関数を実行しようとしています。私はつまり、範囲オブジェクトを定義しようとした:可視範囲のVBA関数
Dim x As Range
x = ActiveSheet.Range("K1:K6027").Rows.SpecialCells(x1CellTypeVisible)
し、その範囲に関数すなわち使用してみました:
PercentRank = WorksheetFunction.PercentRank(Range(x, *value to be ranked*))
をしかし、そのコードは、「エラーコンパイル:引数オプションではありません」を返すメッセージを。私はそれが実行される値の範囲を設定するために2つの引数を必要とするpercentrank関数の構文が原因であると仮定していますが、概念的にはそれをコードに変換する方法については明確ではありません。どんな助けでも大歓迎です。
1.範囲内の2番目の基準を含んでいるため、そのエラーが発生しています。 ')は間違ったスペースにあります。 2. 'x'は既にRangeオブジェクトなので、Range()は必要ありません:' WorksheetFunction.PercentRank(x、* valueは*にランク付けされます) '3. Percent Rankは分離された範囲で動作するとは思いません。だからあなたは、VBAで仕事をするためのコードを書く必要があるかもしれません、あなたは範囲をループする必要があるかもしれません。 –
ワーク・シートの中のランダムな列に連結された範囲をコピーして、それを連続させ、それに対して 'PercentRank'を呼び出すことで、長時間の作業を行うことができます(必要な場合)。まだ回避策がありますが、おそらくより洗練され、コードは少なくなります。 –
@ScottHoltzman私は分かりませんが、それは第2の基準以下の数を数える単純なループであり、範囲内のセルの数で割ったものです。または、私が考えるように、グループをループしてcountif()を使用してカウントを取得し、セルの総数で除算します。いずれの方法もかなり速くなります。 –