- ベストアンサー
Excel(VBA)で配列の要素数を調べるには?
お世話になります。 ExcelのVBAで、split関数を使って配列に格納したデータの要素数を調べる方法がわかりません。 下記のようなコードで、読み込んだデータを配列(Arraydata)に格納することは出来たのですが、test.csvの要素数が処理の度に変わるため、要素数に応じて後続の処理を行ないたいと考えています。 Open test.csv For Input As #1 ' test.csvファイルを開く Line Input #1, test.csv ' データ行を読み込む Arraydata = Array(Split(test.csv, ",")) ' 配列に格納 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >Arraydata = Array(Split(test.csv, ",")) ' 配列に格納 Split で配列になっているものを、さらに配列にしても、何も取れないはずです。それ自体は、以下のようになるのですが、 Arraydata = Split(test.csv, ",") >ExcelのVBAで、split関数を使って配列に格納したデータの要素数を調べる方法がわかりません。 データの添え字を調べてどうするのでしょうか? そのままでは、 添え字は、 Lbound(Arraydata) ~Ubound(Arraydata) なんでしょうから、Option Base 1 でもしていなければ、0 ~上限までです。 だから、次は、ワークシートに貼り付けるぐらいしかありませんから、例えば、ワークシートに貼り付けるなら、そのまま、配列を貼り付ければよいと思います。 i = i + 1 Range("A1").Offset(i).Resize(, UBound(Arraydata) + 1).Value = Arraydata なんていうことをしますね。
その他の回答 (1)
- kerorin9999
- ベストアンサー率22% (10/44)
uboundで取れませんか? ちょっと試していないので曖昧ですが・・・ i = UBound(Arraydata) ってな感じですかね。
お礼
早速ご回答いただきありがとうございました。 教えていただいた関数で要素数を取得できました! ヘルプ等でArray関係の関数を調べていたのですが、UBoundという関数には気付きませんでした。
お礼
ワークシートへの貼り付け方法までご教授頂きありがとうございました。 また、配列への格納は、ご指摘頂いた通り「Array」が冗長でした。 要素数を調べた後、For文でセルへのセット処理を回そうと考えていたのですが、このようなスマートな方法で出来るとわかり、勉強になりました。