答えは「FALSE」です。なぜでしょう?, 下図の例では、セル C10 のメールアドレスの末尾にだけ半角スペースが入っており、 ブログを報告する, function toggle(mainid,anchorid,anchoropen,anchorclose,open…, Twitter でダイレクトメッセージください。インターネットメールは shin'nosuke online にメールリンクがあります。, SharePoint Server 2013 (SP1なし) を Windows Server 2012 R2 にインストールする. このようなことを試してみてください。 あなたのデータをバックアップしようとする前に。 下のコードは列Aから重複を削除し、大文字と小文字を区別します。, 私は、この数式フィールドを使用して私が持っているすべての> 100kレコードにコピーしようとしました。, = IF(SUMPRODUCT( - EXACT(A2、$ B $ 1:B1))、 ""、A2), はい、私のExcel 2016は32ビットであり、はい私のラップトップはわずか8GBのRAMです。 しかし、私は64ビットと16GBのRAMを持つ人が私と同じエラーを経験したことを読んでいます。, 私は、Excelの関数に関数があることを知っています:データ>列の選択>重複を削除します。 ただし、この関数はINSENSITIVEデータのみを削除します。, 私はこの問題をどのように克服できるか教えてください。 私はこの問題を解決するためにCrystal Reportsやフリーウェアのようなものを使用することに門戸を開いています。 お知らせ下さい。, 一般的な解決策としては、既に提案されているVBAのアプローチがおそらく好ましいと考えられます。 しかし、一度しか使えないものについては、あなたがどのように適用するかについてちょっとした適応を加えて意図したとおりに動作させることができます。 =IF(SUMPRODUCT(--EXACT(A2,$B$1:B1)),"",A2) 。 私もCOUNTIFアルゴリズムを使用しようとしましたが、これはSUMPRODUCTよりはるかに高速ですが、大文字と小文字は区別されません。, 私も8GBのメモリを搭載した32ビットExcelを実行しているので、私はメモリの問題を再現できるかどうか不思議でした。 私はA列に100,000個のランダムな5文字の文字列のリストを生成しました。10文字しか使用しなかったので、100,000文字列の中には何度か出現するものがありました(ABCDEFGHJK)。 私はその後、列BのOPによって提案された式を適用して、一意の値だけを除外しました。 それは本当にうまくいったが、かなりの時間がかかった。 しかし、私はOPがした記憶問題に遭遇したことはありません。, 提案された解決策: これらの観測に基づいて、特に問題の1つは、列Aを新しい一時的なワークブックにコピーし、他のすべてのワークブックを閉じている間にSUMPRODUCT式を実行することです。 終了したら、元のファイルの元の列に結果を貼り付けることができます。 実際に重複を削除するには、その列をフィルタリングするだけで、すべての重複したもの(空のセル)がグループ化され、それらの行が削除されます。 複製しようとする試みの詳細は以下にあります。, SUMPRODUCT:約1時間 最初に私はOPと同じ公式を試しました。 =IF(SUMPRODUCT(--EXACT(A2,$B$1:B1)),"",A2)ですが、一度に10,000行しか行いませんでした。行10000,20000などと一度に10000行をコピーします。)10,000行の各セットは、完了するまで数分かかりました。 一度に100,000個の細胞すべてに対して1つの巨大なコピー操作としてシバン全体を行った場合、操作は完了するまで約1時間かかり、その間にExcelは応答しませんでした。 メモリ使用量は1,4 GBで、CPUの平均容量は50%でした(Windowsタスクマネージャで監視)。 私はまた、私はすでに100%にCPUの容量をプッシュし、いくつかのクラッシュを引き起こしたさまざまな方法で(したがって、より多くのメモリを消費する)データを操作したときに、この数式を実行しようとしました。 Excelを閉じてメモリをクリアし、他のワークブックを開いていない状態で新しい操作を再度実行するだけで、それを回避することができました。, 次のスクリーンショットで見られるように、数式は機能し、ユニークなエントリはリストの下側になるほど(予想外であるため、ランダムになります)。 私は重複している細胞に1を割り当てたので、簡単に数えることができた。 そのような例は36,843件ありました。, カウンター:8.5分 完了までに約1時間かかったSUMPRODUCTアルゴリズムと比較して、次のCOUNTIF式は8,5分で同じ仕事を完了しましたが、大文字と小文字を区別しませんでした。 この方法では、ヘルプカラムを使用する必要があります。 COUNTIFは、特定の文字列が現在のセルの上の範囲で使用されたインスタンスの数を返します。したがって、文字列が最初に検出されるたびに、1を返します。セルB2には、 =COUNTIF($A$2:$A2,A2) 、これを100,000行すべてにコピーするには8分半かかりました。 その後、別の列では、単純なIF式を使用して列Aの一意の値を除外しました。 セルC2は=IF(B2=1,A2,1)を含み、列Aの文字列が一意であればその列を返します。 それ以外の場合は1が返されます(SUMPRODUCTとの比較を容易にするため)。 100,000行すべてに対してこのIF式をコピーすることは事実上瞬間的です。 この操作後のC列の1の合計は、安心してSUMPRODUCTの場合と同じ36,843でした。, INDEX:失敗 また、INDEX関数とMATCH関数を使って配列式を使いました。 この式はCOUNTIFと同じ作業を行いますが、空の行も除外します。 =INDEX($A$2:$A$100001,MATCH(0,COUNTIF($E$1:E1,$A$2:$A$100001),0)) 。 これは配列式(Ctrl + Shift + Enter)としてセルB2に入力し、次にコピーする必要があります。 個々のセルを一度に1つずつコピーすることは、数十行行えても問題ありませんでしたが、それ以上のものはExcelがクラッシュする原因となりました。 私は一晩中これを走らせようと試みたが、操作は決して終わらなかった。 (この式は大文字と小文字を区別するように拡張することができますが、試してみることはありませんでした)。, ただし、失敗したINDEX式では、 別のワークブックに式が適用されたときに上記の動作が発生することに注意してください。 私はまた、COUNTIF式と同じワークブックのD列でこの数式を実行しようとしました。 それから私は実際にOPに記載されているメモリの問題にぶち当たっていましたが、それはメモリの問題がブックの残りのデータに依存していることを示唆しています。.