私は、Excelで出力列に私の値を返すために、この機能を取得することはできません。エクセル/ VBA:(些細でなければなりません)を返すようにバリアント/ブールを取得できません
いくつかの強烈なルックアップテーブルを克服し、計算を高速化するために、私はフィルタリングから行番号を出力するためにスライサーを備えたピボットテーブルを使用しています。これらの行は、大きなテーブルに対して真/偽のセルの列に変換する必要があります。そこから、より多くの計算を実行します。ルックアップやマッチングを避けるためには、単に行のリストを調べ、そのセルを出力ベクトルで "true"にするだけです。
Function IncludedinSlicer(input_range As Variant) As Variant
Dim n As Long, j As Long, r As Long
n = input_range.Height ' Height of the column of reference values
' every row in the input_range contains a row number which in the output should be TRUE
' all other rows should be false
Dim output_range As Variant
ReDim output_range(1 To 300000)
' This covers the maximum number of rows
' Initialise all rows to FALSE
For j = 1 To 300000
output_range(j) = False
Next j
' Set only those rows listed in the reference to TRUE
For j = 1 To n
r = input_range(j).Value
If r = 0 Then ' If r=0 then we are beyond the end of the reference table and have captured some blank rows
Exit For ' Exit, to avoid outside-of-array errors
Else
output_range(r) = True
End If
'End If
Next j
' Return results to Excel
' THIS LAST BIT DOES NOT RETURN VALUES TO EXCEL
IncludedinSlicer = output_range
End Function
これはわかりやすいはずですが、どういうわけか文字通り数時間私を困らせました。助けてください!前もって感謝します!
EDIT:問題が見つかりました!
まず、高さと行の差を指摘していただきありがとうございます。これは私が気づいていなかったためです。
残念ながら、それでも最終的なセル出力(#Value)に同じエラーが表示されました。幸運なことに、その間にMatlab経由で処理しようとしましたが、結果を戻すときに同じエラーが発生しました。これにより、私は問題を絞り込むことができ、エラーを追跡しました...(ドラムロール)... VBAの2^16の配列サイズの制限です。 テーブルが2^18行に近いため、エラーが発生します。
コードエラー(もしあれば)や予期しない結果が返ってきますか? – SJR