当主列表中的每个项目与一组辅助列表中的项目的不同集合相关联时,您可以使用级联列表框来管理那些辅助列表。
例如,如图的第一张图片显示,帽子在三个州出售,并且从该列表中选择了佛罗里达州。
在第二个图像中,即将从“产品”列表中选择“外套”项目。
在第三个图像中,选择了Coats后,状态单元变为红色,警告您Coats不在佛罗里达出售。
最后,在第四个图像中,“状态”列表框显示了销售Coats的五个州,并且即将选择新泽西州。
您可以通过多种方式使用主次列表结构。例如...
主要列表可以是部门的名称,次要列表可以是在每个部门工作的人员的名称。
主要列表可以是竞争对手的名称,次要列表可以是每个竞争对手活跃的地区。
主要列表可以是供应商的名称,次要列表可以是您从每个供应商购买的产品。
等等。
然后,一旦选择了主要和次要项目,报表就可以使用SUMIFS,COUNTIFS,AVERAGEIFS,SUMPRODUCT,数组公式或其他聚合方法从工作簿中的表中返回有关选择内容的信息。
以下说明说明了如何使用动态范围名称和条件格式设置级联列表框。您也 可以在此处下载工作簿。
开始列表维护表
此图像显示此级联列表示例的完整布局:
级联列表设置
该表无需与列表位于同一工作表上。为了方便起见,我将其显示在列表附近。
出于明显的原因,我将此表称为Graycell表。狭窄的灰色行和列标记了表使用的范围的边界。您将看到。
首先,设置表格的文本和格式,如下所示。然后定义三个名称,这些名称引用它们如图的范围。
为此,选择范围B6:H8。选择“公式”,“定义的名称”,“从选择中创建”,或按Ctrl + Shift + F3。在“创建名称”对话框中,确保仅选择“ 左”列 。然后选择确定。
D6单元格中的项目号指定D列中列表中的项目数。这是在显示的单元格中返回该数字的公式:
D6: = COUNTA(D $ 8:D $ 15)
(您可能会注意到,COUNTA函数同时计算数字和文本,但不计算空单元格。)
输入公式后,将其复制到右侧,如图所示。
开始列表框
在第二行和第三行中输入文本并设置格式,然后设置格式。然后使用“创建名称”对话框将“产品”和“状态”分配为如图两个黄色单元格的名称。
(顺便说一下,这些单元格是黄色的,以提供视觉提示,这些单元格包含可以更改的设置。)
稍后,您将在这两个单元格中添加下拉列表框。但是首先,您需要设置两个动态范围名称。
创建第一个动态范围名称
列表框依赖于两个相当长的动态范围名称。为了解释名字,我将其分成两部分,然后将这些部分组合成一个长公式。
对于第一部分,我们需要创建一个OFFSET公式,该公式返回对表中包含黄色产品单元格中输入的标签的单元格的引用。为此,我们使用INDEX-MATCH公式。
这两个函数的语法公式为:
= INDEX(参考,行数,列数,区域数)
= MATCH(lookup_value,lookup_array,match_type)
因此,在任何空单元格中,输入以下公式:
= INDEX(项目,1,MATCH(产品,产品,0))
这是此公式告诉Excel的操作:
从整个Items范围开始,返回对该范围第1行以及MATCH公式指定的列号中找到的单元格的引用。
要查找该列号,请使用MATCH在“产品”列表中查找指定的产品。由于MATCH的第三个参数为零,因此可以按任何顺序列出产品,并且需要完全匹配。
再次在此示例中,您可以 在此处下载 ...
级联列表设置
..INDEX-MATCH公式返回对单元格D6的引用,该引用包含值3。
现在,我们使用OFFSET-MAT??CH公式,其中OFFSET的语法为:
=偏移(参考,行,列,高度,宽度)
初步公式为:
= OFFSET(TopRow,1,MATCH(Product,Products,0)-1,(3),1)
(这里,该公式末尾的“(3)”是我们刚刚看过的INDEX-MATCH公式返回的值。)
这是此公式告诉Excel的操作:
返回从灰色TopRow范围下一行开始的引用。将列数移动到由MATCH函数指定的如图,少一列。(例如,这里的“帽子”在第二列中,因此从单元格C8向右移一列。)返回一个3行高1列宽的引用。
因此,当我们将两个部分组合成一个长公式时,我们得到:
= OFFSET(TopRow,1,MATCH(Product,Products,0)-1,
INDEX(Items,1,MATCH(Product,Products,0)),1)
要测试此公式,请首先在任何单元格中将其作为一个长公式输入,它应该返回#VALUE!错误。现在,在公式栏中选择公式;按Ctrl + c复制它;按Esc键返回到就绪模式;按F5键启动“转到”对话框;将公式粘贴到“引用”框中;然后按Enter。完成此操作后,Excel应选择表格中“帽子”标签下方具有三个状态的区域。
一旦测试成功,请定义名称CurrentStates。为此,请选择“公式”,“定义的名称”,“定义的名称”(或选择Ctrl + Alt + F3)以启动“新名称”对话框。在“名称”框中键入CurrentStates;将复制的公式粘贴到“引用”框中;然后按Enter。
要测试该名称是否按预期工作,请再次按F5键,然后在“引用”框中输入CurrentStates。这样做之后,Excel应该再次选择这三种状态。
创建第二个动态范围名称
第二个动态范围名称从“产品”行返回产品列表,但从列表中排除开始和结束的灰色单元格。要创建名称,请首先将此公式复制到剪贴板:
= OFFSET(产品,0,1,1,COLUMNS(产品)-2)
然后按Ctrl + Alt + F3启动“新名称”对话框;在“名称”框中键入CurrentProducts;将公式粘贴到“引用”框中;然后按Enter。
确保使用“转到”对话框测试该名称。
设置下拉列表框
下拉列表框要设置下拉列表框,请首先选择单元格E2。选择“数据”,“数据工具”,“数据验证”。在数据验证对话框的设置选项卡中,选择列表中 允许 下拉列表框,并在源框中,键入...
= CurrentProducts
...然后选择确定。
同样,选择单元格E3,再次启动“数据验证”对话框,然后 在“源”框中键入...
= CurrentStates
...,然后选择“确定”。
设置条件格式
您还记得,如果我们选择在指定状态下没有销售的产品,则需要状态单元格E3(状态单元格)变成红色。为此,我们使用以下条件格式公式:
= ISNA(MATCH(E3,CurrentStates,0))
如果MATCH函数在CurrentStates范围内找不到单元格E3的内容,则此公式返回TRUE。当我们使用公式来设置条件格式时,当公式返回TRUE时,格式就会打开。
因此,要开始条件格式,请复制上面的“ ISNA”公式。
选择单元格E3,确保所选单元格的地址与上面的公式中的地址相同。选择“主页”,“样式”,“条件格式”,“新规则”。在“新格式设置规则”对话框中,选择“ 使用公式来确定要格式化的单元格”。在对话框的第一个编辑框(此公式为true的标签为“ 格式值”)中,粘贴从上方复制的公式。
接下来,单击“格式”按钮。在“设置单元格格式”对话框的“填充”选项卡中,在调色板的底行中选择亮红色的正方形。然后选择确定,然后再次选择确定。
现在,您的级联列表框应该可以按照本文开头所述的方式工作。您可以在单元格E2的下拉列表框中选择任何产品。然后,您可以从单元格E3的下拉列表框中选择任何状态。如果您选择当前状态下未销售的产品,则单元格E3应该变成亮红色。(出于测试目的,请注意,蒙大拿州出现在每种产品的列表中。)
根据自己的需要调整示例
要将此设置转换为您自己的要求,请用您自己的项目列表替换产品名称,并在“列表维护”表的F和G列之间插入所需的列。您可能需要将“产品”一词更改为可以更好地描述您自己的项目列表的词。
其次,将状态名称替换为辅助列表所需的项目名称。根据需要在表中插入许多行,以添加其他项。而且,您可能希望用一个词更好地描述次要项目列表来替换“状态”一词。
最后,要更改名称中包含“产品”或“州”的范围名称,请首先选择“公式”,“定义的名称”,“名称管理器”。选择要更改的名称;选择编辑;在“编辑”对话框中更改名称;然后选择确定。