[[20211216145859]] 『条件毎の最終行の位置を取得して色づけするVBA』(ちなこ) ページの最後に飛ぶ

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

 

『条件毎の最終行の位置を取得して色づけするVBA』(ちなこ)

検索の仕方がうまくないのか
最終行の取得しか分かりません。

北海道
北海道
北海道
名古屋
名古屋
埼玉
埼玉
埼玉
東京
千葉

のようなデータで

北海道
北海道
北海道 ※
名古屋
名古屋 ※
埼玉
埼玉
埼玉 ※
東京 ※
千葉 ※

(※がついた行を黄色くする)
といった処理を行いたいです。

< 使用 Excel:unknown、使用 OS:unknown >


実際のデータ数は、どの程度でしょうか

(マナ) 2021/12/16(木) 15:14


200行、15列程度です!
文字数も10文字超えないです。
(ちなこ) 2021/12/16(木) 15:20

>200行、15列程度です!

検索するのは、どの列ですか。

(マナ) 2021/12/16(木) 15:24


A列です
A列の中でのそれぞれの都道府県の最終行で
といった感じですね
(ちなこ) 2021/12/16(木) 15:25

一例です
 Option Explicit

 Sub test()
    Dim dic As Object
    Dim r As Range, it

    Set dic = CreateObject("scripting.dictionary")

    For Each r In Cells(1).CurrentRegion.Rows
        Set dic(r.Cells(1).Value) = r
    Next

    For Each it In dic.items
        it.Interior.Color = vbYellow
    Next

 End Sub

(マナ) 2021/12/16(木) 15:32


ありがとうございます。
うまくいきました。

ちなみにお手すきであればですが、どのような処理が行われてるのかの
解説というかコメントを頂く事はお願い出来ますでしょうか。
連想配列のようですが、私が全くの初心者で、
何が起きているかさっぱりです。

勉強不足で申し訳ありませんが、ご教授の程よろしくお願いいたします。
(ちなこ) 2021/12/16(木) 15:55


こっちのほうがよかった。
 Sub test2()
    Dim dic As Object
    Dim k As Long, s As String

    Set dic = CreateObject("scripting.dictionary")

    With Cells(1).CurrentRegion
        For k = .Rows.Count To 1 Step -1
            s = .Cells(k, 1).Value
            If Not dic.exists(s) Then
                .Rows(k).Interior.Color = vbYellow
                dic(s) = True
            End If
        Next
    End With

 End Sub

(マナ) 2021/12/16(木) 16:02


こんな感じ

1)データ範囲のA列を下から順番に調べて
2)県名が,初めて出現したら(dictionaryに未登録なら)
3)その行を着色し
4)Dictionaryに登録する

(マナ) 2021/12/16(木) 16:14


お使いのバージョンが不明なのでうまくいくかはわかりませんが、条件付き書式を使っても行けそうな気がします。
    Sub 別案()
         With Range("A1:O200").FormatConditions
            With .Add(Type:=xlExpression, Formula1:="=AND($A1<>"""",COUNTIF($A$1:$A$200,$A1)=COUNTIF($A$1:$A1,$A1))")
                .Interior.Color = vbYellow
            End With
        End With
    End Sub

↑が理解できれば↓でも意味は同じ。

    Sub 別案改()
        Range("A1:O200").FormatConditions.Add(Type:=xlExpression, Formula1:="=AND($A1<>"""",COUNTIF($A$1:$A$200,$A1)=COUNTIF($A$1:$A1,$A1))").Interior.Color = vbYellow
    End Sub

(もこな2) 2021/12/16(木) 17:05


コメント返信:

[ 一覧(最新更新順) ]


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