-1

現在、Excel スプレッドシートをインポートし、データをレポートのような構造にフォーマットできるマクロを作成しています。

これまでのところ、数式を使用してデータを集計することで手動でこれを達成できましたが、これらの手順の多くを自動化したいと考えています。

ですから、決断を下す必要があるように感じます。

マクロを有効にしたワークブックに別の Excel ファイルをインポートするので、範囲を参照してデータを操作しますか、それともファイルの内容を Variant Array/Collection/Dict にダンプしますか?

最終的には他の人がこの「レポート ビルダー」を使いたいと思うので、できるだけシームレスに変換できるようにしています。

4

2 に答える 2

0

大量のデータを処理していて速度が非常に重要でない限り、範囲をメインオブジェクトとして使用することを強くお勧めします。主な利点は次のとおりです。

  • Range("A1:B10")範囲のアドレス指定に非常に柔軟性がありますRange(TopCell, BottomCell)Range("NamedRange")
  • .Resize(Rows, Cols)柔軟な参照のための「.Offset(Rows、Cols)」
  • 基本的に、範囲/セルのすべてのプロパティ、つまり、だけでなく、、、、...も変更.Valueできます。.Formula.Font.Border
  • 豊富なメソッドにより、高度な処理が可能になります(たとえば.SpecialCells、数式/値/ ...の検索、.Rows.Visible非表示など)
  • For Each c in Range("YourRange").Cells単純なループで範囲内のすべてのセルをループします

値自体以外のものを変更する場合は、範囲を使用する必要があります。より大きなデータセットで複雑な計算を実行する場合にのみ、範囲(または任意のデータソース)のコンテンツを配列に読み込み、配列/メモリで処理してから、結果をに書き戻すことでパフォーマンスを向上させることができます。一気に範囲。このアプローチにより、計算速度が大幅に向上しますが、いくつかの状況にのみ適用可能であり、パフォーマンスが本当に重要な場合に推奨されます。

コレクション/辞書について:
範囲と比較しないでください。特に、特定のタスクに役立つ手段です。メンバーのセットをループする場合。ただし、範囲自体は一種のコレクションです。つまり、その要素をループできます(新しいメンバーを削除/追加しないでください)。コレクションとディクショナリクラスの使用法を比較したい場合は、次の簡単な要約をご覧ください。

コレクションはVBAに組み込まれているため、参照する必要はありません。これは、ループまたはアドレス指定する単純な集計の主な選択肢です。ディクショナリの利点は、追加の機能、主に.Existsプロパティと.Keysコレクションを提供し、ハッシュのキーをループすることもできることです。したがって、これらの機能が必要なときはいつでも( Microsoft Scripting Runtimeで)辞書を参照しますが、それ以外の場合はコレクションに固執します。

于 2013-02-15T08:22:23.353 に答える
0

レポート作成ツールはたくさんあります。問題を理解していない限り、自分で作るのは無駄な努力のように思えます。

于 2013-02-15T04:57:31.647 に答える