首页 文章

Excel下拉列表自动选择

提问于
浏览
-1

请参阅我的电子表格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 回答

  • 1

    你不需要VBA

    假设:

    • 您的工时表位于单元格G4:K28中

    • 您的工作时间表“人” Headers 位于单元格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))
    

    并将其拖到其他单元格

相关问题