0

~70K 行の大きな XLS があります。私は毎日、このファイルの更新版をダウンロードし、'[area]=WE' の部分を抽出します。これは私が担当する領域です。この部分は簡単です。ただし、他の人が担当している分野の記録も含める必要がある場合があります。

[顧客名] のセグメントを最初のスペースまで抽出する 2 つの列があります。最初の列は、'[Area]=WE' のレコードに対して実行するか、値として 'N/A' を入力します。2 番目の列はこれを逆に行います。TRIM(LEFT(F66338,IFERROR(FIND(" ",F66338),LEN(F66338))))

countif3 番目の列では、データの 1 列目全体で 2 列目 (単一セル) の値を検索しようとしましたCOUNTIF($BG$12:$BG$66742,BH8)。機能している間は、計算に時間がかかり、'Calculating x%' が 1 秒ごとに 1% ずつ増加します。

編集: 2 番目の列の各エントリ (「N/A」ではない) について、最初の列に少なくとも 1 つのインスタンスがあるかどうかを知りたいです。私は何人かを知る必要はありません。

countif を実行するより速い方法はありますか?

4

2 に答える 2

2

少なくとも 1 つのオカレンスを確認するだけでよいため、少し高速な方法は次を使用すること=MATCH()です。

=MATCH(BH8, $BG$12:$BG$66742, 0)

#N/A!見つからない値と見つかった値の数 (セル BG12 からの行数) を返します。

一致が見つかるとすぐに数式は終了COUNTIFしますが、一致する値があればさらに検索するために最後に到達するまで続きます。

それ以外の場合、それよりも速いものはわかりませんがVLOOKUP、同等またはわずかに遅いと思われるものを使用することを除いて.

于 2013-08-12T07:49:08.753 に答える
1

使用MATCH()はわずかに速くなりましたが、それでもほぼ同じ時間がかかりました.

最初の列 (ダイナミック レンジ) に基づいて別のタブにピボット テーブルを作成しました。match()これは、メイン テーブルの列ではなく、このピボット テーブルを参照するようになりました。つまり、10 秒未満で計算されます。

この列には多くの重複値があるため、この特定のインスタンスではうまく機能します。

于 2013-08-12T10:55:24.197 に答える