VBA: 2次元配列とDictionaryを組み合わせて最速のデータ検索を実現

Поділитися
Вставка
  • Опубліковано 5 лют 2025
  • 2つの大量のリストを比較してデータを抽出するVBAの説明動画です。
    動画内では触れてませんが、配列も使わないベタなFor-Nextのコードも試したら、2時間近く掛かってしまいました。。。
    Dictionaryの説明動画
    VBA: Dictionary(連想配列) 基本から高度実践例まで
    • VBA: Dictionary(連想配列) ...
    2次元配列の説明動画
    BA配列の基本⑤:2次元配列
    • Excel VBA: 2次元配列を基本から解説
    尚、動画のVBAコードでは2つのWorksheet(wsSales, wsPay)は変数ではなく「オブジェクト名」で指定しています。従って変数宣言はしていません。
    オブジェクト名によるシートの指定についてはこちらをご覧ください。
    ワークシートをオブジェクト名で指定すれば、シート名やインデックスの変化も問題なし
    • ワークシートをオブジェクト名で指定すれば、シ...
    BGM: MusMus
    musmus.main.jp/

КОМЕНТАРІ • 12

  • @まさひろ-q2v
    @まさひろ-q2v 2 роки тому +1

    凄い!こんなに処理時間が変わってくるとは驚きです!

  • @makotoy5213
    @makotoy5213 2 роки тому

    投稿ありがとうございます。
    最近PythonばかりなのでVBAもまた。

    • @rintavlog3
      @rintavlog3  2 роки тому

      はい、VBAも復活させてください。

    • @makotoy5213
      @makotoy5213 2 роки тому +2

      二次元配列に特化した投稿ありがとうございます。動画でかなり学ばせていただきました。VBAのクラスを学ぶタイミングでPythonでも同様の処理を行いたいと・・。VBAもかなり速いコードがかけるという意味で併用していきたいと思います。次の動画もよろしくお願いいたします。

    • @rintavlog3
      @rintavlog3  2 роки тому

      コメントありがとうございます。とても励みになります。

  • @あちゃあちゃ-k5v
    @あちゃあちゃ-k5v 2 роки тому

    たとえば、商品毎ごとに総受注数を集計したいのですが、受注オーダーが複数存在しているので、今は配列の中で加算して(forの入れ子)、合計した数値を配列に格納しています。
    Existsは1対1の時は、有効そうですが、1対複数の時はどのような方法がありますか。
    対象になるものが複数ある場合は、やはり加算方式になってしまいますか。何か知見がございましたら、教えて頂けますと助かります。

    • @rintavlog3
      @rintavlog3  2 роки тому

      複数のオーダーを持つ商品毎に、受注数を集計する、という課題と理解しました。Dictionaryが得意とするケースですが、文書で説明は難しく、以下の動画をご参照ください。
      VBA: Dictionary(連想配列) 基本から高度実践例まで(6:00から該当のケースになります)
      ua-cam.com/video/_yh3ZjQGE5I/v-deo.html

    • @あちゃあちゃ-k5v
      @あちゃあちゃ-k5v 2 роки тому

      @@rintavlog3 返信ありがとうございます!勉強させていただきます。
      いつも勉強になる動画ありがとうございます。

  • @TheKishiberohan1
    @TheKishiberohan1 2 роки тому

    6:00のあたりでexistを使って判定していますが、dictionaryで直接キーを指定してアイテムを取得する場合に、ヒットしない場合エラーになりますか?また、速度的な違いは出るでしょうか?

    • @rintavlog3
      @rintavlog3  2 роки тому

      エラーにならずに空白(empty)が返されます。速度的には大きな影響はないと思いますが、検証はしていません。