请在此处查看我的电子表格My Spread Sheet,我已圈出3个下拉列表的位置。
我最近开始尝试在Excel中执行一些非常基本的VBA。在我当前的电子表格中,我有一个工作时间表,通过从下拉列表中选择日期然后从每个人的下拉列表中选择每个人的工作时间来填写,最后"设置&# 34;从第3个下拉列表中选择,这将导致表格填充给定日期的正确时间。
请记住我是新手,我想知道的是,如果有一种方法,当第一个下拉列表选择日期时,每个人的下拉列表将自动选择时间,即已经在桌子上了?
例如,如果在第一个日期下拉列表中选择了26/10/2016,则在第1个人下方自动选择" 02:25"从下拉列表中,第2个人将自动选择" 03:00"从下拉列表中,人3将选择" OFF",person 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
答案 0 :(得分:1)
你不需要VBA
假设:
您的工时表位于单元格G4:K28
您的工作时间表" person"标题位于单元格G2:K2
您的工作表"日期"在细胞F4:F28
您的第一个日期下拉列表位于单元格C4
你的人#"写入小时的细胞在细胞C5:C9
然后你可以在单元格C5中编写以下公式
=INDEX($G$4:$K$16,MATCH($C$4,$F$4:$F$16,0),MATCH(Left($B5,Len($B5)-1),$G$2:$K$2,0))
并将其拖到其他单元格