
エクセルでセル内の重複する文字列を削除する方法を教えてください。
例えばA1のセルに次のような文字列があります
斎藤(18)
武田(21)
稲葉(41)
田中(3)
斎藤(18)
金子(8)
田中(3)
この中で重複している文字列(斎藤(18)田中(3))を削除し、以下のようにしたいと思います。
斎藤(18)
武田(21)
稲葉(41)
田中(3)
金子(8)
区切り位置にはカンマやスペースは入ってません。
(改行コードは入ってます)
わかる方おられましたら教えていただけますと幸いです。
よろしくお願いいたします。
No.7ベストアンサー
- 回答日時:
A1セル以下、A列にデータがあるとして、変換結果をB列に書き出します。
連想配列のキーの配列をまとめるのに、Joinが使ってみたかっただけです。
重複チェックするデータ数が今回程度では、速度上のメリットもないかもしれませんが、ご参考まで。
Sub test()
Dim myCell As Range, targetRange As Range
Dim buf As Variant
Dim i As Long
Dim myDic As Object
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With ActiveSheet
Set targetRange = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp))
End With
Set myDic = CreateObject("Scripting.Dictionary")
For Each myCell In targetRange.Cells
buf = Split(myCell.Value, vbLf)
For i = LBound(buf) To UBound(buf)
If Not myDic.Exists(buf(i)) Then myDic.Add buf(i), ""
Next i
myCell.Offset(0, 1).Value = Join(myDic.keys, vbLf)
myDic.RemoveAll
Next myCell
Set myDic = Nothing
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
No.6
- 回答日時:
No.5です。
>実は同じようなセルが300行以上あるんです。。。
ということなので、もう一度コードを載せてみます。
A列データは1行目からあるとします。
前回同様B列を作業用の列として使用していますので、B列は何もない!ということだとして・・・
Sub test2() 'この行から
Dim i, k As Long
Dim str As String
Dim myArray As Variant
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
myArray = Split(Cells(i, 1), vbLf)
For k = 0 To UBound(myArray)
Cells(k + 1, 2) = myArray(k)
Next k
For k = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Columns(2), Cells(k, 2)) > 1 Then
Cells(k, 2).Delete (xlUp)
End If
Next k
For k = 1 To Cells(Rows.Count, 2).End(xlUp).Row
str = str & Cells(k, 2) & vbCrLf
Next k
Cells(i, 1) = Left(str, Len(str) - 1)
str = ""
Columns(2).Clear
Next i
Application.ScreenUpdating = True
End Sub 'この行まで
※ 操作方法は前回同様です。
こんな感じではどうでしょうか?m(_ _)m
新しい方法をお教えくださりありがとうございます!
ただ、こちらのエクセル知識が乏しいので、A1セルじゃない時にどこをいじればいいのかがわからなくなってしまいました。。。
せっかく教えていただいたのに使いこなせなくて申し訳ありません。
No.5
- 回答日時:
こんにちは!
VBAでの一例です。
B列を作業用の列で使用していますので、B列にデータはない!という前提です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim k As Long
Dim str As String
Dim myArray As Variant
myArray = Split(Cells(1, 1), vbLf)
Application.ScreenUpdating = False
For k = 0 To UBound(myArray)
Cells(k + 1, 2) = myArray(k)
Next k
For k = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(Range(Cells(1, 2), Cells(k, 2)), Cells(k, 2)) > 1 Then
Cells(k, 2).Delete (xlUp)
End If
Next k
For k = 1 To Cells(Rows.Count, 2).End(xlUp).Row
str = str & Cells(k, 2) & vbCrLf
Next k
Cells(1, 1) = Left(str, Len(str) - 1)
Columns(2).ClearContents
Application.ScreenUpdating = True
End Sub 'この行まで
※ 一旦マクロを実行すると元に戻せませんので、
別Sheetでマクロを試してみてください。m(_ _)m
ご回答ありがとうございます。
実は同じようなセルが300行以上あるんです。。。
こういう場合はマクロの方がいいかもしれませんね。
No.4
- 回答日時:
step1)
A1セルを選ぶ
データメニュー(データタブ)から「区切り位置」を開始する
「カンマやタブで区切られた…」で次へ行き
区切り文字として「その他」にチェックを入れ,その右隣のボックスの中でCtrl+j(コントロールキーを押しながらJのキーを押す)を記入し
完了するとA1からG1に展開される。
step2)
A2に
=IF(MATCH(A1,1:1,0)=COLUMN(A1),A1&CHAR(10),"")&B2
と記入し,G2までコピー貼り付ける
step3)
A2をコピーし,形式を選んで貼り付けで値のみ貼り付けて値化する。
No.3
- 回答日時:
[No.2]の誤謬訂正
> 4.セル C3、B4 に式 =B3、=C3&CHAR(10)&B4 をそれぞれ入力。
> 5.セル B3 を下方にズズーッとドラッグ&ペースト。
を次のように訂正します。失礼しましたm(__)m
4.セル C3、C4 に式 =B3、=C3&CHAR(10)&B4 をそれぞれ入力。
5.セル C4 を下方にズズーッとドラッグ&ペースト。
No.2
- 回答日時:
「セル内の重複する文字列を削除」でなく、(添付図の範囲 A3:A9 から範囲 B3:B7 を得るような)「列内の重複する文字列を削除」ならお出来になるとしてハナシを進めます。
(Excel 2002 で試しました)1.[データ]→[区切り位置]の機能で、セル A1 の内容を分解して範囲 A2:G2 を得る。
2.[形式を選択して貼り付け]の“行列を入れ替える”機能で、範囲 A3:A9 を得る。
3.列内の重複する文字列を削除」して、範囲 B3:B7 を得る。
4.セル C3、B4 に式 =B3、=C3&CHAR(10)&B4 をそれぞれ入力。
5.セル B3 を下方にズズーッとドラッグ&ペースト。
6.セル C7 を[コピー]して、それをセル B1 に[値の貼り付け]。
ちなみに、範囲 A1:B1 は“折り返して全体を表示する”に書式設定しています。

No.1
- 回答日時:
Excel 2003では
▼操作方法:重複データを削除する
(A1セルにフィールド見出し、A2:A10セルに9個のデータが入力されているときに、重複データを削除した新たなリストをC列に作成する例)
メニュー[データ]-[フィルタ]-[フィルタオプションの設定]をクリック
↓
[フィルタオプションの設定]ダイアログで
[抽出先]欄で[指定した範囲]オプションボタンをOnに
[リスト範囲]欄で「A1:A10」セルを
[抽出範囲]欄で「C1」セルを
[重複するレコードは無視する]チェックボックスをOnに
設定
↓
[フィルタオプションの設定]ダイアログ-[OK]ボタンをクリック
厳密な言い方をすれば重複データを削除するのではなく、元のデータを残したまま重複データを除いた新たなリストを作成する方法です。
Excel 2007では重複データを削除するための、専用のコマンドが新たに作られています。
▼操作手順:重複データを削除する
データベース内の任意の一つのセルを選択
↓
[データ]タブ
-[データツール]グループ
-[重複の削除]ボタンをクリック
↓
[重複の削除]ダイアログで、
削除したいデータの含まれるフィールドのチェックボックスのみOnに
↓
[重複の削除]ダイアログ-[OK]ボタンをクリック
上記の操作を行い、
データの削除が行われると、
「重複する××個の値が見つかり、削除されました。一意の値が○○個残っています。」
というメッセージが表示され、
重複データがなく削除されなかった場合、
「重複する値は見つかりませんでした。」
というメッセージが表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
同一セル内の重複文字を削除したいです
Excel(エクセル)
-
同じセルで重複している文字を削除したい
Excel(エクセル)
-
エクセルのセル内の重複文字列処理について
その他(Microsoft Office)
-
-
4
同一セル内での重複削除
その他(Microsoft Office)
-
5
Excel 文字列を結合するときに重複をなくしたい 関数・VBA
Excel(エクセル)
-
6
エクセルVBAで文字列の重複を削除する方法?
Excel(エクセル)
-
7
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
更新前と更新後の差分をVBAを使...
-
【エクセル】区切り位置で分割...
-
Excel関数:「0」を除いた標準...
-
SUMIFで数値が入力されているセ...
-
ピボットテーブル 0個の行を...
-
Excel関数で、範囲内の最後のセ...
-
エクセル、正数のみの集計[(負...
-
値の入っているセルのうち、一...
-
エクセルで何種類のデータがあ...
-
エクセル 8ケタの数字から日数...
-
複数の候補列から、検索値と一...
-
Excelのマクロでソートがうまく...
-
《エクセル2000》重複している...
-
エクセル マクロ 連続する空...
-
スプレッドシートでドロップダ...
-
【Excel】歯抜けデータの集約
-
エクセルVBAを使ってセルに日付...
-
エクセル日付 文字列の関数がエ...
-
SUMIFとCOUNTIFの違いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
【エクセル】区切り位置で分割...
-
SUMIFで数値が入力されているセ...
-
更新前と更新後の差分をVBAを使...
-
ピボットテーブル 0個の行を...
-
値の入っているセルのうち、一...
-
エクセル、正数のみの集計[(負...
-
エクセルで何種類のデータがあ...
-
Excel関数で、範囲内の最後のセ...
-
SUMPRODUCT関数 行が増えても...
-
エクセルに入力された日付「S40...
-
Excelのマクロで行を間引きたい
-
エクセル 8ケタの数字から日数...
-
エクセル日付 文字列の関数がエ...
-
correl関数の範囲指定
-
Excelで順番を逆に
-
複数の候補列から、検索値と一...
-
Excelで複数列かつ複数行分の一...
-
【Excel】歯抜けデータの集約
おすすめ情報