[[20171220100300]] 『重複する複数の値に各色々な色を別な同じ行につけ』(かりん58) ページの最後に飛ぶ

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

 

『重複する複数の値に各色々な色を別な同じ行につけたい』(かりん58)

全文検索してみましたが見つからず、質問させてください。
C列の3行目から22行目まで複数の値が入り、各重複があります。
1つのものが5つあったり、複数で重複しているものが3つあったり、など色々です。
そこで一致したものに対してR列の同じ行に各色をつけたいです。(以下例は字で表しますが、セルに色を塗りたいです)

C列 R列
犬  赤
猫  青
猿  黄
羊  橙
羊  橙
羊  橙
馬  緑
犬  赤
鳥  紫
馬  緑
牛  藍
・  ・
・  ・

色は重複しなければ何色でもいいです。薄目とか濃い目とか。
最大の色数は20色です。
よろしくお願いします<(_ _)>

< 使用 Excel:Excel2013、使用 OS:Windows7 >


データを並び替えては駄目でしょうか? 同じ文字列が並んでいたほうが処理しやすいと思います。

そして、同じかどうか判定するのは、C列だけで良いのでしょうか? サンプルだと、C列同じでR列違う、というものが無いようですが、犬と言ったら赤しかないのでしょうか?
(???) 2017/12/20(水) 10:22


すいません。確認したところ、同じ文字は並んでました。
なので例としては以下です。

C列 R列
犬  赤
猫  青
猿  黄
羊  橙
羊  橙
羊  橙
馬  緑
馬  緑
鳥  紫
鳥  紫
鳥  紫
牛  藍
・  ・
・  ・

重複確認はC列だけで大丈夫です。
犬のときは絶対赤、とかは全然ないです。あくまでも重複確認の色付けになるので、犬に対して何色でもいいです。
というか犬はユニークな値で今後重複する事はないです。
できますでしょうか。よろしくお願いします。
(かりん58) 2017/12/20(水) 10:34


 一般機能で手間がかかる方法。
 C3セルからC22セルを選択して条件付き書式の数式を使用して書式設定するセルを決定で式に
 =MATCH(C3,C$3:C$22,0)=1
 =MATCH(C3,C$3:C$22,0)=2
 〜
 =MATCH(C3,C$3:C$22,0)=20
 としてパターンをそれぞれ選択。
(ねむねむ) 2017/12/20(水) 10:39

 すまない。
 選択するのはR3セルからR22セルだった。
 (式のほうはそのまま)
(ねむねむ) 2017/12/20(水) 10:56

では私は、マクロで塗る例なぞ。色は手抜きしていますが、任意の色をArrayにしても良いでしょう。

 Sub test()
    Dim DIC As Object
    Dim cw As String
    Dim i As Long
    Dim iCol As Long

    iCol = 34

    Columns("R:R").Interior.ColorIndex = xlNone

    Set DIC = CreateObject("Scripting.Dictionary")
    For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
        cw = Cells(i, "C").Value
        If DIC.exists(cw) = False Then
            DIC.Add cw, "R" & i
        Else
            DIC(cw) = DIC(cw) & ",R" & i
        End If
    Next i

    For i = 0 To DIC.Count - 1
        cw = DIC.items()(i)
        If 0 < InStr(cw, ",") Then
            iCol = iCol + 1
            Range(cw).Interior.ColorIndex = iCol
        End If
    Next i
 End Sub
(???) 2017/12/20(水) 11:04

ねむねむさん、???さん、両方ともきれいにできました!
いつもありがとうございます。
(かりん58) 2017/12/20(水) 15:21

コメント返信:

[ 一覧(最新更新順) ]


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