根据同一行中的单元格条目预填充下拉列表单元格 (Excel/VBA)?

Pre-populating a dropdown list cell based on a cell entry in the same row (Excel/VBA)?

我试图强制 "Yes/No" 下拉列表(通过工作簿中其他地方列表的数据验证创建)在同一行上的某个单元格为 "No" 时预填充填写.

我有以下 table:

在第 3 个数据输入行中,当我用一个值填充 "ID" 字段时,我希望该行的 "Bought?" 字段立即预填充 "Yes" ,而不必进入下拉列表本身并选择 "Yes" 或 "No"。这应该保留通过下拉菜单将字段更改为 "No" 的选项。

这可以通过标准 excel 数据验证来完成,还是我需要使用一些 VBA 代码?

在 D 列中试试这个公式。

=IF(COUNTA(C2), "Yes","") 并根据需要抄下来。

当在 C2 中输入任何内容时,此公式将回答 "Yes"。如果您只想响应一个数字或任何其他验证条目的内容,则其变体将是 COUNT(C2),也许 COUNTA(A2:C2)=3

我在输入公式时遇到了一点问题,发现最简单的方法是仅在公式之后设置数据验证。但是在数据验证本身中删除 忽略空白 上的复选标记也让我完成了输入。

当然,"Yes"是验证允许的条目之一。单击下拉箭头并从列表中选择一项将删除公式。

我不确定您是否对这个问题得到了满意的答案,但如果它是您正在寻找的 VBA 解决方案,Private Sub 将实现您所追求的。下面假设问题sheet是Sheet1,ID列是C.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range

If Not Intersect(Range("C:C"), Target) Is Nothing Then
 
Set c = Sheet1.Range(Target.Address)

    If c.Value <> "" Then
        c.Offset(, 1).Value = "Yes"
            Else
            c.Offset(, 1).Value = ""
    End If

End If
End Sub