• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元配列で考えたいのですが。(excelvba))

2次元配列で考えたいのですが。(excelvba)

このQ&Aのポイント
  • 2次元配列を使用して名前と試技の記録を管理する方法について知りたいです。
  • 使用する配列は、1次元に名前、2次元に試技の4回分の記録を保有します。
  • 試技の回数は、まとめて配列に入れておき、参照する際に分解したいです。

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

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

こんばんは。 >今回は、 >2次元配列かと思うのですが、次のようなことをやりたいと思っています。 >1次元に名前、 >2次元に試技4回分の記録を保有し、 ご自分の中で、想像する分には一向にかまわないし、それで自分でトライするのは応援しますが、少しでも、ご自分で、VBEに向かって取り組んでほしいものです。一応、今回の質問は、回答者への挑戦として、こちらも、それなりには考えました。 >試技回数は(同じ結果の要素なので)まとめて扱う この配列のことを「多段配列」と言います。 1行目:山田  2  3  2  2  ・  ・  ・ '// Sub Sample01()  Dim myScore As Variant  Dim i As Long, j As Long  Dim buf As Variant  With Worksheets("Sheet1")   j = .Cells(Rows.Count, 1).End(xlUp).Row   ReDim myScore(1, j - 1)   For i = 1 To j    myScore(0, i - 1) = .Cells(i, 1).Value    buf = .Cells(i, 2).Resize(, 4).Value    myScore(1, i - 1) = Application.Transpose(buf)    .Cells(i, 6).Value = Application.Average(myScore(1, i - 1)) '平均    .Cells(i, 7).Value = Application.Max(myScore(1, i - 1)) 'ベスト   Next i  End With End Sub '//

nagahaha
質問者

お礼

早速有り難うございました。 >この配列のことを「多段配列」と言います。  まさにこれが聞きたかったモノです。 とにかく動かしてみましたが、 未だ内容の理解は全く出来ていません。 これから内容を理解し、コレをベースにやりたいことを拡張していきます。 >VBEに向かって取り組んでほしいものです。  仰るとおりで、そのつもりで居ますが、  いかんせん基本がないモノでして、  引き金を引いて貰えるとそこからはなんとか、というレベルです。  一応教えられればナンとかものにでき、その後はそれを足掛かりに進められる、  というレベルです。  「一から」というレベルにはほど遠いと思っています。  これからも宜しくです。 お世話になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1636/2481)
回答No.1

以下のページが参考になるような感じです。 ■2次元配列 http://www.excel-vba.net/excel-array-003.html

nagahaha
質問者

お礼

早速有り難うございました。 お教えいただいたサイトは日頃参考にしておりまして、 今回も見ております。 お陰様で2次元配列は分かりました。 ただ、複数要素を1箇所にまとめて格納する、 ということがやりたかったので、質問させていただきました。 お世話になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 二次元配列が、勝手に一次元配列になってしまう

    Excelのマクロで、二次元配列を格納したバリアント型を戻り値とする関数を作ったのですが、… 二次元型配列のひとつの要素数が1の時、受け取ったバリアント型変数は、一次元配列になっています。 列ベクトルなら、それもありかな~と思うのですが、なんで、行ベクトルまで、一次元配列にするんだよ~って、困っています。 シートから関数を呼んだ場合は、列ベクトルは列ベクトル、行ベクトルは行ベクトルとして、表示されるので、マクロの中で関数を呼び出した場合も、行列の情報を保持できる方法があるんじゃないかと思ったのですが。 どなたか、ご教示頂けるとありがたいです。 よろしくお願いします。

  • 二次元配列のインデックスについて

    基礎的な質問かもしれませんが、ネットで調べたのですが、うまく回答が見つからなかったので、教えて下さい。 VB.netで二次元配列を扱っているのですが、この要素はどこにあるのかを知りたいのです。 一次元配列でしたら、Indexof を使えば、どこのインデックスに配置されているかが分かると思うのですが、 二次元配列の場合は、どうすればインデックス数が分かるのでしょうか。 例えば、列は0で固定だけど、どこの行にこの要素が格納されているか分からないから、行番号を知りたいと言うときです。 よろしくお願いいたします。

  • 2次元配列について、教えてください。

    基本的なことなのでしょうがまだよくわかっていません。 ワークシートにたとえると、1次元は縦方向(行番号方向)、二次元は横方向(列番号方向)ですよね? 列数、行数にあたるのが1次元、二次元それぞれの添字ですよね? そしてセルに当たるのが「要素」ですよね? 以上の解釈があっていたら、 1.A列やB列にあたるものはなんと呼ぶのでしょうか? 2.1行目や2行目にあたるのはなんと呼びますか? 3.ワークシートで行や列を削除するような感じで2次元配列の行や列にあたるものを削除することはできますか? 4.UBound関数は、配列の大きさを調べられますが、この大きさは添字です。ワークシートのCells(65536,1).End(xlUp)Rowのように実際にデータがどこまで入っているか調べられますか? 教えてください。 前提とした解釈自体が違っていたらそれもご指摘ください。

  • 多次元配列の行列

    1番 キーボードから3×3の行列の要素を2次元配列に入力した後、その値を表示するプログラムをさくせいせよ 2番 キーボードから3×4の行列の要素を2次元配列に入力した後、転置行列を出力するプログラムをさくせいせよ 3番 2つの行列A(3×3行列)、B(3×3行列)の買う要素の値をキーボードから2つの配列に入力し、2つの行列、並びに、それらの和、差、積の行列を出力するプログラムを作成せよ(Bに単位行列を入れて検算せよ) 4番 2行3列の行列と3行2列の積を求めるプログラムを作成せよ どなたかわからないでしょうか?? 数が多くてすみません。 わかる方お願いします!!

  • 配列の要素をばらばらにして入れ込む

    たとえば8つの配列を持つ配列@aを(2004 10/12 田中 1 1 1 0 0)として、 その第4~8要素だけをコンマ区切りの文字列"1,1,1,0,0"として$aaaに入れることは可能ですか?

  • ポインタと多次元配列についての質問です

    私の使っている本に、 『ポインタを使って多次元配列にアクセスするには、コンパイラが自動で行っていることを手作業で 行わなければなりません。たとえば、次の配列には各列に5つの要素があります。 float balance[10][5]; したがって、ポインタを使ってbalance[3][1]にアクセスするには、次のようなコードを使用 しなければなりません。 float *p; p = (float *) balance; *(p + (3*5) +1) 目的の要素に到達するには、行番号に行の要素数を掛けてから、その要素の行内での番号を 加えなければなりません。上記の例では、balanceをfloat* にキャストする必要がありました。 配列要素を手作業で指定する都合上、ポインタ演算をfloatポインタに基づいて行わなければなりません。 しかし、balanceによって生成されるポインタの型はfloatの2次元配列です。そこでキャストが 必要になるわけです。』 とあります。 【質問1】なぜ、p = (float *) balance; なのか。p = (float) *balance; ではないのか? 【質問2】本文「上記の例では………必要になるわけです。」の意味がわかりません。 未熟者の私ですがどうか教えてください。

  • Fortran77で多次元配列を並び替え(ソート)する方法

    Fortran77のプログラミングを勉強しています。 多次元配列の並び替えをする時に、各行の組み合わせを変えずにある列に含まれる要素についてソートを行いたいのですが、やり方が分かりません。どなたか方法を教えてくださいますでしょうか。 例えば、 (1,1)A,(1,2)あ,(1,3)3 (2,1)B,(2,2)い,(2,3)1 (3,1)C,(3,2)う,(3,3)2 という3×3の配列を読み込み、3列目を昇順に並べ替えて、 (1,1)B,(1,2)い,(1,3)1 (2,1)C,(2,2)う,(2,3)2 (3,1)A,(3,2)あ,(3,3)3 とした上で、別のファイルに出力したいのです。 初歩的な質問で恐縮ですが、どなたかご教授よろしくお願い致します。

  • foreachで多次元配列を生成

    こんにちわ。 配列をforeachでループさせて、それを多次元配列に入れていくことは可能でしょ うか? 例えば以下のようなデータがあるとします。 ---meibo.dat-------- c21<>田中<>21<>東京 c22<>佐藤<>22<>大阪 -------------------- ---test.php----------------------------------------------------- <? $list_meibo = file("meibo.dat"); foreach($list_meibo as $temp){    $i=split("<>",$temp);    $a=array($i[0] => array("name"=>$i[1],"age"=>$i[2],"ad"=>$i[3]),); } ?> ------------------------------------------------------------------- これでは $a=array("c21"=>array("name"=>"田中","age"=>"21","ad"=>"東京"), "c22"=>array("name"=>"佐藤",age"=>"21","ad"=>"大阪"),); という具合になってくれないでしょうか? これでいくと、配列の最後の要素のみデータに残ります。 どのようにしたらよいでしょうか? ご教授お願いします。

    • ベストアンサー
    • PHP
  • 2次元配列

    HTMLの置換を行う時、置換の定義を だった。,でした。 んだよ。,のです。 ままだ。ままです。 のようにテキストファイルで作ったてあるとします。 置換は行末が対象です。 置換したいHTMLは普通のHTMLではなく、普通のテキストであり、サイズは大きいもので8MBあります。 置換の定義は1つだけ定義して、この定義て5~6個ぐらいのHTMLファイルを置換します。 元データは中途半端な位置に改行が入っていることはありません。 元データは1行が長くても70文字ぐらいです。 置換方法は2種類考えました。 1つは、まず最初に8MBのテキストを1行ごとに配列に入れてからメインループ処理に入ります。 「だった。」だけに注目してHTMLの置換を行って、置換されていない列に対して「んだよ。」で置換を行い、それでも置換されていない列に対して「ままだ。」で置換を行う、というのを繰り返す方法です。 2つ目の方法は、HTMLの1行について、「だった。」「んだよ。」「ままだ。」などを順に検索して置換し、置換したならその要素、例えば「ままだ。」をaの先頭へ持って来てHTMLの2行目を同様に置換、という方法です。 試していないのですが、2つ目の方法の方が速いと思います。 、「だった。」「んだよ。」「ままだ。」などの定義が異常に多ければ1つ目の方法が速いのですが、50ぐらいの定義数です。 それで2つ目の方法にすると思うのですが、aの1次元目のアクセスは2次元目のアクセスに比べて反比例的に多いです。 このような場合、aとbという2つの1次元配列にした方がよいですか?こうすると、aの要祖を入れ替え、例えば「ままだ。」をaの先頭へ持って来る場合、bも同様の処理が必要になります。 ですが、この方法が一番速そうだと思いましたが、この方法をどう思われますか? 意見や考えなど聞かせて下さい。

  • C# 多次元配列の要素数の変更

    現在、C#2005にて開発を行っているものです。 最近C#を始めたばかりで、分からないことだらけです。 以前はVBで開発を行っており、配列の要素数を変更することなど容易だと思っていたのですが、そう簡単にはいかなそうです。 VBではRedimがあったのですが、C#にはRedimがありません。 そこでネット等で調べてみたところ、Array.Resizeで配列の要素数が変更できることがわかりました。 ですが、1次元配列にしか対応されていない気がします。 現在開発しているシステムでは明細データの履歴情報を登録する部分を担当しています。配列A[変更前又は変更後,明細(行)No.,列No.](3次元配列)を使用して変更前と変更後の明細データを比較しております。 呼び出した明細データの明細行数分のみ(なので可変です)、配列Aの要素数を変更していきたいのですが、どなたかご教授頂けませんでしょうか。 大変お手数をお掛け致しますが、よろしくお願い致します。

専門家に質問してみよう