Excel:如果A列和B列中选择的日期不匹配,则触发C列中的特定下拉列表
我有一个电子表格如下: 在p列和Q列中,用户可以从下拉列表中选择日期。如果所选日期匹配,我希望列R中的相应单元格显示“不适用”。如果所选单元格不匹配,我希望在列R中的相应单元格中显示下拉列表Excel:如果A列和B列中选择的日期不匹配,则触发C列中的特定下拉列表,excel,drop-down-menu,Excel,Drop Down Menu,我有一个电子表格如下: 在p列和Q列中,用户可以从下拉列表中选择日期。如果所选日期匹配,我希望列R中的相应单元格显示“不适用”。如果所选单元格不匹配,我希望在列R中的相应单元格中显示下拉列表 列名使用瑞典语。专用子工作表\u ChangeByVal目标范围 Dim LastRow As Integer 'The last row of used range Dim i As Integer 'Used to loop On Error Resume Next LastRow = Cel
列名使用瑞典语。专用子工作表\u ChangeByVal目标范围
Dim LastRow As Integer 'The last row of used range
Dim i As Integer 'Used to loop
On Error Resume Next
LastRow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Finds the last row
On Error GoTo 0
If Not Intersect(Target, Range("Q:Q")) Is Nothing Then
For i = 2 To LastRow
If (Year(Cells(i, 16)) = Year(Cells(i, 17)) And Month(Cells(i, 16)) = Month(Cells(i, 17)) And Day(Cells(i, 16)) = Day(Cells(i, 17))) Then
Cells(i, 18) = "N/A"
Else
Cells(i, 18).Clear
With Cells(i, 18).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Sheet2!$A$1:$A$3" 'Change refrence here
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End If
Next i
End If
端接头
嘿,Udden,虽然不是有史以来最伟大的代码,但这应该会有所帮助。您需要更改对下拉源的引用。你也可以使用命名范围,只需四处搜索,这并不难。如果您还有任何问题,请告诉我。编辑:我只是假设您了解一些VBA,如果您不了解,请按ALT+F11,然后双击列表A并粘贴到我的代码中。请参阅代码中我的注释,以“找出要更改的引用” 专用子工作表\u更改ByVal目标作为范围
Dim LastRow As Integer 'The last row of used range
Dim i As Integer 'Used to loop
On Error Resume Next
LastRow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Finds the last row
On Error GoTo 0
If Not Intersect(Target, Range("Q:Q")) Is Nothing Then
For i = 2 To LastRow
If (Year(Cells(i, 16)) = Year(Cells(i, 17)) And Month(Cells(i, 16)) = Month(Cells(i, 17)) And Day(Cells(i, 16)) = Day(Cells(i, 17))) Then
Cells(i, 18) = "N/A"
Else
Cells(i, 18).Clear
With Cells(i, 18).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Sheet2!$A$1:$A$3" 'Change refrence here
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End If
Next i
End If
端接头
嘿,Udden,虽然不是有史以来最伟大的代码,但这应该会有所帮助。您需要更改对下拉源的引用。你也可以使用命名范围,只需四处搜索,这并不难。如果您还有任何问题,请告诉我。编辑:我只是假设您了解一些VBA,如果您不了解,请按ALT+F11,然后双击列表A并粘贴到我的代码中。请参阅代码中我的注释,以“找出要更改的引用” 这可能与数据验证中的公式相矛盾 在列R中,选择要进行数据验证的所有范围,然后出现此窗口 然后在“允许”部分选择“列表”,您将看到 在源代码部分,您将写下以下内容:
=IF($B2<>$C2,$J$11:$J$22,$X$11)
其中:
$B2和$C2是我要比较的日期列,因为您将是p和Q
第一名单
$J$11:$J$22是如果日期不匹配,我想显示的列表范围
第二份名单
$X$11,只是一个带有N/a的单元格,用于显示B2和C2中的日期是否已经匹配
因为我在IF公式中的逻辑测试是,如果B2和C2不相等,显示第一个列表,如果不是,如果B2和C2相等,则显示第二个列表
然后你可以有这个:
这可能与数据验证中的公式相矛盾 在列R中,选择要进行数据验证的所有范围,然后出现此窗口 然后在“允许”部分选择“列表”,您将看到 在源代码部分,您将写下以下内容:
=IF($B2<>$C2,$J$11:$J$22,$X$11)
其中:
$B2和$C2是我要比较的日期列,因为您将是p和Q
第一名单
$J$11:$J$22是如果日期不匹配,我想显示的列表范围
第二份名单
$X$11,只是一个带有N/a的单元格,用于显示B2和C2中的日期是否已经匹配
因为我在IF公式中的逻辑测试是,如果B2和C2不相等,显示第一个列表,如果不是,如果B2和C2相等,则显示第二个列表
然后你可以有这个: