2017-01-02 1 views
0

配列を使用して複数のファイルのデータを照合しようとしています(vlookupに時間がかかりすぎるため)。Vlookupなしの配列内のデータの一致

例:私は情報を持つ10個のソースファイルを持っています(それぞれのファイルはそれぞれの日に異なります)。各ファイルには多数の項目があり、各項目には通常のデータベースのように複数の情報列があります。

File 1 - 20 of January 
Item (identifier) Price Discount Quantity 
A     100  5  10 
B     80  6  15 
C     110  3  15 

File 2 - 21 of January 
Item (identifier) Price Discount Quantity 
A     95  3  5 
B     90  6  10 
C     120  4  20 
D     130  7  2 

File 3 - 22 of January 
Item (identifier) Price Discount Quantity 
A     70  11  35 
B     100  1  15 
D     45  17  25 

私のコードは、新しいソースファイルを追加すると、ファイルが過去にあったアイテムを持っていない場合、それは(出力ファイル内の項目の数が増加し、このデータを取得し、一致させるためにVLOOKUP使用しています情報は単にゼロとしてカウントされます)。 Excelで

私の出力は、次のとおりです。

Tab 1 (price) 
All the item Identifiers 20/01 21/01 22/01 
A       100  95  70 
B       80  90  100 
C       3  4  - 
D       -  130 45 

Tab 2 (discount) 
All the item Identifiers 20/01 21/01 22/01 
A       5  3  11 
B       6  6  1 
C       110  120 - 
D       -  2  25 

のように。

最初の問題は、各ファイル内の項目が同じではない(いくつかは追加または除外される可能性があります)、現在は15以上の情報列のそれぞれの何千ものアイテムです。

第2に、この情報(各ファイルを別々に)をアレイに変換すると、vlookupなしで情報をどのように一致させることができますか?

最初のファイルに移動して配列に変換すると、アイテムIDをどのように照合して各日付の情報を取得し、出力を作成することができますか?

ご協力いただければ幸いです。

答えて

0

この問題を解決するには、ピボットテーブルを使用します。あなたのデータは必須の表形式です。必要なのは、ファイル内の各テーブルに別の列を追加することです。追加の列は「fileDate」などです。

ピボットテーブルを使用して、さまざまなレポートを生成できます。ルックアップについて心配する必要はありません。高価なデータベースパッケージでは、ピボットテーブルはOLAPキューブとして知られています。 Excelのピボットテーブルは非常に安価な代替手段です。

+0

答えをありがとう。 別の列を追加するだけでは、ワークシートにすべてのデータが表示されないと思います。私はピボットテーブルについても詳しく読んでいます。 データを追加するだけで3Dになりますが、これは操作方法がまだわかりません。 – DGMS89

0

私が正しく理解していれば、現在別のファイルを開いて分析する方法がありますか?

コード内のvlookupをスピードアップしたい場合は、実行するvlookupの量を減らす方法があります。データファイル内の列の数が常に同じである場合(col1 = name、col2 = date、col3 = addressなど)、MATCHを使用して、対象の識別子(たとえばA、B、 CまたはD):最初に:

MATCH(identifier_address, array_of_interest, 0) 

この情報を列に格納すると、これは一度だけ検索する必要があります。

は、その後、あなたのファイルの値を照会するために、直接、次のように、VLOOKUPを使用することなく、あなたの列(1〜15)のそれぞれについて、データにアクセスするためにADDRESS機能を使用します。

INDIRECT("sheetname!" & ADDRESS(cell_with_match_result, 2)) 
INDIRECT("sheetname!" & ADDRESS(cell_with_match_result, 3)) 

など

編集。もちろん、問題のファイル/配列を参照する必要があります。 INDIRECTステートメントが追加されました。

+0

回答ありがとう: 私はファイルに直接マッチ機能を試しましたが、ファイルを配列に変換しなければ、1つ1つでも読み込みに時間がかかりますいくつかのファイル(私は現在何百もある)。 列が同じであると述べたので、配列内の一致関数を使用して座標を識別子に一致させることを考えていましたが、可能かどうかわかりません。 – DGMS89

関連する問題