[[20230124112531]] 『セル内の重複単語を削除する方法』(ワン2) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の重複単語を削除する方法』(ワン2)

宜しくお願い致します。

B列の各セル内に
例)https://item-shopping.c.yimg.jp/i/l/dd_240900036291_8_d_20230124103222;https://item-shopping.c.yimg.jp/i/l/dd_240900036291_8_d_20230124103222;;;;


https://item-shopping.c.yimg.jp/i/l/dd_240900036291_8_d_20230124103222;;;;

と重複部分を削除する方法が分からずご教授願いたいです。

「;」区切りですのでそちらを踏まえ宜しくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


確認します。
1.重複判定はURLの完全一致で行うということですか?
2.対象はURLに限定されるということでいいですか?
3.想定されるURLの数はどのくらいあるんですか?
4.;;;;も考えようによっては、空文字が重複していると見なせないこともない。ここは?

(abc) 2023/01/24(火) 12:04:09


もしワークシート関数限定(つまりVBAとかは無しで)ということなら初めにそのように書いてもらうとよいでしょう。
(abc) 2023/01/24(火) 12:26:08

1.重複判定はURLの完全一致で行うということですか?

返答:はい

2.対象はURLに限定されるということでいいですか?

返答:はい

3.想定されるURLの数はどのくらいあるんですか?

返答:20個までです

4.;;;;も考えようによっては、空文字が重複していると見なせないこともない。ここは?

返答:20個までのうち10個までURLがあるものは残りの10個分 ;;;;;;;;;; という仕様です。

もしワークシート関数限定(つまりVBAとかは無しで)ということなら初めにそのように書いてもらうとよいでしょう

返答:関数で可能であれば関数でお願い致します。
(ワン2) 2023/01/24(火) 12:58:18


>関数で可能であれば関数でお願い致します。
そうですか。残念です。
コード書いたけどお蔵入りですな。
(abc) 2023/01/24(火) 13:13:56

コードでも大丈夫です!
ぜひご教示頂きたいです(o_ _)o))
(ワン2) 2023/01/24(火) 13:36:52

 遅くなりました。

 検証目的もあるので、結果をC列に書き込むようにしています。
 問題なければ、B列に上書きするように変更してください。

 Sub test()
    Dim s$      '元の文字列
    Dim ary, a
    Dim ans$    '結果文字列
    Dim dic As Object
    Dim k As Long

    Set dic = CreateObject("Scripting.Dictionary")

    For k = 2 To Cells(Rows.Count, "B").End(xlUp).Row
        dic.RemoveAll
        ans = ""
        s = Cells(k, "B")
        ary = Split(s, ";")
        For Each a In ary
            If a = "" Then
                ans = ans & ";" & a
            ElseIf Not dic.exists(a) Then
                dic(a) = Empty
                ans = ans & ";" & a
            ElseIf dic.exists(a) Then
                ans = ans & ";" & ""
            End If
        Next
        Cells(k, "C") = Mid(ans, 2)     'C列に書き込む
    Next
 End Sub

(abc) 2023/01/24(火) 20:19:55


abc様

上記のマクロで無事修正できました!
もし可能であれば、重複を消したものだけ色をつけたり
見た目でわかるようにすることは可能でしょうか?

そもそもどれが重複しているのか全て把握できておりませんでして。。
(ワン2) 2023/01/25(水) 14:18:01


 たぶんできるでしょうけど、私はちょっと見合わせます。

 いくつの部品にわけて、それらを組み合わせたらいかがですか?

 1.「区切り位置」を使って、";"で区切る
 2. 行と列を転置させる(そういうコピーペイストのメニューがありますよね)
 3. COUNTIF関数を使って、条件付き書式で重複データに塗りつぶし色をつける。
 4. 「重複の削除」を使って、ユニークデータに修正する
 5. VBAのJoin関数を使って、";"を間に挟んで文字列を連結する(Application.Transposeも併用)

 こんな感じでトライしたらいかがですか?

 ・最大20個のURLを連結してとか、
 ・余分な;も併せて全体で20個のURLにするとかいった状況
 を考えると、個人ユースというより、企業ユースの印象があります。
 もし業務の効率化の一環なら、外部発注も考慮したうえで、全体を見直すことを推奨します。

 個人の趣味の一環ですということであれば、
 少なくとも、ご自分でトライしてここまでできて、ここで詰まっている
 という質問をされたほうが、「Excelの学校」にふさわしいように思います。

 他の回答者さんの回答をお待ちください。
(abc) 2023/01/25(水) 20:15:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.