VBA 宏用于对具有动态行数的单元格区域进行排序和应用条件格式

VBA 宏用于对具有动态行数的单元格区域进行排序和应用条件格式

我有一个范围(下图)。

Excel 屏幕截图

请注意:

  • 范围由另一个应用程序生成,因此行数不断变化,并且未格式化为 Excel“表格”
  • 但是,列数是固定的。
  • 总是有Totals一行,它总是最后一行(然而,此行以外的单元格包含计算结果为“”的公式)

D我需要 VBA 宏的帮助,该宏将使用标题作为键(升序)对范围进行排序:

[请参阅下方排序表的链接]

请注意:

  • Totals行(始终是最后一行)应该被忽略并且不进行排序。

经过这种排序后,我希望相同的 VBA 宏使用与键相同的标题将条件格式应用于范围- 格式在相同的D范围周围应用边框:D

最终表格如下:http://goo.gl/H118Lx

请注意:

  • 我不希望标题中的唯一值周围有边框,D即单元格值数不大于 1 的行。

答案1

你根本不需要 VBA。你只需要更好地理解条件格式背后的灵活性。因此,我将回答这个问题,尽管它很糟糕。

您可以按D原样按列排序,如果总计行是唯一一个空白行,则该行将位于底部。将条件格式应用于整个列,如下所示。

格式: 左边框 范围
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))


此方法将把此表变成:

前

... 进入此表:

后

相关内容