根据单元格的数字格式设置条件格式?
Posted
技术标签:
【中文标题】根据单元格的数字格式设置条件格式?【英文标题】:Set conditional formats based on the number formats of the cell? 【发布时间】:2019-09-16 03:57:25 【问题描述】:我们知道,对于每个单元格,我们可以键入 Ctrl-1 并调整其数字格式。我们可以设置自定义数字格式,如 yyyy/m/d
是否可以设置条件格式,如果数字格式不是yyyy/m/d,我们可以更改单元格颜色?
一些不良格式包括:
-
文字
月/日/年
dd mmm yyyy
和其他日期格式
我们需要它来突出显示错误数字格式的单元格以修复它。发生此错误是因为用户在文件中手动输入数据,并且他们无意中通过复制和粘贴弄乱了数字格式。
【问题讨论】:
您可能希望在本练习中使用data validation 而不是conditional formatting
。另外请提供一些示例数据,显示您遇到的一对invalid date
。
谢谢!一些无效日期是 2019 年 12 月 16 日,而不是 2019 年 12 月 16 日。这些值已经输入,我想突出显示错误的数字格式。此外,数据验证不能防止复制粘贴。
@TerryW 即使单元格具有数据验证功能,人们也可以将任何内容复制并粘贴到单元格中。他们会的。
Conditional Formatting
也不能阻止复制和粘贴,所以也许最好的方法是vba
...
【参考方案1】:
向他们输入的单元格添加数据验证将很简单。 选择要应用验证的单元格,转到“数据”>“数据验证”>“数据验证...”,然后在“设置”中,选择一个范围内的日期,这样,当用户想要引入错误的数据(而不是日期)时,它不允许它们,因此您无需突出显示它。
无论如何,如果你想突出显示它应该通过 VBA。
VBA方式
Private Sub Worksheet_Activate()
For i = 1 To 100
If Worksheets(1).Cells(i, 12).NumberFormat <> "yyyy/m/d" Then
Worksheets(1).Cells(i, 12).Interior.Color = RGB(200, 160, 27)
End If
Next
End Sub
只需将此代码粘贴到您的工作表代码上作为私有或不作为普通宏私有。用您正在使用的工作表替换Worksheets(1)
,用您需要搜索的范围和您喜欢的颜色替换Cells(i,12)
和100
。
希望对你有帮助
【讨论】:
是的,VBA 会很棒! 检查你使用的是yyyy/m/d
还是yyyy/mm/dd
【参考方案2】:
鉴于您的最终目标是修复无效日期,我将使用辅助列将有效日期转换为所需格式,然后突出显示需要手动修复的日期。
如我的示例所示,单元格B2
中的以下公式会将有效日期转换为正确的格式,并为无效的日期返回#VALUE!
:
=TEXT(--TRIM(A2),"yyyy/m/d")
那么你可以使用下面的公式作为条件格式中的格式规则来突出需要手动更正的那些:
=ISERR(B2)
确定所有日期后,您可以将正确的日期从Column B
复制并粘贴到Column A
。
如果没有辅助列,在复制和粘贴的情况下,基于 A 列中原始数据的条件格式可能会被覆盖。
【讨论】:
以上是关于根据单元格的数字格式设置条件格式?的主要内容,如果未能解决你的问题,请参考以下文章