过滤后设置合并单元格的背景色

需求描述

在处理Excel数据的时候,有时候,我们会对Excel的数据进行单元格合并,然后再过滤设置单元格的背景色,一般情况下都不会有问题,但是当过滤后对合并单元格设置背景色时,如果当前行刚好不是合并单元格之前所显示的内容,就会导致在过滤的情况下,无法对当前的单元格设置背景色

需求分析

问题是由于,设置合并单元格的背景色,需要对合并前单元格的背景色进行设置,而如果我们过滤了,就有可能存在过滤了刚好为空的单元格

需求实现

通过VBA实现自定义填充单元格背景色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub ColorMergeCells()
Dim current As Range
Dim mergedCell As Range
For Each current In Range("B1:B10").SpecialCells(xlCellTypeVisible)
If current.Offset(0, -1).MergeCells Then
For Each mergedCell In current.Offset(0, -1).MergeArea
If mergedCell.Text <> "" Then
mergedCell.Interior.Color = current.Interior.Color
End If
Next
End If

Next
End Sub