エクセルでセル内の重複する文字列を削除する方法を教えてください。
例えば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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
同一セル内の重複文字を削除したいです
Excel(エクセル)
-
同じセルで重複している文字を削除したい
Excel(エクセル)
-
エクセルのセル内の重複文字列処理について
その他(Microsoft Office)
-
-
4
同一セル内での重複削除
その他(Microsoft Office)
-
5
エクセルVBAで文字列の重複を削除する方法?
Excel(エクセル)
-
6
Excel 文字列を結合するときに重複をなくしたい 関数・VBA
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
【エクセル】区切り位置で分割...
-
ピボットテーブル 0個の行を...
-
更新前と更新後の差分をVBAを使...
-
Excel関数:「0」を除いた標準...
-
correl関数の範囲指定
-
Excel関数で、範囲内の最後のセ...
-
VBAでAverageifs
-
値の入っているセルのうち、一...
-
Excelのマクロでソートがうまく...
-
SUMIFで数値が入力されているセ...
-
エクセルに入力された日付「S40...
-
エクセル 8ケタの数字から日数...
-
スプレッドシートでドロップダ...
-
テキスト保存の際にダブルクオ...
-
エクセルで電話番号を - で分...
-
エクセル 担当者ごとにブラン...
-
EXCEL 階段状のグラフ
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
値の入っているセルのうち、一...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
SUMIFで数値が入力されているセ...
-
ピボットテーブル 0個の行を...
-
エクセルに入力された日付「S40...
-
SUMPRODUCT関数 行が増えても...
-
correl関数の範囲指定
-
エクセル 8ケタの数字から日数...
-
【Excel】歯抜けデータの集約
-
エクセル、正数のみの集計[(負...
-
Excelのマクロでソートがうまく...
-
Excelで複数列かつ複数行分の一...
-
エクセルで何種類のデータがあ...
-
エクセルで別のシートに数行お...
-
Excelのマクロで行を間引きたい
-
エクセル2000で〇×の並び替えを...
おすすめ情報