[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の重複単語を削除する方法』(ワン2)
宜しくお願い致します。
を
https://item-shopping.c.yimg.jp/i/l/dd_240900036291_8_d_20230124103222;;;;
と重複部分を削除する方法が分からずご教授願いたいです。
「;」区切りですのでそちらを踏まえ宜しくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(abc) 2023/01/24(火) 12:04:09
返答:はい
2.対象はURLに限定されるということでいいですか?
返答:はい
3.想定されるURLの数はどのくらいあるんですか?
返答:20個までです
4.;;;;も考えようによっては、空文字が重複していると見なせないこともない。ここは?
返答:20個までのうち10個までURLがあるものは残りの10個分 ;;;;;;;;;; という仕様です。
もしワークシート関数限定(つまりVBAとかは無しで)ということなら初めにそのように書いてもらうとよいでしょう
返答:関数で可能であれば関数でお願い致します。
(ワン2) 2023/01/24(火) 12:58:18
遅くなりました。
検証目的もあるので、結果を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
上記のマクロで無事修正できました!
もし可能であれば、重複を消したものだけ色をつけたり
見た目でわかるようにすることは可能でしょうか?
そもそもどれが重複しているのか全て把握できておりませんでして。。
(ワン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.