[[20160513165024]] 『重複チェック(関数のみ)』(くろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重複チェック(関数のみ)』(くろ)

大文字/小文字を区別しない部分重複チェックであれば、
B列に以下の計算式で重複確認できます。

=IF(COUNTIF(A:A,"*"&A1&"*")>1,"重複","")

しかし、大文字/小文字は別データとして扱うため、
以下と同種の形で(EXACT関数など組み合わせて)
処理可能でしょうか?

(条件)
・データの加工は無し
・使用する関数は何でも可能(VBAは不可)
・データの文字数もランダム、データ量は数千〜数万レコード

(データ)
A列
BLACK
BLACK+Red
Black
black
BLUE
BLUE/SILVER
Blue
RED
Red
SILVER
SILVER[black]
Silver

宜しくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


大文字小文字を別扱いし、それでもなお一致するものを見つけたい、ということでしょうか? どういう判定結果を想定しているのかも書いてください。
数万レコードもあるならば、VBAを使うのが簡単で速いと思いますけどねぇ。

=IF(1<SUMPRODUCT((EXACT(A:A,A1))*1),"重複","")
(???) 2016/05/13(金) 18:03


???さんご返信ありがとうございます。
もちろんVBAが早くて楽なのは承知ですが、
今回は関数でお願いします。

出力判定結果は以下を想定しています。
=IF(COUNTIF(A:A,"*"&A1&"*")>1,"重複","") に
大文字/小文字区別となると以下となる想定。

(データ)
A列        B列
BLACK       重複
BLACK+Red
Black
black       重複
BLUE       重複
BLUE/SILVER
Blue
RED
Red
SILVER       重複
SILVER[black]
Silver
(くろ) 2016/05/13(金) 18:34


 10万件で16分ちょっと。

 =IF(SUMPRODUCT(LEN(A$1:A$100000))-SUMPRODUCT(LEN(SUBSTITUTE(A$1:A$100000,A1,"")))>LEN(A1),"重複","")

 追記
 PCは四年ほど前のデスクトップ。
(ねむねむ) 2016/05/13(金) 19:51

 やはり、10万行あれば、大変ですねぇ。
 くろさんは、いやがってますけど、12万行のデータを作ってVBAで、ちょこちょこっと書いてみたんですけど、やはり4年ほど前のデスクトップで
 4分半ほどかかりました。

(β) 2016/05/13(金) 21:50


 =IF(SUMPRODUCT(LEN(A$1:A$100000)-LEN(SUBSTITUTE(A$1:A$100000,A1,"")))>LEN(A1),"重複","")
 でもいいか。
 もっとも時間のほうは10万件で1分程度しか短くならなかったが。
(ねむねむ) 2016/05/14(土) 13:18

 B1 =IF(A1="","",IF(COUNT(INDEX(FIND(A1,A$1:A$100000),))>1,"重複",""))

 ※時間は計ってまへん。
 
(GobGob) 2016/05/16(月) 11:12

ねむねむさん、βさん、GobGobさんご返信ありがとうございます。
お礼が遅くなり申し訳ありません。

件数の件は10万行は稀ということと、あまりexcelを使用しない方に使用して頂くこと、その他諸事情含めて・・・でしたので完璧でした!

なるほど!というご回答で勉強になりました。
皆様、ありがとうございました^^
(くろ) 2016/05/16(月) 11:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.