这行得通:
我假设三个部门(A、B、C)和编号为 1 到 9 的项目。有 3 名员工。当然,这可以推广到任意数量的员工、部门、项目。
我这样放置数据:
ColA ColB ColC ColD ColE ColF ColG
Name Dept Dept A B C
Peter A Projects 1 4 8
Paul B 2 5 9
Mary C 3 6
7
在单元格 A7 中,我有一个使用数据验证创建的下拉菜单,您可以在其中选择员工:
- 数据-->验证-->列表-->来源=$A$2:$A$4
在工作表模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
Call FillDropDown
End Sub
它会自动更新单元格 D7 中的下拉菜单,然后您可以从中选择项目:
Sub FillDropDown()
Dim dept As String
Dim col As Long
dept = WorksheetFunction.VLookup(Range("A7"), Range("A2:B4"), 2, False)
col = WorksheetFunction.Match(dept, Range("E1:G1"), 0)
With Range("D7").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$" & Chr(68 + col) _
& "$2:$" & Chr(68 + col) & "$10" 'Range("E2:E4").Offset(0, col - 1)
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
这应该为您提供一些开始。酌情调整单元格地址,以引用您的隐藏工作表、不同数量的员工、部门、项目等。