0

毎月、約 14,000 行のデータがあり、約 12 列の幅 (各月のエントリ) の膨大なデータ ダンプがあります。すべてのデータの左側に、LEFT() 関数を使用して行が対応するプロパティを識別するプロパティ コードを取得する列を追加しました (プロパティごとに約 150 行、約 100 プロパティ、したがって 15,000 行)。

物件ごとにワークシートをご用意しております。このデータ ダンプで毎月更新し、マネージャーに送信して、追加したばかりのデータの月に基づいて残りの年の予測を作成できるようにします。

前任者よりも効率的なモデルを作成するためのソリューションに苦労してきました。彼は、この膨大なデータ ダンプを参照するこれらのシートのそれぞれに v-lookup とインデックスを作成しました。ご想像のとおり、ファイルの実行速度は非常に遅いです。

私の考えでは、このマスター シートから各プロパティのデータ行をコピーして貼り付け、それを個々のシートに貼り付けます (その後、そこにあるデータを削除して、ファイルのスペースを節約します)。

そうすれば、v-lookup は各シートに対してローカルになり、ファイルはよりスムーズに実行される可能性があります (マクロを実行する最初のシーケンスを保存すると、少しのコンプ スペースが必要になる可能性があります)。

私はこれについていくつかの洞察を得ることを望んでいました.解決策が有効なものであれば、おそらくこれを達成するためのコーディングに関する提案.

本当にありがとう!

4

2 に答える 2

0

ワークブックの速度が上がることがわかったのは、vlookupを使用する代わりに、データをピボットしてからピボットテーブルにクエリを実行することです。

あなたの場合、行ラベルのプロパティID /名前、列ラベルの月、データセクションのデータを使用してピボットを作成できます。

その場合、数式は次のようになります。

=GETPIVOTDATA("value",Sheet1!$B$4,"Property","propertyName","Month","monthName")

これは、60k行で多数のvlookupを使用するときに役立ちました。これは、データが更新されるたびにピボットテーブルを更新する追加の手順を意味しますが、ワークブックの速度はそれから恩恵を受けるはずです。

明らかに、データをシートに直接保存する方が良いでしょうが、これを行うためのスクリプトを書くことは非常に面倒で時間がかかる可能性があります。

于 2012-12-16T07:41:51.973 に答える
0

大規模なリファクタリングを提案するには、スプレッドシートの詳細が必要ですが、すぐに実行できるのは、VLOOKUP の複数列属性を使用することです。

=VLOOKUP(Lookup_value, Table_array, {1, 2, 3}, 0)

上記は、配列内の列 1、2、および 3 を返します。これを 3 つのセルにまたがる配列数式として入力する必要がありCTRL SHIFT ENTERますが、同じルックアップ値を使用して異なる列を返す複数のルックアップがある場合、パフォーマンスが大幅に向上します。

于 2012-12-16T22:38:52.170 に答える