• ベストアンサー

ExcelのVBAで配列の処理 PHPから移行する新米ですが・・・

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAで配列は、 dim a(100) のように、要素数(いわば座席の数)を多め(最大を見繕って)に取って定義します。 そしてarray_push()のように最後に詰め込むイメージでなく、自分で(プログラマが)要素数(いわば席番地、添字)を指定して、=で値を代入します。 a(3)="秋田" また array_popのように末尾から採るのでなく、任意の席番号を要素数を指定して、代入演算子(実は取得とか移転の意味)で取得します b=a(3) Pushのような機能にするには、配列要素の実質的な採集用素数を 変数で管理して(覚えて・記録しおいて)、1ずつ減らしたり、加えたりして、要素ポインターを変えます。 Popも同じく、最終の配列要素のポインターを別途保持して、管理しないとダメです。 array_unshiftは先頭に追加するのですが、VBAではこれ名1発では 難しい。1つづつ既存全体をヅラす必要がある。 POP-PUSHの構造はVBでは取り上げられていない=>旧いといえるかもしれません。 var_dump はこれは(も)関数なのですが、PHPでは $a = array (1, 2, array ("a", "b", "c")); のようなことを考えるようですが VBAなら配列の中に配列を作るようなのは余り考えない。 ーー あと、 ●配列の値の初期化 Array関数を使う方法があります。 通常の配列ではまとめてのクリア以外の、初期化はできませんので、 コードで要素1つ1つ地道にセットする必要がある。.NET以後の VBはできるようです。 http://homepage1.nifty.com/MADIA/vb/vb_bbs/200312_03120111.html ●配列の動的編成ReDimの問題がある。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard27.htm

関連するQ&A

  • 配列の抽出

    PHPの配列の関数で数行程度でフィルターのような機能は可能なのでしょうか? 以下、サンプルですが血液型がAの新しい配列を作成するには、どのようにしたら良いのでしょうか? また、新しい配列でなく$matrixを血液型がAのみにする方法も知りたいです。 実際の例で示していただけましたら助かります。 <?php // 血液型(blood)がAの人のみの新しい、配列にしたい。 $agent1 = array( "blood"=>"A", "B"=> 80, "W"=> 60, "H"=> 85 ); $agent2 = array( "blood"=>"B", "B"=> 90, "W"=> 62, "H"=> 90 ); $agent3 = array( "blood"=>"O", "B"=> 78, "W"=> 56, "H"=> 80 ); $agent4 = array( "blood"=>"AB", "B"=> 81, "W"=> 59, "H"=> 83 ); $agent5 = array( "blood"=>"A", "B"=> 88, "W"=> 58, "H"=> 84 ); $matrix = array(); array_push($matrix, $agent1); array_push($matrix, $agent2); array_push($matrix, $agent3); array_push($matrix, $agent4); array_push($matrix, $agent5); var_dump($matrix); exit; ?>

    • ベストアンサー
    • PHP
  • PHPのようにスマートに配列の配列など記述する方法が

    PHPの場合、データ構造ですが以下のようになっています。 $a = array( "test1" => array( array(1,1), array("x", 2) ), "test2" => array( array(3,2), array("y", 1) ), ); これをエクセルVBAの場合、Scripting.Dictionaryを使えば連想配列が 可能ですが、PHPのようにスマートに配列の配列など記述する方法が わかりません。 Dim dic As Scripting.Dictionary set dic = New Scripting.dictionary dic.Add "test1", ???????????????? dic.Add "test2", ???????????????? スマートにデータ構造を実現できる方法が知りたいです。

  • PHPの配列をjavascriptへ渡したい

    PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。 変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか? for文を使って渡せばいいと思うんですがどうやればいいか分かりません。 <?php $filedata=file("data.txt");//javascriptに渡したい配列 ?> <script language="javascript"> var a=new Array();//PHPの配列をこの配列に入れたい </script> 何方か教えてください。

    • ベストアンサー
    • PHP
  • 関数内での繰り返し処理の結果を配列で受け取りたい

    関数内でfor文で繰り返し処理を行い、 結果を配列として返すような関数を書きたいと思っています。 function hoge(){ var a = [1,2,3,4]; for (var i=0; i < a.length; i++){ a1 = "a" + i; var arr = new Array(); arr.push(a1); } return arr; } しかし、以下のように 関数hogeの結果を変数bで受け取ってみると、 配列の最後のデータしか表示されません。 var b = hoge(); alert(b); //a3のみが表示される a0, a1, a2, a3と表示されるようにするには、 どうしたらよいでしょうか。

  • phpのfor文の中で配列を作りたいです。

    $a = array(); $a[0]="あ"; $a[1]=""; $a[2]="い"; $a[3]=""; $a[4]=""; $a[5]="う"; のような配列がありfor文の中で文字列が一文字以上だったら配列$bに入れるということをしたいのですが、 $b=array(); for($i=0; $i<count($a); $i++){ $c = mb_strlen($a[$i]); if($c>=1){ $b = $a[$i]; } } var_dump($b); とすると$bには最後の”う”しか入りません。 $bを $b[0]="あ"; $b[1]="い"; $b[2]="う"; とするようにするにはどうしたらいいですか?

    • ベストアンサー
    • PHP
  • PHPの配列の扱い方

    配列を勉強中なのですが、 よく判らなくなってしまったので教えてください。 print var_dump($aa); を実行すると array(5) { [0]=> string(2) "AE" [2]=> string(1) "C" [4]=> string(1) "F" [5]=> string(1) "N" [6]=> string(1) "Y" } とか array(2) { [27]=> string(2) "BA" [41]=> string(2) "BP" } とかかえってくる配列$aaがあるのですが、 この"AE"や"C"や"BP"など文字情報だけを見たい場合はどのように表記すればいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP 配列

    多重の質問申し訳ございません。現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } prinfをしましたら出力結果が array(英語,英数字,値); という形になっているみたいです。 これを[英語][英数字] = 値というのは可能でしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • [PHP]ループ内の配列取得、表示について

    質問させていただきます。 データをDBから取得しwhileで全てのデータを配列として出力しているとします。 (whileの中で出力し、3つのデータがあるため3回ループされている) 結果 array(1) { [0]=> string(5) "17:10" } array(2) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" } array(3) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" [2]=> string(5) "11:15" } 現在の出力内容は、 var_dump[$hoge[0]] 出力結果 string(5) "17:10" string(5) "17:10" string(5) "17:10" var_dump[$hoge[1]] 出力結果 NULL string(5) "17:25" string(5) "17:25" var_dump[$hoge[2]] 出力結果 NULL NULL string(5) "11:15" という出力になっていますが、最後のarray(3)の部分だけを抜き出したいです。 その場合はどのようにすればよいのでしょうか? -理想の結果- 利用したいのはarray(3)の部分だけ。 var_dump[$hoge[0]] "17:10" var_dump[$hoge[1]] "17:25" var_dump[$hoge[2]] "11:15" 説明不足かもしれませんが、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • PHPの配列について

    PHPの配列についての質問です。 以下のソースを // == ソース == function hoge( $foo ) { $arrs['a'] = 'A'. $foo; $arrs['b'] = 'B'. $foo; $arrs['c'] = 'C'. $foo; $arrs['d'] = 'D'. $foo; } hoge( '3' ); hoge( '9' ); // == /ソース == 実行すると print_rは // == print_r == Array (   [a] => A3   [b] => B3   [c] => C3   [d] => D3 ) Array (   [a] => A9   [b] => B9   [c] => C9   [d] => D9 ) // == /print_r == のようになります。 これを 関数を実行するごとに (0から IDのような 配列を組むようにする) 以下のようにするには どのようにすればよいでしょうか? // == print_r == Array (   [0] => Array     (       [a] => A3       [b] => B3       [c] => C3       [d] => D3     )   [1] => Array     (       [a] => A9       [b] => B9       [c] => C9       [d] => D9     ) ) // == /print_r == 使用目的は get_contentsしたものを正規表現で取り出し 配列にする処理に使おうと思っています。

    • ベストアンサー
    • PHP
  • PHP 配列 変換

    失礼します現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } array(3) { [0]=> string(32) "ldkfaofpjdsa" [1]=> string(32) "fasdfasdfaf4546" [2]=> string(9) "50000%" } となっておりこれを[0][1] = [2] のように[英語][英数字] = 値のようにしたいです。 ご教授いただけると助かります。 宜しくお願い致します。

    • ベストアンサー
    • PHP