- ベストアンサー
エクセルでの重複データのカウント
- エクセルで、A列に7ケタの数字13万件、B列に同じく7ケタの数字100~2000件を入力し、C列にB列にデータがある行まで=COUNTIF($A$2:$A$130000,B2)と入力します。C列の値は1か0しか出ない状態なので、ベースとなっているA列のデータ数が多い場合、再計算に時間がかかります。対策として、A列のデータが少しずつ増える場合、新規データをA列に追加して再計算する方法があります。
- 考え方として、 B列にあるけどA列にないデータ(重複していないデータ)をカウントする場合、セルD1に=COUNTIF(B2:B2000,0)と入力します。この方法で処理速度を向上させることができます。
- もし、まだ処理が遅い場合は、以下の方法があります。1. A列にフィルタをかけ、重複データのみを表示して削除する。2. VBAを使用して処理を高速化する。3. データベースを使用して処理を行う。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>しかしながら、ベースとなっているA列のデータが13万件と多いので、 根本的な解決方法は存在しないので、シートを分割するくらいしか出来ません。 例えば、一番上の1桁でシートを分けて、シート1は「A列もB列も0で始まるもの」、シート2は「A列もB列も1で始まるもの」…のようにします。 A列とB列で「一番上の1桁が違うなら、絶対に重複しない」のが明らかですから、計算は不要です。 こうすれば、1万3千件のデータが10シート分、になりますから、計算量は10分の1になります。 重複してないデータの総個数は、各シートのD1セルを足す式 =Sheet1!D1+Sheet2!D1+Sheet3!D1+Sheet4!D1+Sheet5!D1+Sheet6!D1+Sheet7!D1+Sheet8!D1+Sheet9!D1+Sheet10!D1 で求まります。
その他の回答 (3)
- ki-aaa
- ベストアンサー率49% (105/213)
こんにちわ。 もう見ておられないとは思いますけど。 vbaを使えば早くなると思います。 http://okwave.jp/qa/q6327928.html もしvbaでよければ、この質問を締め切り、 新しく質問を立てることををお勧めします。
お礼
ki-aaaさん、回答ありがとうございます。 教えていただいたページ、拝見いたしました。 VBA初級者の私にはかなり複雑そうですが、 じっくり読んで勉強してみたいと思います。 ありがとうございました。
- tsubuyuki
- ベストアンサー率45% (699/1545)
> なんとか処理が速くなる方法などありましたらご教授下さい。 アクセスに移植。 かなり早くなると思われます。 残念ながら手元にあったファイルの内、すぐに取り出せるものでも 12万件ちょっとのデータしかなかったので、案件には若干足りませんが、 ・2000件とのマッチング処理 ・マッチングし、対象が無かったものの追加 ・再計算 全て1秒未満で処理が完了します。 もちろん組み方によりますが。 そもそも、エクセルは大量データ処理に(略)
お礼
tsubuyukiさん、回答ありがとうございます。 残念な事にアクセスありません・・・ 膨大なデータ処理の場合はアクセス重宝するようですね。 会社に導入頼んでみなすかね~ ありがとうございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
>1度B列にあってA列にないデータは、次にB列に違うデータを入れてカウントする際に新規データとしてA列に追加しています。 このために「重複してないB」を探してる?、こういうのはマクロでしょうね??
お礼
JazzCorpさん、回答ありがとうございます。 マクロだと計算に時間かけずに出来そうですか? 残念ながら、マクロは自動記録に毛が生えた程度しか理解できていないので、 作成出来そうにありません。 やはりマクロ使いこなせるようになると相当便利になりそうですね。 時間かかるかと思いますが勉強してみます。
お礼
Chie65535さん、回答ありがとうございます。 データを1桁ずつ分けて処理とは思い付きませんでした。 早速試してみます。 ありがとうございました。