0


0

私は念頭に置いて特定のケースを持っていますが、質問は一般的にも当てはまります。 データ量が任意の場合にExcelでデータをどのように処理しますか。

私の特定のケースでは、1セットから10セットのデータを生成するプログラムがあります。各セットは5つの任意に(しかし同等に)長い配列で構成されています(または5列のテーブルと考えることもできます)。 このデータをExcelにダンプし、それに名前付き範囲を適用して(これで既に完了しました)、Excelでそれを操作してレポートを作成したいと思います。 理想的には、できるだけ少ないVBAでこれを行いたい(どれも最良ではないだろう)。 考えはこれらのレポートのエンドユーザーが私が私のプログラムを変える必要なしでフォーマットを変えることができる(または同じデータの全く新しいレポートを生成する)ことができるべきであるということです。

基本的に、レポートは1から10のテーブルのようなもので、5つの配列の各要素に1行(各配列に1列)あります。

うまくいけば、この例は私が求めていることを明確にしています。 Excelでは、VBAで全体的な問題をコーディングする以外に、そのような任意の量のデータを処理するためにどのような選択肢がありますか?

3 Answer


1


すべてのデータセットのすべてのデータを単一のワークシート上の単一の広い範囲に配置できます。 特定の行がどのデータセットから来たのかを識別する列を持つこともできます。

レポート作成のために、データのいくつかの側面を要約する必要がある場合は、([データ]メニューの)[ピボットテーブル]が論理的な選択です。 データセット列をピボットテーブルのページフィールドとして使用して、各データセットを別々のレポートに表示することができます。

レポートを生成する前にデータセットをフィルタ処理する必要がある場合は、(同じく[データ]メニューの)[詳細フィルタ]を使用して、適切なレコードを新しいシートにフィルタ処理することもできます。 その新しいシートからピボットテーブルを生成できます。

いくつかの危険因子があります。

  • データセットのサイズが、シートの最大行数(Excel 2007では1,048,576、Excel 2003では65,536)を超える可能性があります。

  • 特定のフィールド内のさまざまな値の数が、ピボットテーブル(Excel 2007では1,048,576、Excel 2003では32,500)に要約できる数を超える可能性があります。

  • ユーザーはAdvanced FilterやPivot Table、あるいはその両方を使用するのが非常に難しいと感じるかもしれません。

データがいずれかの最大サイズを超える可能性がある場合、Excelはそのデータに使用するのに適したプログラムではないと思われます(何らかのデータベースのフロントエンドを除く)。


1


Excelでレポートを生成するための多種多様な方法を想像できるほど正確に「Excelでそれを操作してレポートを作成する」ことを理解しているわけではありませんが、私はあなたに代わると思います質問を明確にしてコメントを残しましたが、残念ながら私の担当者はまだ低すぎます!) あなたが明確化/例のコードが欲しいならば、私に知らせてください、そして、私は義務を負わせたいです。

すでに名前付き範囲があるので、実際には同じワークブック内の別のワークシートを指すqueryTable / listObjectを使用できます。 これはExcelファイルのDSNを使用し(ODBC経由で、Excelを使用するすべてのワークステーションに存在するはずです)、このトリックを何度も使用して、レポートに必要な変数データを処理します。 これを行う方法は、実行しているExcelのバージョンによって異なります。 私はたった今2007年を実行しているので、そのための指示は「データタブ/他のソースから/ Microsoft Queryから」で、「Excelファイル」を選択し、あなたのファイルをブラウズしてください。あなたがいるのと同じ名前で、名前の付いた範囲を選んでください。 あなたがMS Queryに精通しているならば、それはそこから直接進むべきです。

これで、新しいqueryTableのDSNは、接続文字列にワークブックへのハードコーディングされた参照を持つようになります。 これを更新するには、workbook_openイベントに小さなVBAコードが必要になります。 次のようになります。

Sub Workbook_Open()暗黙のMyLocationを文字列としてMyLocation = ThisWorkbook.Path

明らかに複数のクエリを使用する場合は、For Eachingを実行する必要がありますが、それが要点です。 これがあなたが探しているものであるかどうか私に知らせてください、そして私はあなたに(MSQueryを通してそれらを手作りにするのではなく)利点、アプローチ、質問を作成するためのコードサンプルについてもっと深く説明することができますなど

注:この方法はピボットテーブルでも機能しますが、説明しているデータのような単純なデータセットでは面倒です。


0


これは潜在的に役に立つかもしれません:

私はこのテクニックを使い始めました。 必要以上に数式をコピーして、使用されていない行を隠すための小さなVBA関数を作成しました。 それは最も洗練された解決策ではありません、しかしそれは仕事をやり遂げます。