Excel - 值列表中的条目基于某些其他列值

时间:2015-05-05 10:22:41

标签: excel excel-vba excel-formula excel-2010 vba

我们在excel(2010)中有一个场景,其中下拉列表中显示的值列表会根据该行的某些列动态更改。例如。考虑一下"主管"下面的表1中的下拉列表:

Emp Grade   Supervisor
A   14  
B   12  
C   13  
D   12  
E   12  
F   13  
G   14  

现在让我们说主管有一个下拉菜单。对于每位员工,主管可以只是其成绩或更高年级的人。所以,对于例如。对于13年级的员工,可以只有13年级或14年级的主管,而不是12年级。

如何在值列表中编写这样的自定义条件?我尝试过命名范围,偏移等等,但没有人允许指定自定义条件。有什么帮助吗?

3 个答案:

答案 0 :(得分:0)

我发现以下文档有助于创建依赖数据验证下拉列表:DV0064 - 依赖列表清除单元格,可在此处下载(免费):

http://www.contextures.com/excelfiles.html#DataVal

您可以根据自己的需要定制示例。

答案 1 :(得分:0)

=OFFSET('validation pivot'!$A$1,0,1,COUNTIFS('validation pivot'!$A:$A,">="&B2),1)

主管需要至少达到他的薪资等级(> = B2)。为了使其工作,您需要在 validation pivot A1中插入数据透视表。如何创建支点(草率笔记):

  1. 添加成绩和emp' emp作为子集
  2. 表格视图'有单独的列
  3. 重复标签'能算数呢
  4. 删除autosums(内部和总计)'不处理躲避
  5. 隐藏列标签和过滤器'相同
  6. 降序(等级)'获得简单的匹配方法
  7. 数据:不存储任何'每次刷新降序
  8. 请参阅上传的sample file

答案 2 :(得分:0)

此代码(A列= EMP,B =等级,C =主管)

Sub test()

Dim actualgrade As Integer
Dim lastRowA As Integer
Dim numbers As String

lastRowA = Sheets("sheet1").Cells(Sheets("sheet1").Rows.Count, "A").End(xlUp).Row

For i = 2 To lastRowA '1 = headers
actualgrade = Cells(i, 2)

For j = 2 To lastRowA
If Cells(j, 2) >= actualgrade Then
numbers = numbers & " " & Cells(j, 1).Value
End If
Next j

Cells(i, 3).Value = numbers
numbers = ""

Next i
End Sub

取得这个结果:

Emp Grade   Supr
A   14   A G
B   12   A B C D R F G
C   13   A C F G
D   12   A B C D R F G
R   12   A B C D R F G
F   13   A C F G
G   14   A G

随意改变它,就像你需要它一样