Excel-如果单元格A=';是';,输入';x';,否则使用数据验证来限制输入

Excel-如果单元格A=';是';,输入';x';,否则使用数据验证来限制输入,excel,validation,if-statement,excel-formula,spreadsheet,Excel,Validation,If Statement,Excel Formula,Spreadsheet,我正在尝试将IF语句与MS Excel中的数据验证结合起来 我有一排单元格(A1、A2、A3…等等) 如果这些值为“否”,则我希望下面列中的值为“x”。如果值为“是”,则我希望下面的值仅允许以日期格式输入 是否可以通过在数据验证“自定义”设置中输入IF语句来实现这一点 非常感谢提供任何信息。有趣的问题。 看到您的评论后更新 =IF(A$1:C$1="YES",A2:C10<=TODAY(),A2:C10="X") =IF(A$1:C$1=“YES”,A2:C10在您的一条评论中,您说:

我正在尝试将IF语句与MS Excel中的数据验证结合起来

我有一排单元格(A1、A2、A3…等等)

如果这些值为“否”,则我希望下面列中的值为“x”。如果值为“是”,则我希望下面的值仅允许以日期格式输入

是否可以通过在数据验证“自定义”设置中输入IF语句来实现这一点

非常感谢提供任何信息。

有趣的问题。 看到您的评论后更新

=IF(A$1:C$1="YES",A2:C10<=TODAY(),A2:C10="X")

=IF(A$1:C$1=“YES”,A2:C10在您的一条评论中,您说:

如果A1为是,则A2:A10应仅限于日期输入。如果A1为否,则A2:A10应允许文本

因此,您希望它始终接受值—您只希望在列顶部的单元格包含“否”时限制值

要启用数据验证,可以使用VBA。将此功能添加到Sheet1:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 Then ' if the value changed is row 1
        If UCase(Target.Value) = "NO" Then ' if the entry is "NO"
            ' delete and readd the data validation
            Columns(Target.Column).Validation.Delete
            Columns(Target.Column).Validation.Add _
                 Type:=xlValidateDate, _
                 AlertStyle:=xlValidAlertStop, _
                 Operator:=xlBetween, _
                 Formula1:="1/1/2000", _
                 Formula2:="1/1/2100"
        Else ' if the entry is not "NO"
            ' delete the data validation
            Columns(Target.Column).Validation.Delete
        End If
    End If
End Sub

条件格式是你要找的不。条件格式不是我要找的。可能两者都是因为数据验证不能更改单元格值(条件格式也不能,但它可以伪造)。问题说“下面只允许以日期格式输入”,您可以使用数据验证或设置单元格格式。条件格式使此选项使用公式来确定要设置格式的单元格。我不明白当“否”时,如何在单元格中放置一个“X”,如果“是”,将其保留为限制用户输入。