我有一个下拉列表,根据另一个单元格改变,所以如果另一个单元格设置为no
我的另一个单元格应该在数据验证范围内只有stand-by
如果它设置为yes
它应该有:real
,phone
,both
everything工作,但......
我的问题是,现在我想在我的数组中有一百个其他行,所以我试图扩展数组,但数据验证不会更新。所以我必须每个数据验证单元手动更改一个一个。
这是我在图片中的表格:https://imgur.com/a/56Nk1SG(我已经对每个图像进行了描述,以使其更容易理解)。
注意:我知道在excel中,如果我扩展数组,数据验证工作,所以我试图扩展它保存它然后导入到谷歌表但它不起作用...而在Excel中没有复选框和一些公式不起作用所以我要把它保存在谷歌表中
编辑:我知道有另外一个类似的帖子,但它不是同一个问题...
在我看来,实现这一目标的最佳方式是通过VBA。
脚步:
码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With ThisWorkbook.Worksheets("Sheet1") '<- Change sheet name if needed
If Not Intersect(Target, .Range("E1:E10")) Is Nothing And Target.Count = 1 Then '<- Change range if needed. Check if the change included in our range.
Application.EnableEvents = False
If Target.Value = "Yes" Or Target.Value = "No" Then '<- Case sensitive. Check the value insert if it is Yes or No
With .Cells(Target.Row, "F").Validation
.Delete '<- Clear previous valitation
If Target.Value = "Yes" Then '<- Check if the answer if Yes
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(""tblYes[Yes]"")"
ElseIf Target.Value = "No" Then '<- Check if the answer if No
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(""tblNo[No]"")"
End If
End With
Else '<- If the value insert is NOT Yes or No
.Cells(Target.Row, "F").Clear '<- Clear format & contents next to change cell
MsgBox "Insert Yes or No!" '<- Message box prompt for Yes or No
End If
Application.EnableEvents = True
End If
End With
End Sub
包含tblYes&tblNo的图纸图像:
VBA编辑器图片: