4

たとえば、私が持っているとします

{={1,2,3,4,5}}

セルで。その配列にいくつの要素があり、それらの要素が何であるかを調べる方法はありますか?

@chris neilsenのアイデアを実装すると、次のようなVBA関数ができました

Function rinfo(r As Range) As String
    With r.CurrentArray
        rinfo = .Address & ", " & .Rows.Count & ", " & .Columns.Count & ", " & .Value & ", " & .Value2
    End With
End Function

ただし、そこからのデータは希望に満ちているようには見えません。

$A$29, 1, 1, 1, 1

Rows.Count と Columns.Count は、ワークシートで使用される行と列をカウントしている場合に意味があります。しかし、配列数式のデータの表示として、いいえ。

4

2 に答える 2

5

数式は単一のセルのみを占有し、セルにはスカラー値のみを含めることができるため、セルが計算された後、1が含まれます。
ただし、VBAから数式を評価すると、配列の結果が得られます。数式がA1にある場合は、

Dim vArr As Variant
vArr = Evaluate(Range("a1").Formula)

4つの数値の4つのバリアントの配列を含むvArrになります。
Evaluateメソッドにはいくつかの「癖」があります。詳細については、私のWebページの1つを参照してください。

于 2011-10-14T07:51:07.900 に答える
1

SubclRangeで、 が配列数式の一部であるセルに設定されている場合、

cl.CurrentArray

配列数式を含む範囲を返します。

例の数式がセル内A1:E1にあり、アクティブセルがセル A1 .. E1 のいずれかである場合、実行中

Sub zx()
    MsgBox "ref = " & ActiveCell.CurrentArray.Address
End Sub

のメッセージを返しますref = $A$1:$E$1

とを使用.Rows.Count.Columns.Countてサイズ.Valueを取得し、値を取得できます

于 2011-10-14T05:26:55.637 に答える