Excel 根据其他单元格允许单元格填充';内容

Excel 根据其他单元格允许单元格填充';内容,excel,validation,Excel,Validation,我正在对我的数据应用数据验证规则,我希望完成以下工作: 如果另一个单元格中填充了值Y,则将值X设置为一个单元格。 例如,如果在一个单元格中我没有产品所有者,我希望下一个单元格设置为N/a,并且不可编辑。如果第一个单元格包含的值不同于而不是产品所有者,则下一个单元格应可用于编辑(根据我设置的验证规则,允许使用值)。以下是VBA方法 您需要将此代码放入工作簿相关工作表的工作表\u Change事件模块中 简而言之,如果a列中的单元格更改为而不是产品所有者,则B列中会添加n/a,并且该单元格会被锁定以

我正在对我的数据应用数据验证规则,我希望完成以下工作:

如果另一个单元格中填充了值
Y
,则将值
X
设置为一个单元格。
例如,如果在一个单元格中我没有产品所有者,我希望下一个单元格设置为
N/a
,并且不可编辑。如果第一个单元格包含的值不同于
而不是产品所有者
,则下一个单元格应可用于编辑(根据我设置的验证规则,允许使用值)。

以下是VBA方法

您需要将此代码放入工作簿相关工作表的
工作表\u Change
事件模块中

简而言之,如果a列中的单元格更改为
而不是产品所有者
,则B列中会添加
n/a
,并且该单元格会被锁定以进行编辑。如果还有其他内容,则会添加一个数据验证列表,并解锁单元格

请注意,这种方法要求工作表具有密码保护

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Options As String
    Options = "1. Choice1, 2. Choice2, 3. Choice3" //Change this options

    ActiveSheet.Unprotect Password:="Your Password"
    Application.EnableEvents = False

    If Not Intersect(Range("A:A"), Target) Is Nothing Then
        If Target = "Not a product owner" Then
            Target.Offset(0, 1).Validation.Delete
            Target.Offset(0, 1) = "n/a"
            Target.Offset(0, 1).Locked = True
        Else
            Target.Offset(0, 1).Locked = False
            Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Options
        End If
    End If

    Application.EnableEvents = True
    ActiveSheet.Protect Password:="Your Password"
End Sub

您是否介意与我们分享您的工作中至少一部分相关内容——只是为了支持@PeterL。因为我不是excel专家,我只是在网上寻找解决方案,因为我没有找到任何符合我需要的东西,所以我在这里问。谢谢。我认为这不可能用纯Excel来完成:您需要保留条件检查,同时允许在同一单元格中输入。但是,如果VBA是您的一个选项-这是可以实现的。@PeterL。谢谢你的推荐。尤金,根据你对彼得的回复,我只是想在网上找到一个解决方案。你有没有看过常见问题,特别是“我可以在这里问什么问题?”投票结束。。。