動的な行数を持つセル範囲を並べ替え、条件付き書式を適用する VBA マクロ

動的な行数を持つセル範囲を並べ替え、条件付き書式を適用する VBA マクロ

レンジがあります(下の画像)。

Excelのスクリーンショット

その点に注意してください:

  • 範囲は別のアプリケーションによって生成されるため、行数は常に変化し、Excel の「テーブル」としてフォーマットされていません。
  • ただし、列の数は固定されています。
  • Totals常に最後の行となる行が存在します(ただし、これ以降のセルには '' と評価される数式が含まれます)

ヘッダーをキーとして使用して範囲を並べ替える VBA マクロに関するヘルプが必要ですD(昇順):

[下記のソートされた表へのリンクを参照]

その点に注意してください:

  • Totals(常に最後の行) は無視され、並べ替えられません。

この並べ替えの後、同じ VBA マクロを使用して、キーと同じヘッダーを使用して範囲に条件付き書式を適用します。書式設定により、同じD範囲の周囲に境界線が適用されます。D

最終テーブルはこちら:http://goo.gl/H118Lx

その点に注意してください:

  • Dヘッダー内の一意の値、つまりセル値の数が 1 より大きくない行の周囲に境界線を表示したくありません。

答え1

VBA はまったく必要ありません。条件付き書式の柔軟性をより深く理解するだけで十分です。そのため、質の低い質問ではありますが、この質問に答えることにします。

そのまま列で並べ替えることができD、空白の行が 1 つだけある場合は合計行が下部に表示されます。次に示すように、条件付き書式を列全体に適用します。

書式: 左に罫線 範囲
:A:A
数式:=AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

書式: 右側の境界線 範囲
:E:E
数式:=AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

書式: 上部に罫線 範囲
:A:E
数式:=AND($D1<>"",$D1<>OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0))

書式: 下部に境界線 範囲
:A:E
数式:=AND($D1<>"",$D1=OFFSET($D1,-1,0),$D1<>OFFSET($D1,1,0))


このメソッドにより、このシートは次のようになります。

前に

...このシートに:

後

関連情報