Note: The other languages of the website are Google-translated. Back to English

セルの文字列内の重複する文字や単語を削除するにはどうすればよいですか?

各セルに重複する文字または単語があり、重複を削除して一意の文字または単語のみを残したいとします。 Excelでこの問題をどのように解決できますか?

ユーザー定義関数を使用してテキスト文字列の重複文字を削除する

ユーザー定義関数を使用して、句読点で区切られた重複する単語を削除します


矢印青い右バブル ユーザー定義関数を使用してテキスト文字列の重複文字を削除する

テキスト文字列のリストがある場合は、次のスクリーンショットに示すように、重複する文字を削除する必要があります。 ここでは、それに対処するためのVBAコードについて説明します。

doc-remove-duplicate-characters-1

1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ.

2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.

VBAコード:セル内のテキスト文字列の重複文字を削除します

Function RemoveDupes1(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupes1 = xOutValue
End Function

3。 次に、このコードを保存して閉じ、ワークシートに戻って、この数式を入力します = removedupes1(A2) (A2 重複を削除するデータセルは、データ以外の空白のセルになります。スクリーンショットを参照してください。

doc-remove-duplicate-characters-1

4。 次に、この数式を適用する範囲セルに塗りつぶしハンドルをドラッグすると、重複するすべての文字が各セルからすぐに削除されます。

doc-remove-duplicate-characters-1


矢印青い右バブル ユーザー定義関数を使用して、句読点で区切られた重複する単語を削除します

セル内に特定の句読点で区切られた単語がある場合は、必要に応じて重複する単語を削除することもできます。 次の手順で実行してください。

1. 押したまま Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ.

2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.

VBAコード:セルの句読点で区切られた重複する単語を削除します

Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
    Dim x
    'Updateby Extendoffice
    With CreateObject("Scripting.Dictionary")
        .CompareMode = vbTextCompare
        For Each x In Split(txt, delim)
            If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
        Next
        If .Count > 0 Then RemoveDupes2 = Join(.keys, delim)
    End With
End Function

3。 次に、このコードを保存して閉じ、ワークシートに戻って、この数式を入力します = RemoveDupes2(A2、 "、") データの横の空白のセルに、スクリーンショットを参照してください。

doc-remove-duplicate-characters-1

4。 次に、数式を必要なセルにコピーすると、重複する単語がすべてすべてのセルから削除されます。 スクリーンショットを参照してください:

doc-remove-duplicate-characters-1

注意:上記の式では、 A2 使用するセルを示し、コンマ(、)はセル内の単語を区切る句読点を表します。必要に応じて、他の句読点に変更できます。


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
コメントを並べ替える
コメント (66)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
まだ壊れています...実際には何も表示されません。 これが私のセルデータです:27000、Basic、Products、Materials、From、Wood、Stone、Earthen、Raw、Materials、27100、Basic、Forest、Products、General、27110、Basic、Forest、Products、Sawmill、Products、27120、Basic 、Forest、Products、Wood、Pulp、27200、Glass明らかにそこにいくつかの重複があります。 セルを空白のままにします。 考え?
このコメントは、サイトのモデレーターによって最小化されました
気にしないで、私はばかげています。 単語をプルするだけでよいので、モジュールの名前をRemoveDupesに変更しましたが、コードの後半でRemoveDupesを変更しませんでした。 修正、ハンマーで自分を叩く...
このコメントは、サイトのモデレーターによって最小化されました
そして、RemoveDupesとConCat(CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATEではなくVBAの良さ)を組み合わせて次のようにしました:= RemoveDupes(ConCat( "、"、G495:G502)、 "、")それは私の細胞を引き込み、それからすべての複製を一掃しました。 RemoveDupesに感謝します。ConCatは次のとおりです。FunctionConCat(Delimiter As Variant、ParamArray CellRanges()As Variant)As String Dim Cell As Range、Area As Variant If IsMissing(Delimiter)Then Delimiter = "" For Each Area In CellRanges If TypeName( Area)= "Range" Then For Each Cell In Area If Len(Cell.Value)Then ConCat = ConCat&Delimiter&Cell.Value Next Else ConCat = ConCat&Delimiter&Area End If Next ConCat = Mid(ConCat、Len(Delimiter )+ 1)終了機能
このコメントは、サイトのモデレーターによって最小化されました
「ユーザー定義関数を使用して句読点で区切られた重複する単語を削除する」というソリューションを試しましたが、セル内の複数の単語に対してはうまく機能しますが、問題を完全に解決することはできません。 複数の値を持つXNUMXつのセルがあり、複数の値を持つ別のセルと比較して、XNUMXつのセル間に存在する重複を削除するようにします。 それを行う方法はありますか?
このコメントは、サイトのモデレーターによって最小化されました
ここで同じplsヘルプ
このコメントは、サイトのモデレーターによって最小化されました
このスレッドはまだ生きていますか? このVBA関数に関する洞察をいただければ幸いです。私の質問はコードに関係しています。コードを使用する場合は、区切り文字として特定の句読点を見つけるように指示する必要があります。句読点?
このコメントは、サイトのモデレーターによって最小化されました
あなたのアドバイスは素晴らしいです! 約58,400分で2レコードをソートし、13週間(またはそれ以上)の作業を節約しました。 私の複製は、この例「V&O液体燃料ランタン1-2 /13inblk燃料ランタン」をこの「V&O液体燃料ランタン1-2/XNUMXinblk」に変えるのが少し難しかったです。ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はあなたの助けが必要です、私はあなたのコードを試しましたが、それはうまくいきませんでした、おそらく私は番号を持っているので、コンマで区切られた重複した電話番号を持っていますどうしたらいいか教えてくださいありがとう
このコメントは、サイトのモデレーターによって最小化されました
ここで同じplsヘルプ
このコメントは、サイトのモデレーターによって最小化されました
ブリリアントありがとうございます! ありがとう! ありがとう!
このコメントは、サイトのモデレーターによって最小化されました
素晴らしいありがとう!.....
このコメントは、サイトのモデレーターによって最小化されました
やあ、私はあなたの助けが必要です。 重複を抽出しない場合はどうすればよいですか? A1(asdfghjiklkk)では、kは重複した文字なので、A2(k)はどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
重複させたくない単語があり、残りは重複しない場合、機能を調整することはできますか?
このコメントは、サイトのモデレーターによって最小化されました
このガイドを本当にありがとうございました、私に多くの仕事を節約したのと同じように! :)
このコメントは、サイトのモデレーターによって最小化されました
これは非常に役立ちます。 私はそれを試しました、そしてそれは例外として私のために働きます。 素晴らしい !!!!
このコメントは、サイトのモデレーターによって最小化されました
これは、単一のセル内で重複するフレーズを見つけるための素晴らしくシンプルなソリューションであり、私の問題に対する答えを探しているときに見つけた、長くて長いマクロソリューションのいくつかよりもはるかに簡単です。ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
このコードをありがとう-それは私にたくさんの時間を節約しました。
このコメントは、サイトのモデレーターによって最小化されました
1.のようなデータがあり、2つのセルに以下を示します。1。123029. ZERPUR、MAHENDRAGARH、HARYANA-30771237、8813073653、16、ZERPUR(123029)、MAHENDRAGARH、HARYANA-30771237、8813073653、123029これが必要ですのように:-ZERPUR、MAHENDRAGARH、HARYANA-30771237、8813073653、9034509168ありがとう&よろしくHanuman Singh XNUMX
このコメントは、サイトのモデレーターによって最小化されました
教えて? それも知る必要があります。
このコメントは、サイトのモデレーターによって最小化されました
1番目の小文字の位置を確認できますか


試験-RAMSHsJHSAhsjDDD------式=sで最初の小文字の位置を知りたい
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、Meharban、
次の配列数式を適用して、最初の小文字の位置を取得できます。
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
Ctrl + Shift+Enterキーを同時に押すことを忘れないでください。


それがあなたを助けることができることを願っています、ありがとう!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはスカイヤン

正常に動作しています....。
実は同じものが欲しかった。

どうもありがとう !!


メハルバン・シン・パル
このコメントは、サイトのモデレーターによって最小化されました
一致した文字列の重複を削除する方法...uplsは教えてくれますか


よろしく、
キラン
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、キラン、
問題の例を挙げていただけますか? または、添付画像を挿入することもできます。
お返事を楽しみにしています!
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとう、それは私をもっと助けてくれます。 しかし、データセットにもっと具体的なものが必要です。
15つの列データがあります。 IDと情報。 情報列では、セルごとに「Kant-、Udp-、Akr-など」のようなプロジェクトIDが繰り返されます。 私のデータセットの場合、project_idはXNUMXを超えており、修正されています。 したがって、セルからrepeatered_idを削除したいのですが、最初のIDは保持します。
例:カント-526(0.0287)、カント-527(0.0113)、カント-528(0.0262)///カント-526(0.0287)、527(0.0113)、528(0.0262)、
Kant-543(0.0685)、Kant-544(0.0685)、Udp-097(0.0141)/// Kant-543(0.0685)、544(0.0685)、Udp-097(0.0141)

サンプル画像はこちらに添付されています。 これに対する解決策はありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、イムラン、
問題を解決できず申し訳ありません。誰かが良いアイデアを持っている場合は、ここにコメントしてください。
ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
私は自分で解決策を持っています。 ここではSUBSTITUTE式を使用しましたが、データに対して大きすぎます。 したがって、適切な結果を得るには、XNUMX〜XNUMX回繰り返します。

= SUBSTITUTE(SUBSTITUTE( "Kant-"、 ""、2)、( "Kant-"、 ""、2)
ここでは、1番目のカント交換用の最初の2と、次のすべてのカント除去用に( "Kant-"、 ""、2)を追加するだけです。 それは私のために働いています。 しかし、私は良いVBAを好みます。
このコメントは、サイトのモデレーターによって最小化されました
コードをありがとう。

手伝ってくれませんか? マクロ関数を使用して、セルの句読点で区切られた単語を削除していますが、データは単語ではなく、実際にはフレーズです。 「KTE、KTO、KTW、KTO」の代わりに、実際には「請求書の準備、メールの確認、契約の更新、メールの確認」などの簡単な説明があります。

VBAを更新して、単語ではなく重複するフレーズを削除することはできますか?

どうもありがとう、これは実際に非常に役立ちます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、アロンソ、
重複するフレーズを削除するには、次のユーザー定義関数が役立つ場合があります。試してみてください。

関数RemoveDuplicateValue(xStr As String、xDelim As String)As String
薄暗いxValue
If(Len(xDelim)> 0)And(Len(Trim(xStr))> 0)Then
CreateObject( "Scripting.Dictionary")を使用
Split(xStr、xDelim)の各xValueについて
If Trim(xValue)<> "" And Not .exists(Trim(xValue))Then .Add Trim(xValue)、Nothing

.Count> 0の場合、RemoveDuplicateValue = Join(.keys、xDelim)
最後に

RemoveDuplicateValue = xStr
終了する場合
エンド機能

次に、次の式を適用します:= RemoveDuplicateValue(A2、 "、")、セパレーターを独自のものに変更します。
このコメントは、サイトのモデレーターによって最小化されました
こんにちはスカイヤン、



私は次のセルでいくつかの助けを得ることを望んでいます:

PR-プエルトリコ; 米国-米国; 米国-米国

アップロードツールでは重複が許可されないため、重複する米国を削除する必要があります。



上記のVBAを使用し、数式デリミネーターを「;」に置き換えました。 ハイフンが原因で問題が発生していますか? #NAMEを返しますか? 数式を実行するときはいつでも。 マクロ/VBAは初めてですが、ファイルがマクロ対応ファイルとして保存されていることを確認しました。 私は本当にこれらをTに従おうとしました。


私が完了しなければならなかった別のプロジェクトにも役立ったので、このすでに素晴らしい情報のすべてに感謝します。追加の情報は大歓迎です。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、マイケル、
セルから重複するフレーズをすべて削除し、一意のフレーズのみを残すという意味ですか?
返事をお待ちしています!
このコメントは、サイトのモデレーターによって最小化されました
これは私が探している出力です:

現在:PR-プエルトリコ; 米国-米国; 米国-米国
希望:PR-プエルトリコ; 米国-米国

これが理にかなっていることを願って、迅速な返信をありがとうございました。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、マイケル、
次のコードを適用してから、次の式を使用する必要があります:= RemoveDuplicateValue(A2、 ";")。 ぜひお試しください。お役に立てば幸いです。

関数RemoveDuplicateValue(xStr As String、xDelim As String)As String
薄暗いxValue
If(Len(xDelim)> 0)And(Len(Trim(xStr))> 0)Then
CreateObject( "Scripting.Dictionary")を使用
Split(xStr、xDelim)の各xValueについて
If Trim(xValue)<> "" And Not .exists(Trim(xValue))Then .Add Trim(xValue)、Nothing

.Count> 0の場合、RemoveDuplicateValue = Join(.keys、xDelim)
最後に

RemoveDuplicateValue = xStr
終了する場合
エンド機能
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとうございました。 あなたの返事は私のコーヒーよりも歓迎されました!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはこれは本当に役に立ちます
しかし、「NO TO:」の後の単語全体を削除したいのですが。

例:NO TO:[C11bx1]

注:[C11bx3]このように
ここにはまだコメントが投稿されていません
もっと読み込む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所