牛、豚、鶏、どれか一つ食べられなくなるとしたら?

お世話になります。
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, ",")) ' 配列に格納

よろしくお願いします。

A 回答 (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

なんていうことをしますね。
    • good
    • 0
この回答へのお礼

ワークシートへの貼り付け方法までご教授頂きありがとうございました。
また、配列への格納は、ご指摘頂いた通り「Array」が冗長でした。
要素数を調べた後、For文でセルへのセット処理を回そうと考えていたのですが、このようなスマートな方法で出来るとわかり、勉強になりました。

お礼日時:2005/09/22 17:28

uboundで取れませんか?


ちょっと試していないので曖昧ですが・・・

i = UBound(Arraydata)

ってな感じですかね。
    • good
    • 0
この回答へのお礼

早速ご回答いただきありがとうございました。
教えていただいた関数で要素数を取得できました!
ヘルプ等でArray関係の関数を調べていたのですが、UBoundという関数には気付きませんでした。

お礼日時:2005/09/22 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報