目次
Excelでセル内の重複を検索して削除するには、3つの方法があります。 最適な方法を選択してください。
重複する値や行を削除する場合、Microsoft Excelには様々なオプションがあります。 しかし、セル内の同じテキストを削除する場合、Excelには何もありません。 ツールも機能も数式も何もありません。 それで目的を達成できないのでしょうか? いいえ。 Excelにない機能は自分で作りましょう :)
Excelのセルで繰り返される単語を削除する方法
問題点 同じ単語や文字列がセル内にあり、2回目以降の繰り返しをすべて削除したい場合。
解決方法 : カスタムのユーザー定義関数または VBA マクロです。
セル内の重複を削除するユーザー定義関数
セル内の重複テキストを排除するには、次のユーザー定義関数(UDF)、名前は RemoveDupeWords :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ( "Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nothing End Function関数のコードをワークブックに挿入する方法
上記のコードをExcelに追加するには、次のようにします。
- Alt + F11キーを押して、Visual Basic Editorを開きます。
- 左ペインで、右クリック 本作品 を選択し インサート > モジュール .
- 上記のコードを コード ウィンドウに表示されます。
詳しくは、「ExcelでVBAコードを挿入する方法」をご覧ください。
RemoveDupeWords関数のシンタックス
新たに作成した、セル内の重複テキストを削除する関数の構文は次のとおりです。
RemoveDupeWords(text, [delimiter])どこで
- テキスト (必須) - 繰り返されたテキストを削除したい文字列またはセル。
- デリミタ (オプション) - 繰り返されるテキストを区切るデリミタ。 省略した場合はスペースがデリミタとして使用されます。
この機能は ケースセンシティブでない つまり、小文字と大文字は同じ文字として扱われます。
RemoveDupeWords関数の使用方法
関数のコードがワークブックに追加されると、Excelの組み込み関数と同じように数式で使用できます。
等号の後に関数名を入力し始めると、数式のインテリセンスに表示されます。 関数をダブルクリックすると、セルに挿入されます。 引数を定義し、閉じ括弧を入力してEnterキーを押すと、数式は完了します。
例えば、A2からカンマとスペースで区切られた重複する単語を削除するには、B2に以下の数式を入力し、必要な数だけセル内をドラッグして削除します。
=RemoveDupeWords(A2, ", ")
で区切られた一意の単語または部分文字列のリストができあがります。 カンマとスペース :
もし、カンマで区切られたリストを取得したい場合は、以下のようにします。 コンマのみ をデリミタに使用します。
=RemoveDupeWords(A2, ",")
ソースデータが 空間 の場合、第2引数は" "または省略される。
=RemoveDupeWords(A2)です。
他のExcel関数と同様に、UDFはソースデータが変更されると自動的に再計算されるので、結果は常に最新に保たれます。
複数のセルから重複するテキストを一度に削除するVBAマクロ
複数のセルから繰り返されるテキストを一度に削除したい場合は RemoveDupeWords この場合、デリミタはハードコードされているので、デリミタが変わるたびにマクロのコードを更新しなければなりません。 代わりに、最も一般的なデリミタ、たとえばスペース、カンマ、カンマとスペースなどに対していくつかのコードを書き、マクロに意味のある名前を付けることができます(例. RemoveDupesDelimSpace .
マクロのコードは以下の通りです。
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End Sub上記のコードでは、デリミタが カンマとスペース 別の区切り文字を使用するには、このコードラインで "," を別の文字に置き換えてください。
cell.Value = RemoveDupeWords(cell.Value, ", ")
注意:マクロが動作するためには、マクロのコードとRemoveDupeWords関数のコードが同じモジュールに配置されている必要があります。
マクロの使用方法
マクロのコードを自分のワークブックに挿入するか、コードのある弊社サンプルワークブックを開き、以下の手順でマクロを実行します。
- 繰り返しのテキストを削除したいセルの範囲を選択します。
- Alt + F8キーで開きます。 マクロ のダイアログボックスが表示されます。
- マクロの一覧で、以下を選択します。 RemoveDupeWords2 .
- クリック 実行 .
詳しくは、「Excelでマクロを実行する方法」をご覧ください。
注)マクロの動作は 取返しのつかない マクロを使用する前にワークブックを保存しておくことを強くお勧めします。 そうすれば、何か問題が発生しても、ワークブックを閉じて再び開くだけで、元の状態に戻ることができます。 または、マクロの影響を受ける可能性のあるワークシートのコピーを作成しておくこともできます。
セル内の重複した文字を削除する方法
問題点 同じ文字が1つのセルに複数回出現している場合、各セルには1つの文字しか含まれないはずです。
解決方法 : カスタムのユーザー定義関数または VBA マクロです。
繰り返し文字を削除するユーザー定義機能
セル内の重複した文字を、最初に出現した文字だけを残して削除するには、次のユーザー定義関数を使用します。 RemoveDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ( "Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End Function関数のコードをワークブックに挿入するには、前の例とまったく同じ手順で行います。
RemoveDupeChars関数のシンタックス
このカスタム関数の構文は、可能な限りシンプルで、必要な引数は1つだけです。
RemoveDupeChars(テキスト)どこ テキスト は、重複した文字を削除したい文字列またはセルです。
この機能は ケースセンシティブ で、小文字と大文字は別の文字として扱われます。
RemoveDupeChars関数の使用方法
RemoveDupeWords の使用について述べたことはすべて、次の場合にも当てはまります。 RemoveDupeChars というわけで、理屈は抜きにして、さっそく例を挙げてみましょう。
A2列から始まるA列の重複文字を削除するには、B2にこの数式を入力し、コピーダウンしてください。
=RemoveDupeChars(A2)です。
下の画像にあるように、この機能は文字、数字、特殊記号などさまざまな種類の文字をうまく処理することができます。
ヒント:キャラクターが互いに離れている場合 デリミタ のように、スペース、カンマ、ハイフンなどの文字列を入力した後 RemoveDupeWords 関数と同じです。
セルから同じ文字を削除するVBAマクロ
のように RemoveDupeWords は、その RemoveDupeChars 関数は、マクロの中から呼び出すこともできます。
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubこのUDFはデリミタを使用しないので、コードで調整する必要はありません。
注意:マクロを動作させるには、マクロのコードとRemoveDupeChars UDFのコードをVBAエディターで同じモジュールに配置する必要があります。
マクロの使用方法
マクロのコードをワークブックに挿入済み、またはコードを含む弊社サンプルワークブックを開いたと仮定して、この方法でマクロを起動します。
- 繰り返し文字を削除したいセル範囲を選択します。
- Alt + F8 を押すと、以下の画面が表示されます。 マクロ のダイアログボックスが表示されます。
- マクロの一覧で、以下を選択します。 RemoveDupeChars2 .
- クリック 実行 .
Ultimate Suiteで重複する部分文字列を削除
このチュートリアルの冒頭で、Microsoft Excelにはセル内の重複を削除する機能が内蔵されていないことを述べました。 しかし、Ultimate Suiteには備わっているのです。
で見ることができます。 デュプリケートリムーバー のプルダウンメニューを表示します。 エイブルビットのデータ タブで デデュープ のグループです。 重複する部分文字列を削除する のオプションがExcelに表示されない場合は、Ultimate Suiteの最新版がインストールされていることを確認してください(無料試用版はこちらからダウンロードできます)。
複数のセルから繰り返される単語やテキストを5秒(1ステップにつき1秒 : )で削除するには、次のようにします。
- ソースデータを選択し、起動します。 重複する部分文字列を削除する ツールを使用します。
- を指定します。 デリミタ .
- 治療するかどうかの定義 連続デリミター を1個とする(デフォルト)。
- を行うかどうかを選択します。 ケースセンシティブ または ケースインセンシティブ を検索してください。
- クリック 削除 .
VBAや数式に煩わされることなく、迅速かつ正確な結果を得ることができます。
このアドインの詳細については、ホームページをご覧ください。 また、下記の評価版をダウンロードしてお試しください。
以上、セル内の重複したテキストを削除する方法でした。 読んでくださってありがとうございました!また来週のブログでお会いしましょう。
ダウンロード可能なもの
セル(.xlsmファイル)内の重複を削除する例
Ultimate Suite 14日間フル機能版(.exeファイル)