Excelで、前の行と同じ値を繰り返し表示したくない、というのは、よくある要望です。
条件付き書式 お手軽版
値消したりするのはめんどいので、条件付き書式で文字を白(背景色と同じ色)にして対応してます。
「ホーム」リボンの条件付き書式
> 新しいルール
> 数式を使用して書式設定するセルを決定
と進んで、数式のとこに上のセル(上のスクショだとA1)との比較を入力。
(相対参照で書いておけば、これで全行対応できる)
一致したらtrueが返るので、書式が適用されて、文字が白くなる。
簡単で良いのですが、オートフィルタで絞り込みをすると、残念な結果になります。
あくまで「相対参照された、一つ上のセル」と比較してるだけなのです。
そのセルがフィルタで非表示になっていても、知ったことではないのです。
正しい動作ですが、これじゃない、ということもあります。
オートフィルタ対応版
Subtotalだとか、Vlookupだとか、MatchとかIndirectとか、セル関数をこね回して、作業用の列つくって、ぐしゃぐしゃしててみたものの。
結局、面倒になって関数書きました。
上の(表示されてる)セルと比較して、trueかfalseを返します。
' 渡されたセルと、その上のセル(表示されているもの)を比較する
Function compareToVisibleUpperCell(rng As Range) As Boolean
Dim tmpRow As Long
' デフォルトfalse返す
compareToVisibleUpperCell = False
' 渡されたセルが1行目なら比較せず終了
If rng.Row = 1 Then Exit Function
' 1行上から、上向きにチェック
For tmpRow = rng.Row - 1 To 1 Step -1
' 表示されていれば
If Rows(tmpRow).Hidden = False Then
' 内容が同じならtrueにする
If Cells(tmpRow, rng.Column) = rng Then _
compareToVisibleUpperCell = True
' これ以上チェック不要
Exit Function
End If
Next
End Function
で、条件付き書式の条件をこの関数にして
オートフィルタかけてみる。
パフォーマンスとかは未検証ですが、とりあえず調子よく動いてます。
ネイティブのシート関数でこうやればうまくいくぜ!というのがあれば、ぜひ教えてほしいです。