在实体列表中查找实体,并根据其在 Excel 中所属的类别返回另一个单元格值

在实体列表中查找实体,并根据其在 Excel 中所属的类别返回另一个单元格值

我想找到一种基于类别和另一个特征获取特定值的好方法。我将尝试在下面举例说明;

问题:

1)我想检查某个实体属于哪个类别。

2) 根据 1) 中的答案和另一个因素(我们称之为经验点),我希望能够获得两者之间的截距值。

数据:

实体................................XP.............A...........................B......................XP.............A.............B 甘道夫................................80..........吉姆利....................佛罗多...............0-50..........2.5.........3.1
佛罗多..............................21........甘道夫.....安格玛巫王.....51-100......3.3.........4.2
吉姆利................................39............................................... 101-150.....4.6..........7.4
安格玛巫王..140

也就是说,我真正想知道的是,甘道夫的值为 3.3,而安格玛国王的值为 7.4,而无需阅读该死的表格。我非常希望有一种聪明而精简的方式来做到这一点。我尝试过匹配、索引、Vlookuping 和构建简单的宏,但没有找到让你以特殊方式感到胃口大开的解决方案。请帮帮我!

答案1

您已经给出了答案。vlookup 和 index 是正确的函数。

我的建议是不要尝试将所有内容都放在一个公式/单元格中,而是将公式分开。在输入实体名称的字段旁边,VLOOKUP对 XP 执行一个。接下来,使用MATCH查找类别。最后,使用INDEX根据其他两列查找值。您可以使用ROUND将 XP 四舍五入到正确的值(ROUND(XP/50)在您的示例中)。

希望这能让你胃口大开 ;-)

答案2

如果我理解正确的话,你想

索引第 1 列,匹配第 2 列和第 5 列,然后返回任何一个值第 6 列或第 7 列,取决于实体位于第 3 列还是第 4 列

看起来您想使用 Index(Match) 来完成大部分工作,正如 agtoever 所建议的那样。此外,他的观点非常正确,您将很难将特定实体 xp 与乐队 xp oin 匹配,这相当于第二个表格(在右侧)。

首先要做的是按照规定对 XP 进行四舍五入,并将最右边 XP 列中的值更改为单个值以匹配。

接下来你需要做的是让 excel 知道实体是在 a 列还是 b 列。看起来你的整个布局目前是一个表。我建议你把它分成三张。

表格1

实体 | 特定实体 XP | 实体 XP 带 | A 或 B | 最终回报

表 2

一 | 二

表3

XP 频段 | A 列 | B 列

这意味着如果你将 a 或 b 映射到表 1 中的每个实体,那么你可以检查表 2,以从 A 或 B 返回正确的值

步骤 1:XP

1.1:将 XP 范围更改为单个值(可能是最大值),如下所示

50 100 150

1.2:按照上面的方法ROUND计算实体位于哪个带。

第 2 步:A 或 B

在第四列写一个索引实体名称的公式,然后检查它是否在表2的a列中。如果是,返回“A”,如果不是,则返回“B”

就像是

=IF([entitity in this row] = [range A], "A", "B")

步骤 3:返回值

在第五列中写一个公式来检查第四列,然后检查第三个表的最终数字,这可以使用嵌套的 IF 语句、AND 或

就像是

=IF([entitiy XP band] = [XP band], IF([entity A or B] = "A",[return A in table 3]),[Return B in table 3])

我希望这个伪代码解释有用。如果你需要更多说明,我今晚回家后会写一个具体的例子。

答案3

由于某种原因,这个问题没有被添加为我自己的问题,所以很遗憾我错过了这些答案。无论如何,非常感谢,你正确地理解了这个问题并找到了一个很好的解决方案。

实际数据相当大,XP 波段被划分为更多类别,表 2 由 AG 而不是 AB 组成,并且实际上有 3 个不同的“表 3”,具体取决于另一个类别(与表 2 使用 XYZ 构建的类似)。由于所有这些,我选择了一个类似但略有不同的解决方案,我认为我可以出于任何学术目的分享它。

第一步:获取 XP 频段匹配,解决方法如下:

=IF(AND(0<=[XP in this row], [XP in this row]<51), "0-50", IF(AND(50<[XP in this row], [XP in this row]<101), "51-100", "101-150"))

步骤2_获取第1类,AG:

=IF(ISERROR(MATCH([entity in this row],[range A],0)),IF(ISERROR(MATCH([entity in this row],[range B],0)), "C", "B"), "A")

步骤 3:查找要使用的表(类别 2)XZ:

按照与步骤2相同的方法解决。

步骤 4:为每个实体和所有类型 XZ 寻找解决方案

=INDEX([table X], IF([XP]=[XP band1], 2, IF([XP]=[XP band2], 3, 4)), IF([category1 for entity]="A",2,IF(([category1 for entity]="B", 3, 4)))

步骤 5:最后一步,我选择使用 X、Y 和 Z 的值:

=IF([category 2]="X", [table X], IF([category 2]="Y", [table Y], [table Z]))

这可能不是最完美的解决方案,但它确实起了作用并且为我节省了很多工作。

再次感谢您提出的解决方案,您很可能已经以更精简的方式解决了该问题。

相关内容