对 Excel 数据进行排序以进行数据验证(依赖下拉列表)

对 Excel 数据进行排序以进行数据验证(依赖下拉列表)

我在制作依赖下拉列表时遇到了一些问题。

我想选择我的冒险者的名字,然后选择一项技能。该技能应该对该职业有效且可用。

样本数据 :

Class, Name, Skill
Magic, Aldous, Fireball
Melee, Cordelia, Fury
Magic, Hmurr, Heal
Magic, Joe, Fireball

每个职业都共享相同的技能。(例如,魔法用户可以在火球、治疗、祝福、复活等之间进行选择,但近战或远程用户则不能,因为他们有自己的技能)。

每个类别都有一个预定义的名称列表。

可以使用辅助列/表来制作依赖下拉列表,但我认为这会适得其反,因为我的第三列没有足够的唯一值。

您建议我如何排序我的数据?

以下是我尝试过的:

链接1

链接2

使用存储在不同工作表中的数据

感谢您的帮助!它看起来是这样的

名称的存储方式如下

=IF(E8<>"","t_dk_skill","")

检查列是否已填充,则用给定的字符串填充单元格,否则留空。

以下是两个 LOOKUP 列 第一列存储名称,第二列存储类别/vlookup 信息。

=
IFERROR(INDEX(tabel1,ROWS(H1:$H$1)),
IFERROR(INDEX(tabel2,ROWS(H1:$H$1)-ROWS(tabel1)),
IFERROR(INDEX(tabel3,ROWS(H1:$H$1)-ROWS(tabel1)-ROWS(tabel2)),
IFERROR(INDEX(tabel4,ROWS(H1:$H$1)-ROWS(tabel1)-ROWS(tabel2)-ROWS(tabel3)),
IFERROR(INDEX(tabel5,ROWS(H1:$H$1)-ROWS(tabel1)-ROWS(tabel2)-ROWS(tabel3)-ROWS(tabel4)),
IFERROR(INDEX(tabel6,ROWS(H1:$H$1)-ROWS(tabel1)-ROWS(tabel2)-ROWS(tabel3)-ROWS(tabel4)-ROWS(tabel5)),
IFERROR(INDEX(tabel7,ROWS(H1:$H$1)-ROWS(tabel1)-ROWS(tabel2)-ROWS(tabel3)-ROWS(tabel4)-ROWS(tabel5)-ROWS(tabel6)),"")))))))

格式良好的表格。参考这个

有用!

有用!

谢谢!

答案1

我认为您想要做的是根据类别来驱动名称和技能命名范围,而不是让技能由名称驱动。我将工作表设置为如下所示:

截屏

我为 D3:D5 创建了一个命名范围,用于验证 B2。

我还创建了名为 MagicNames、MeleeNames、RangedNames、MagicSkills、MeleeSkills 和 RangedSkills 的命名范围。

我将 B3 的验证设置为基于所选类别和“名称”的连接

=INDIRECT($B$2&"Names")

然后,这会将 B3 的命名范围设置为等于 MagicNames、MeleeNames 或 RangedNames。

B4 的验证基于所选类别和“技能”的串联

=INDIRECT($B$2&"Skills")

根据评论的新答案:

屏幕截图 2

这次我创建了一个姓名列表,旁边是他们的班级。我创建了 2 个命名范围;1 个基于 D2:D10 的姓名,另一个称为 LOOKUP,即 D2:E10。

然后我为每个类别的技能创建了命名范围(G2:G4、H2:H4 等)

名称用于 B2 中的验证。然后,对于 B3 上的数据验证,我在 LOOKUP 命名范围内使用了 B2 的 VLOOKUP。

=INDIRECT(VLOOKUP($B$2, LOOKUP, 2, 0))

这次查找返回了类别名称,然后用于调用适当的命名范围来列出技能。

相关内容