是否可以根据值或通过“条件格式”动态应用“合并和居中”?
我可以添加颜色,但我想用 Excel 做更高级的事情,做动态“合并和居中”,如下图所示
所有价值观都是动态的!
答案1
不使用合并单元格(这无论如何都很糟糕),但对于您的情况,您可以做得更好。这需要一点设置,但可以达到您想要的效果。
有一列 ( A
) 表示月份,但只是在其中重复日期 ( A2
: =C2
)。这里不计算月份,我们希望保留日期,以便您可以简单地格式化以仅显示月份。
对于列B
周,用于WEEKNUM(C2,21)
计算 ISO 周(星期一 = 第 1 天,星期日 = 第 7 天,第 1 周包含一年中的第一个星期四)将这些公式向下复制A
并B
复制到所需的位置。
将这两列格式化为使用自定义数字格式,;;;
这意味着所有这些值都会完全消失,我们将使用条件格式有选择地将它们恢复。
对于列,A
您需要查看月份名称,如果:
- 这是第一行,在每月 15 号之后
- 这是最后一行,在本月 15 日之前
否则(通常)显示与 15 日相对的月份名称,因为大约是月中。因此,您需要对单元格
A2:A999
(或列的长度)应用条件,如下所示:=OR(AND($C1=$C$1,DAY($C2)>15),AND($C3="",DAY($C2)<15),DAY($C2)=15)
请注意,第一个条件检查当前行日期是否 =“日期列的标签是什么”,而不是硬编码为“=”日期“或类似的东西。
将这些格式设置为使用自定义数字格式"MMM"
(三个字母的月份),或任何您喜欢的格式。
对于周数,它们应该以类似的方式显示在列表顶部或底部的日期上,或者通常在星期四显示(如果 Mon=1,则从视觉上看这是周中,但如果您希望它们与星期三相对应,而不是作为“周中”日期,请在下面的公式中使用 3 而不是 4)。通过公式应用条件格式:
=OR(AND($C1=$C$1,WEEKDAY($C2,2)>4),AND($C3="",WEEKDAY($C2,2)<4),WEEKDAY($C2,2)=4)
并使用合适的数字格式(0
或00
可能是最好的)
要交替使用背景颜色,请使用相同的方法 - 为所有单元格着色,然后有条件地重新为某些单元格着色。因此,使用浅色背景填充为所有单元格着色,然后使用条件格式根据这些列的值是否为“偶数”将它们着色为深色(反之亦然),即周数公式如下:
=MOD(B2,2)=0
或者在月份的情况下包括 MONTH 计算,即条件使用
=MOD(MONTH(A2),2)=0
分别对月份和星期进行此操作。现在看起来应该类似于下图。
希望这可以帮助!
答案2
对直接问题的简短回答是......“不”
条件格式可以将格式应用于单个或已合并的单元格,但不能导致单元格合并。
在原始数据上实现你所要求的唯一方法是通过 vba 宏,要么基于工作表或工作簿事件(复杂,可能不值得麻烦)或用户触发
答案3
您无法使用条件格式进行合并和居中。数据透视表将实现此效果。您可以使用计算字段在动态数据上生成年份和周字段。
答案4
ISO 周数不能直接在 Excel 中计算(它与“一周从星期一开始”不同)。
使用以下公式:
=INT((B4-DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3)+WEEKDAY(DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3))+5)/7)
来源:Excel 中的周数