
こんばんは
入力した文字列の重複チェックを行うため countif を使用を使用するのですが、
表題のように 0.1 と 0.10 は同じものとして扱われてしまいます。
これを回避する(区別する)方法はないでしょうか?
(A列に値が入力されていたとして
=countif(A:A,A1)
と入力。2以上なら重複と判定するが、0.1 と 0.10 がある場合は重複とみなされる)
今のところ、作業セルを設けて ~&"-" などして、
0.1- と 0.10- にしてから重複チェックするなどしています。
バージョンには左右されないと思いますが、Excel 2010 使用。
よろしくお願いいたします。
No.2
- 回答日時:
>今のところ、作業セルを設けて ~&"-" などして、
・これってできますか?こちらでは同じ文字長になります。
・LEN でやっても、文字列に変えないと、0.1 も、0.10も同じです。
>表題のように 0.1 と 0.10 は同じものとして扱われてしまいます。
>これを回避する(区別する)方法はないでしょうか?
この2つの違いは、書式が違います。
それを、CELL関数で調べます。
ですから、
CELL("format",A1) を調べます。
書式 :結果
0.1は、標準(G)か、0.0 ....G, F1
0.10 は、0.00 ....F2
補助列にこういう数式を入れて
F列の場合
=IF(ISNUMBER(SUBSTITUTE(A1&CELL("format",A1),"F2","")*1),1,0)
最後に、合計を取れば、同じものだけが出てきます。
もしくは、その数式の中の、
=A1&CELL("format",A1)
を使い、同じ文字があれば、重複になりますが、0.1と0.10は別として扱われます。
それ以外では、やはりVBAに頼らざるをえないと思います。
0.1、 0.10 双方とも文字列として入力します。
文字列として入力しているのに、同じものとして扱われるので難儀していました。
ご回答ありがとうございます。
No.3
- 回答日時:
こんにちは!
仮にA列にデータがあるとして、セルの表示形式は「文字列」だとすると
=SUMPRODUCT((A1:A100="0.1")*1)
としてみてはどうでしょうか?
これで「0.1」のセル数が表示できると思います。
※ セルの表示形式が「標準」の場合は「0」になります。m(_ _)m
なるほど!希望通りの結果になりました!
配列系の関数は検討しかけましたが、うまく使えなかったので、
断念してしまいました!
ご回答ありがとうございます。
No.4
- 回答日時:
No.3です。
>2以上なら重複と判定するが・・・
要するに重複するかどうか?の判定が必要なのですね?
仮にB列に表示する場合はB1セルに
=IF(SUMPRODUCT((A$1:A$1000<>"")*(A$1:A$1000=A1))>1,"重複","")
という数式を入れフィルハンドルで下へコピーしてみてください。m(_ _)m
ご回答ありがとうございます。
>要するに重複するかどうか?の判定が必要なのですね?
その通りです。
こちらは空白セル無視版ですね。
参考にさせていただきます。
No.5
- 回答日時:
> 0.1- と 0.10- にしてから重複チェックするなどしています。
それでいいと思います。負担が少ないので。
ただどういうデータなのか分かりませんが 大元で重複チェックできないので
しょうか。まさか「0.10」が手入力という訳ではないですよね。
回答ありがとうございます。
作業セル使用は個人的に行う分には問題ないのですが、
詳しくない人が見ると意味が分からなかったり、
作業セルを非表示にすると、フィルダウンで作業セルがコピーされないので、
何とかできないかなぁといったところでした。
大元データについては補足に少し追記させていただきます。
No.6
- 回答日時:
>セルの表示形式が「標準」の場合は「0」になります。
それは、違います。
0.1 になっている場合は、表示形式は、
G/標準か、0.0 です。
数値の0.10 と 0.1 の違いは、=CELL("format",A1) という関数なら違いが分かるというだけのこと。文字列なら、話はまるで違ってきますが、質問条件とは違います。
ちなみに、0.1の「0」の表示では、CELL("format",A1)関数なら、F0 となります。
このような状態で、数値が置かれているとします。
A1 ~A10
0.1
0.10
0.10
0.10
0.10
0.10
0.10
0.10
0.10
0.10
このA1 は、重複しているかしていないか、というのを導きだすには、補助列を仮に、B1からとするなら、
B1~B10
=A1&CELL("format",A1)
として、=COUNTIF(B1:B10,B1) とすれば、重複していないということになります。B1は、0.1G または、0.1F1 となり、重複がないことになります。
すみません、表題に記載して、
本文になかったので誤解を招いているようですが、
入力されている値は 文字列 で入力しています。
ご回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルでフィルタ後の列の重複を回避したい 6 2022/10/13 12:50
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
エクセル
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】A列にある、日付(本...
-
エクセルの循環参照、?
-
【マクロ】3行に上から下に並...
-
【マクロ】WEBシステムから保存...
-
【マクロ】EXCELで読込したCSV...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
【条件付き書式】シートの中で...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
派遣会社とかハローワークとか...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報
補足です。
1. 入力している値は 文字列 として入力しています。
(シングルクォーテーションで始めるか、書式を 文字列 にしてから入力)
2. 実際のデータでは見出し列として x.1、x.2~x.10、x.11(xは任意の数字)
といった具合に値が入力されています。
重複している場合には実際の重複箇所のデータを確認して、
いづれのデータを使用するのか、個別判定します。
見た目としては x.1 と x.10 は別ものとして存在します。
SUMPRODUCT vs COUNTIFS で再計算時間を比較したところ、
SUMPRODUCT 100秒前後
COUNTIFS 13秒
(対象:3500セル)
となりました。
よって 銀鱗 さんのご回答をベストアンサーとさせていただきます。
皆さまありがとうございました。