在excel工作表中,若有人试图操纵我的标准数据,则需要更改特定单元格的颜色

在excel工作表中,若有人试图操纵我的标准数据,则需要更改特定单元格的颜色,excel,excel-formula,data-manipulation,Excel,Excel Formula,Data Manipulation,我的Excel中有3列“优先级”、“可用性”和“周转时间” 如果我在“优先级”列下输入“高”,它会根据预定义的标准和公式自动填充其余列(“可用性”为24X7,“周转时间”为4小时)。但如果有人操纵数据,例如将“可用性”从4小时更改为6小时或其他不同于标准的值,我想将单元格颜色更改为红色。提前感谢您提供的解决方案。使用要评估的工作表中的“私有子工作表更改(ByVal目标为范围)”事件。 示例:如果有人修改单元格J2的值,请将文本颜色更改为红色 Private Sub Worksheet_Chang

我的Excel中有3列“优先级”、“可用性”和“周转时间”

如果我在“优先级”列下输入“高”,它会根据预定义的标准和公式自动填充其余列(“可用性”为24X7,“周转时间”为4小时)。但如果有人操纵数据,例如将“可用性”从4小时更改为6小时或其他不同于标准的值,我想将单元格颜色更改为红色。提前感谢您提供的解决方案。

使用要评估的工作表中的“私有子工作表更改(ByVal目标为范围)”事件。 示例:如果有人修改单元格J2的值,请将文本颜色更改为红色

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$J$2" Then
            Range("J2").Font.Color = RGB(255, 0, 0)
        End If
End Sub
使用条件格式:

Assuming the cell where you want to apply conditional formatting is: B2.

1.Select the cell or cells where you want to apply conditional formatting.
2.Then, click Home > Conditional Formatting > New Rule. 
3.In the New Formatting Rule dialog box, click Use a formula to determine which cells to format.
4.Under Format values where this formula is true, type the formula: =AND($B$2<>"24x7",$B$2 <>"20x7")
The formula uses the AND function to see if the cell B2 is different from the common values: "24x7", "20x7",... [You can keep adding more values separated by commas in the AND function]
 If so, the cells are formatted. 
5.Click Format.
6.In the Color box, select Red. In the Font Style box, select Bold.
假设要应用条件格式的单元格为:B2。
1.选择要应用条件格式的单元格。
2.然后,单击主页>条件格式>新规则。
3.在“新建格式规则”对话框中,单击“使用公式”确定要格式化的单元格。
4.在此公式为真的格式值下,键入公式:=和($B$2“24x7”,$B$2“20x7”)
公式使用AND函数查看单元格B2是否与常用值不同:“24x7”、“20x7”,。。。[您可以继续在AND函数中添加更多以逗号分隔的值]
如果是,则对单元格进行格式化。
5.单击“格式”。
6.在颜色框中,选择红色。在字体样式框中,选择粗体。

如果以这种方式覆盖单元格公式,则可能会出现问题。你需要以某种方式替换这个公式。一开始就不允许改变公式怎么样

假设以下布局和单元格公式
=IF(B3=“High”,“4小时”和“”)
位于单元格D3中:

那么像这样的事情怎么样:

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$D$3" Then
            If Not (Range("B3").Value = "High" And Range("D3").Value = "4 hours") Then
                qm = Chr(34)
                Range("D3").Formula = "=IF(B3=" & qm & "High" & qm & "," & qm & "4 hours" & qm & "," & qm & qm & ")"
            End If
        End If
End Sub
此代码应放在相关的图纸模块中,而不是标准模块中

根据OP评论进行编辑

顾名思义,条件格式与格式有关,而与单元格内容无关。如果你接受了不允许重写公式的前提,那么你可以考虑“锁定”工作表上的特定单元格。这样,用户将无法修改单元格或其内容


有关更多信息,请查看。

感谢您提供的解决方案。除了编写代码,您是否还有公式或条件格式的方法来完成此操作。@joseThanks For solution。我还想知道excel工作表中是否有其他方法(例如:使用公式或条件格式)而不是写这段代码?好的,谢谢。如果这符合您的要求,请标记为答案,以关闭此线程。