• ベストアンサー

配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?

お世話になっております。 タイトル通りの質問です。 日付がファイル名になっているCSVファイルが複数あるのですが、 それをそのまま「array20071020」などという名前の配列に、それぞれ入れて行きたいと思います。ループ処理でなければ出来ないと思うのですが、ループ処理内で配列を宣言していく方法はあるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

dim array20071020 as string dim array20071021 as string dim array20071022 as string ... みたいな事をプログラムでと言う事だと思うのですが、多分できないと思います。 で、excelにはcollectionと言う、名前も変数も文字にできるオブジェクトがあるので、 dim csv as new collection csv.Add loadCsv("20071020"),"20071020" csv.Add loadCsv("20071021"),"20071021" csv.Add loadCsv("20071022"),"20071022" (loadCsvはたとえばの関数です) と追加しておけば、 str=csv("20071020") で読み出せます。 collectionのアイテムは、文字とか変数だけではなく、配列やオブジェクトとかを、個々に指定できる点が便利です。 Dim hoge(1, 2) As Integer hoge(1, 1) = 11 hoge(1, 2) = 12 Dim fumu As New Collection fumu.Add 123, "20071020" fumu.Add "abc", "20071021" fumu.Add hoge, "20071022" fumu.Add Range("A1:C5"), "20071023" MsgBox fumu("20071020") MsgBox fumu("20071021") MsgBox fumu("20071022")(1, 1) MsgBox fumu("20071022")(1, 2) MsgBox fumu("20071023").Rows.Count MsgBox fumu("20071023").Columns.Count

new_hope
質問者

お礼

ご返信遅れましてすみません。 Collectionをの使い方を勉強して、無事希望通りのことができました。 配列ではなくDataTableを使いましたが、 教えて頂いたようにそれぞれのCSV内のデータをDataTableに入れる関数をつくり、キーを変数で指定できたのでループ処理でコレクションに追加できました。 どうもありがとうございました<(_ _)>

その他の回答 (1)

  • ki-ton
  • ベストアンサー率50% (3/6)
回答No.2

Set StrCSV = CreateObject("Scripting.Dictionary") StrCSV("array20071020") = "A" StrCSV("array20071021") = "B" StrCSV("array20071022") = "C" StrCSV("array20071023") = "D" もし、VB6なら上記のような連想配列というのがあります。

new_hope
質問者

お礼

ご返信遅れてすみません。 今回はNo.1さんに教えていただいた方法で試行錯誤し、ようやく希望通りのことができました。 連想配列を使う方法、なんとか頭では理解できましたので、こちらでやる方法も勉強してみたいと思います。 どうもありがとうございました<(_ _)>

関連するQ&A

  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。

  • 配列の宣言のときに数字を指定しないと?

    配列の宣言の時に、例えば、 xx = new Array(3); のように3を指定しないで xx = new Array(); とすると、どういう処理になるのでしょうか? よろしくお願いします。

  • 変数名を配列として利用するには?

    複数のモジュールに記述されている配列を1つの配列へ代入したいと思っています。 単純に考えれば、 @array = (@Module1::array, @Module2::array, @Module3::array); で良いのですが、モジュールが多岐に渡っており、モジュール名自体はスカラー変数へ代入して置き、それを利用したいと考えています。 @array = (); foreach $m (qw(Module1 Module2 Module3)) { $mn = $m. '::array'; foreach $w (@{$mn}) { # @Module1::array にアクセスしているつもり push(@array, $w); } } この様なイメージです。 しかし、@{$mn}は Can't use string ("変数名") as an ARRAY ref while "strict refs" in use at 行番号. になってしまいます。 スカラー文字列に入っている配列変数へアクセスするにはどう記述すれば良いでしょうか?

    • ベストアンサー
    • Perl
  • コントロール配列のループ

    タイトルどおりなのですが、コントロール配列の最初から最後までループさせるにはどうすればいいんでしょうか?

  • ループで配列に格納する

    初歩的な質問かもしれないですが、よろしくお願いします。 $servers=array( array( 'server' => 'http://ping.rss.drecom.jp', 'path' => '/',), array( 'server' => 'http://ping.blogmura.com', 'path' => '/xmlrpc/4u9lifgg3xx', ), array( 'server' => 'http://blog.goo.ne.jp', 'path' => '/XMLRPC', ), array( 'server' => 'http://blogsearch.google.co.jp', 'path' => '/ping/RPC2', ),); とあります。 これをループで$serversに入れる方法を教えてください。 また、arrayは不特定複数です。 .iniから読み込んで配列に格納する予定です。

    • ベストアンサー
    • PHP
  • 配列の操作に関して

    perlプログラミング初心者です。 質問なのですが、ある配列array1に関して foreach(@array1){ ・・・・・・ } という操作をしています。この操作を@arrray2,@array3,@array4に関して、ループを使って行いたいのですがどのようにすればよいのでしょうか。配列の配列を作って @Array = qw/ @array1 @array2 @array3 @array4/; として foreach構文を使うと、@array1が展開されずに処理できませんし・・ 初歩的なことだと思いますがアドバイスお願いします。

    • ベストアンサー
    • Perl
  • JavaScript で配列の終わりまでループ

    JavaScript で配列の終わりまでループを回すには どうしたらいいのでしょう? perl であれば foreach (@test) {  処理 } ですよね。。。test.length; で要素数を取得する以外で 方法はないでしょうか。 new Array を使って、2次元配列(のようなもの) を 作って格納してしまったので、test[0][*], test[1][*] それぞれの要素数を調べたいのです。 現状だと test[0][*], test[1][*] 2つの合計値が 返ってしまいます。

  • 配列の変更

    上のような配列を、下の配列にしたいのですが、どうすれば良いでしょうか? Array (   [0] => 2   [id] => 2   [1] => 名前   [name] => 名前   [2] => タイトル   [title] => タイトル )   ↓ Array (   [id] => 2   [name] => 名前   [title] => タイトル ) また、上の配列は、何と言うのでしょうか? 連想配列?

    • ベストアンサー
    • PHP
  • 配列を宣言した際メモリ内の様子

    「配列」を宣言した際、メモリ内では何が起きているのでしょうか? 配列宣言した際にメモリ内にて、複数のデータを格納する為に、メモリー領域がまとめて確保され、その確保した領域に名前が付けられるのでしょうか? 分かりやすく教えてください。 よろしくお願いします。

  • 変数名(配列)の中の変数

    配列変数の名前の中に変数を入れたい場合、どのように記述すればいいのでしょうか? use strictを用いて、以下のように書いてみましたが、エラーが出て上手く動きません。 ループ x: 1-3 ループ y: 1-2 ${"answer$x"[$y]}=入力値 ←この部分を教えてください。    ループ閉 y ループ閉 x --------------------     answer1[1] answer1[2] answer2[1] answer2[2] answer3[1] answer3[2] とループを通るように、変数名を設定したいのですが、 エラーが出て実行ができません。 エラー:Can't use string ("answer1") as an ARRAY ref while "strict refs" in use at~ -------------------- 実際のプログラムは以下のように書いています。(該当部分のみ) for(my $x=1; $x<$num; $x++) { for (my $y=0; $y<$n; $y++) { my $y = ($x*$n)+$d; my @line = split(/\r/, $data[$y]); my @line0 = split(/\t/, $line[0]); ${"answer$x"[$y]} = $line0[0]; } } よろしくお願いします。

専門家に質問してみよう