グループ順に並べ替えられた単純一覧表は、帳票イメージで考えると同じグループ名が縦に並んでしまいます。
(画像をクリックすると、このサンプルがダウンロードできます)
一覧表の内容はデータとして活用(抽出や並べ替えなど)しますから変更できませんが、表示・印刷等のために同じグループは先頭行を残して表示しないようにしたいものです。
このページでは数式セットの都合上、R1C1参照形式としていますが、A1参照形式でできないわけではありません。
マクロで「白文字」にするのも良いのですが、汎用性を考えて「条件付き書式」にしてみましょう。
式としては、R1C1参照形式にして、前行の値と同じなら白文字にするので「=RC=R[-1]C」とします。
R1C1参照形式の方が「現在セル」「1行手前のセル」というものが数式上で変異がないという利点があります。
続いて「書式」ボタンをクリックします。
フォントの「色」を白に設定します。
これでOKをクリックすると、
このように、同じグループは先頭1行だけ表示して、後は白文字になるため表示されなくなります。
ですが、これでは印刷時に途中のページではグループが表示されなくなり、どのグループなのか解りにくい状態になります。COBOL言語の報告書機能の「GROUPINDICATE」などでは、印刷時の各ページ先頭行にはそのグループ名は表示させるように機能しますから、それに合わせて考えてみましょう。
このためには、改ページ行の印刷領域外の列に改ページを示す文字をセットしておき、先の条件付き書式の判断に加える方法を採ってみます。
'***************************************************************************************************
' 同グループ先頭行以降は表示させないサンプル ThisWorkbook(Class)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/06/14(1.00)新規作成
'04/04/18(1.01)初回修正
'20/02/22(1.10)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsColumn As Long = 8 ' 改頁情報のカラム
Private Const g_cnsPBreak As String = "P" ' 改頁情報(設定文字)
'***************************************************************************************************
' ■■■ ワークブックイベント ■■■
'***************************************************************************************************
'* 処理名 :Workbook_BeforePrint
'* 機能 :印刷直前のイベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月14日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Dim xlApp As Application ' Excel.Application
Dim objSh As Worksheet ' 現在シート
Dim lngCnt As Long ' ページカウンタ
Dim lngRow As Long ' 行INDEX
Set xlApp = Application
xlApp.ScreenUpdating = False
xlApp.Calculation = xlCalculationManual
Set objSh = ActiveSheet
' 改頁列を一旦消去
objSh.Columns(g_cnsColumn).ClearContents
' 改ページプレビューに移行
ActiveWindow.View = xlPageBreakPreview
' 改ページ行の改頁情報列にセット
For lngCnt = 1 To objSh.HPageBreaks.Count
lngRow = objSh.HPageBreaks(lngCnt).Location.Row
Cells(lngRow, g_cnsColumn).Value = g_cnsPBreak
Next lngCnt
' 標準ビューに戻す
Cells(1, g_cnsColumn).Value = g_cnsPBreak
ActiveWindow.View = xlNormalView
xlApp.Calculation = xlCalculationAutomatic
xlApp.ScreenUpdating = True
End Sub
'----------------------------------------<< End of Source >>----------------------------------------