请参阅我的电子表格My Spread Sheet,我已经圈出3个下拉列表的位置 .
我最近开始尝试在Excel中做一些非常基本的VBA . 在我当前的电子表格中,我有一个工作时间表,通过从下拉列表中选择日期,然后从每个人的下拉列表中选择每个人的工作时间来填写,最后从“工作时间”中选择“设置”第三个下拉列表导致表格填充了给定日期的正确时间 .
记住我是新手,我想知道的是,如果有一种方法,当第一个下拉列表选择日期时,每个人的下拉列表将自动选择已经在表?
例如,如果在第一个日期下拉列表中选择了26/10/2016,则下方人员1将从下拉列表中自动选择"02:25",人员2将从下拉列表中自动选择"03:00",人员3将选择"OFF",人员4 "OFF"最后,人5将从下拉列表中自动选择"OFF" . 见SpreadSheet
我希望这是有道理的!
谢谢你提供的所有帮助!
达尼
编辑:
所以我采用了你提供的公式并且我写了一些非常简单的VBA(因为这更像是一个学术项目),所以当下拉列表中的日期发生变化时,它会更新时间 . 我删除了用于更改时间的下拉列表 . 再次感谢您的帮助@ user3598756
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("C4") Then
Application.EnableEvents = False
ActiveSheet.Range("C6").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(Left($B6,Len($B6)),$G$2:$K$2,0))"
ActiveSheet.Range("C7").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B7,LEN($B7)),$G$2:$K$2,0))"
ActiveSheet.Range("C8").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B8,LEN($B8)),$G$2:$K$2,0))"
ActiveSheet.Range("C9").FormulaLocal = "=INDEX($G$4:$K$35,MATCH($C$4,$F$4:$F$35,0),MATCH(LEFT($B9,LEN($B9)),$G$2:$K$2,0))"
ActiveSheet.Range("C10").FormulaLocal = "=INDEX($G$4:$K$35,MATCH ($C$4,$F$4:$F$35,0),MATCH(LEFT($B10,LEN($B10)),$G$2:$K$2,0))"
Application.EnableEvents = True
End If
End Sub
1 回答
你不需要VBA
假设:
您的工时表位于单元格G4:K28中
您的工作时间表“人” Headers 位于单元格G2:K2中
你的工作表“日期”在单元格F4:F28中
您的第一个日期下拉列表位于单元格C4中
写入小时的“人#”单元格在单元格C5:C9中
那么你可以在单元格C5中编写以下公式
并将其拖到其他单元格