web-dev-qa-db-ja.com

Excelセル内の重複を削除します

1つのExcelセルに次のテキスト文字列があるとします。

John John John Mary Mary

別のセルに数式を作成したい(メニュー関数やVBAは使用しないでください)

John Mary

これどうやってするの?

私がこれまでに試したのは、インターネットを検索して、この問題についてSOでしたが、Excelに組み込まれている重複の削除を含む解決策、またはcountif""の重複の置換。Excel関数、特に「テキスト」カテゴリの関数のリストも調べましたが、1つのセルで実行できる興味深いものは見つかりませんでした。

4
Waldir Leoncio

答えはここにあります: https://www.extendoffice.com/documents/Excel/2133-Excel-remove-duplicate-characters-in-string.html

_Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
Dim x
'Updateby20140924
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
_

上記のコードをモジュールに入れます

使用=remove(A2,",") A2には、で区切られた繰り返しテキストが含まれています。区切り文字は変更できます。

2
Madhav Kulkarni

数式なし:区切り文字としてスペースを使用してテキストを列に変換し、出力を転置し、各列に個別に[重複の削除]を適用してから、結果を転置します。

0
pnuts

セルに3つ以上の異なる名前がない場合、これは機能するはずです。

=MID(A1&" ",1,FIND(" ",A1&" "))&
 MID(SUBSTITUTE(A1&" ",MID(A1&" ",1,FIND(" ",A1&" ")),"")&" ",1,
 FIND(" ",SUBSTITUTE(A1&" ",MID(A1&" ",1,FIND(" ",A1&" "))&" ","")))

これらすべてについてJohn Maryが表示されます。

John John John Mary Mary
John Mary
John Mary John Mary
John Mary Mary
John John Mary

これらすべてについてJohnが表示されます。

John
John John
John John John

また、A1が空白の場合、何も表示されません。

0
Rick Hitchcock

私が書いたように、VBAで解決するのは簡単です。 VBAを使用できない場合、1つの方法はヘルパー列を使用することです。

仮定:あなたの文字列はA1にあります

次の数式を入力します。

C1:  =IFERROR(INDEX(TRIM(MID(SUBSTITUTE($A$1," ",REPT(" ",99)),(ROW(INDIRECT("1:" & LEN($A$1)-LEN(SUBSTITUTE($A$1," ",""))+1))-1)*99+((ROW(INDIRECT("1:" & LEN($A$1)-LEN(SUBSTITUTE($A$1," ",""))+1))=1)),99)),ROWS($1:1),1),"")

D1:  =IF(COUNTIF(C1:$C$5,C1)=1,C1,"")

C1とD1を選択し、空白が表示されるまで入力します

E1:  =D1
E2:  =TRIM(CONCATENATE(D2," ",E1))

E2を選択して記入します。

列Eに入力された最後のセルの内容が結果になります。

列Eの範囲の最後のセルの内容を自動的に返すセルが必要な場合は、次のような数式を使用できます。

=LOOKUP(REPT("z",99),$E$1:$E$100)
0
Ron Rosenfeld

あなたがリストを作成しているのであれば、うまくいくかもしれない解決策を見つけました。

上記のセルを現在の行と組み合わせてリストを作成する場合、次のコードを使用して、値が上記のセルにすでに存在するかどうかを確認できます。

if(iserror(find(value_to_be_added,previous_concatenation)),
    previous_concatenation&" "&value_to_be_added,previous_concatenation)
0
user10291834