我有一个下拉列表,该列表根据另一个单元格而有所不同,因此,如果另一个单元格设置为no
,则另一个单元格应仅在数据验证范围内stand-by
(如果设置为{ {1}}它应该具有:yes
,real
,phone
一切正常,但是...
我的问题是,现在我想在数组中再排一百条,所以我尝试扩展数组,但数据验证不会更新。因此,我必须在每个数据验证单元格中手动一对一地更改。
这是图片中的我的工作表: https://imgur.com/a/56Nk1SG(我在每张图像上都加了描述,以使其更易于理解。)
注意:我知道在excel中,如果我扩展数组,则数据验证有效,因此我尝试对其进行扩展以保存它,然后将其导入到Google工作表中,但是它没有用。 ..and在excel中没有复选框,某些公式不起作用,所以我必须将其保存在Google工作表中
编辑:我知道还有另一篇类似的文章,但这不是相同的问题...
答案 0 :(得分:0)
我认为最好的方法是通过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编辑器图像: