アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル マクロで配列のインデックスを日付にできますか?

エクセルでマクロを作成中ですが,日付ごとにデータをまとめたくて、日付を配列のインデックスにしたいと思ってますが,そのまま配列に組み込んでもエラーで止まってしまいます。
なにかいい案はありますでしょうか?

A 回答 (3件)

>日付を配列のインデックスにしたいと思ってますが


配列にする日付はどのようにしてますか?
2010年11月3日の場合
西暦4桁  20101103 ×配列が大きすぎる
西暦2桁  101103  ○配列が大きいので、メモリを使用するので遅くなる
シリアル値 40485  ◎配列は一番小さい

配列の宣言は忘れないでください。
シリアル値の場合
Dim Hairetsu(50000)
※50000=2036年11月21日
呼び出しは Hairetsu(Clng(日付))

西暦3桁の場合
Dim Hairetsu(361121)
呼び出しは Hairetsu(Clng(Format(日付,"yymmdd")))
    • good
    • 0

>日付を配列のインデックスにしたいと思ってますが,


普通、そんなことはしませんよ。
日付の範囲が限られている場合、開始日からの日数をインデックスにするという方法も考えられますが、

普通は、日付を覚えておくための配列と、データを覚えておくための配列を作っておいて、
与えられた日付を、日付用配列のデータから検索して、配列のインデックスを探し出す、
ということをします。

検索の方法は、ハッシュ法、2分検索法、(グーグルすれば見つかります)などを使います。
    • good
    • 0

>そのまま配列に組み込んでもエラーで止まってしまいます。


どんなコードでしょう。それを見ても修正こそすれ、笑う人はいないと思いますが、最近は、考え方だけで質問する人が多いようです。その分回答も同様のものになってしまいます。

>日付を配列のインデックスにしたい
概念的な問題だと思いますが、何か、誤解していらっしゃるようです。Excelのワークシートの構造に、配列に似たものとしては、シートがあります。そのシートには、Index は、必ず、1 から順に入っています。そのIndex を日付に換えますか?そんなことはできませんね。

必要に応じてシート名を変えれば済みます。もし、配列するなら、配列の二次配列するとか、ひとつの配列構造と同じものを用意するということをすればよいです。

>日付ごとにデータをまとめたくて
概念的なお話なので、話はここまでですが、データが複数ある時は、Dictionary などを利用します。しかし、そういう技術を用いなくても、たぶん、そういう質問の出てくるレベルですと、ワークシートをデータストックの代わりに使えばよいと思います。そこまで、自力では組めないような気がします。
    • good
    • 0

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