根据另一个单元格的值清除下拉输入

根据另一个单元格的值清除下拉输入

我正在 Excel 中建立库存控制系统。

每个项目均包含以下内容:

  • 库存数量
  • 重新排序级别
  • 订购库存?
  • 已下单?

这个想法是,当数量 <= 重新订购水平时,该产品的“订购库存?”单元格将显示“是”并使用条件格式以红色突出显示。这已实现,是一个简单的 IF 语句。应该发生的是,如果此框显示“是”,工作人员可以从有序列的下拉列表中选择空白或“是”,以便其他工作人员不会重新订购同一产品。同样,这有效。

问题是,当订单库存单元格为空时,我想清除“已订购?”单元格。这意味着当产品交付并更新数量时,“已订购?”单元格不会再显示“是”。

我已阅读了互联网上的大量 Excel 教程,但似乎没有一个适合这个问题。我尝试使用 IF(AND(),List,"") 命令,但被 Excel 拒绝。

您可以在此处找到图片。

希望这有意义。提前致谢。


编辑:

我仍在为此苦苦挣扎。我使用了建议的代码的略微变体作为答案:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim oS As Long, i As Integer
oS = Cells(Rows.Count, "I").End(xlUp).row

' Loop through each row, I = "Reorder?" and J = ""
If Target.Column = 2 Then
    For i = 1 To oS
        ' If I is blank, set J to blank
        If Cells(i, "I").Value = "" Then
            Cells(i, "J").Value = ""
        End If
        ' If J is Yes, set I to blank
        If Cells(i, "J").Value = "Yes" Then
            Cells(i, "I").Value = ""
        End If
    Next i
End If
End Sub

但是当我编译它然后保存工作簿时,似乎没有任何效果。工作簿可以在这里如果有人想玩的话。

答案1

据我所知,您无法用函数控制包含该函数的单元格以外的其他单元格,也无法将函数添加到启用了数据验证的单元格。如果我错了,请告诉我。

因此,我采用的方法是使用 VBA。我能想到的最简单的方法如下:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim oS As Long, i As Integer
oS = Cells(Rows.Count, "I").End(xlUp).Row
If Target.Column = 2 Then
    For i = 1 To oS
        If Cells(i, "I").Value = "" Then
            Cells(i, "J").Value = ""
        End If
    Next i
End If
End Sub

输入“股票”工作表的代码。也许经过一些修改后,它就可以正常工作?

相关内容