我有这个电子表格,它开始是一个游戏(黑手党战争 2)的愚蠢辅助工具,但后来却变成了一个棘手的电子表格问题。
在游戏中,你的角色有 9 个“插槽”用于放置武器和盔甲,每个“类型”各 1 个:轻型武器、重型武器、护甲、头盔等。因此,我列出了游戏中所有可用的武器和盔甲,每行 1 个。示例:
SHOP ITEM TYPE ITEM NAME ATK DEF PRICE EQUIPPED?
Marketplace Weapon Light Konrad Knife 16 5 5.500
Marketplace Weapon Light Ice Queen 19 6 8.200
Marketplace Armor Body Up Layered Polym 0 31 8.600
Marketplace Armor Body Up Full Shield 7 42 17.650
Marketplace Weapon Heavy Konrad Bullpup 53 25 24.500
Marketplace Weapon Heavy Full Moon Blow 73 12 24.500 x
Marketplace Armor Body Low Knee Pads 17 26 14.200 x
Marketplace Armor Body Low Army Boots 15 55 24.500
Bone Yard Weapon Light Bone Launcher 41 2 9.400 x
Neon Strip Vehicle Ground Supercharged 41 34 24.500
Dead End Weapon Heavy Sharp Sickle 21 5 24.500
Dead End Armor Body Low Unholy Boots 5 36 15.000
Dead End Armor Head Hockey Mask 5 18 15.900 x
最后一列表示我已经购买并装备的物品(标有“x”)。我需要一个公式,对于每个“插槽”(物品类型),返回与我正在使用的该类型物品相关的信息。那就是:
ITEM TYPE SHOP NAME ITEM NAME ATK DEF PRICE
Weapon Light Bone Yard Bone Launcher 41 2 9.400
Weapon Heavy Marketplace Full Moon Blow 73 12 24.500
Weapon Special -- -- -- -- --
Armor Body Up -- -- -- -- --
Armor Body Low Marketplace Knee Pads 17 26 14.200
Armor Head Dead End Hockey Mask 5 18 15.900
Vehicle Ground -- -- -- -- --
Vehicle Water -- -- -- -- --
Vehicle Air -- -- -- -- --
项目类型是固定的,因此可以进行硬编码。每行对应一个项目类型。
因此,对于第一行结果,它将返回第二列为“武器灯”且最后一列为“x”的行的数据。基本上,我需要一个 LOOKUP(或 VLOOKUP,或其他任何函数),使用 2 个条件来查找给定的行、项目类型和 X 标记。
问题是:如何?
我正在使用 OpenOffice Calc 3.2.1,但由于它与 MS Excel 共享许多功能,因此 Excel 的答案也很好(只要它只使用常规公式,不使用 VBScript 或宏或 VBA 等)
最后但同样重要的一点是,我们也欢迎提出重新排列数据的建议/解决方案,以便更容易解决这个问题。
谢谢!
答案1
以下是如何在表中查找每个项目的商店名称。如果第一个表位于A1:G14
,而您要填写的第二个表位于K1:Q10
,则您可以在 中使用以下公式L2
查找 中类型的装备项目的商店名称K2
:
=IFERROR(INDEX($A$1:$A$14,MIN(IF($B$2:$B$14=K2,IF($G$2:$G$14="x",ROW($B$2:$B$14),1000000),1000000))),"--")
按Ctrl+ Shift+将公式输入为数组公式Enter。如果操作正确,公式将显示在 中{=...}
。此公式可以填入列中。
要使此公式适应其他列,您必须将INDEX
公式的第一个参数更改为第一个表中的相应列。例如,要查找项目名称,您需要将其用作公式$C$1:$C$14
的第一个参数INDEX
。
编辑:
好吧,我刚刚检查了 OpenOffice Calc,不幸的是它不支持IFERROR
。因此,这里有一个更长、更笨拙的公式版本,可以在 OO Calc 中使用:
=IF(ISERROR(INDEX($A$1:$A$14;MIN(IF($B$2:$B$14=K2;IF($G$2:$G$14="x";ROW($B$2:$B$14);1000000);1000000))));"--";INDEX($A$1:$A$14;MIN(IF($B$2:$B$14=K2;IF($G$2:$G$14="x";ROW($B$2:$B$14);1000000);1000000))))
这也必须通过按 Ctrl+Shift+Enter 输入为数组公式。请注意,您必须适应两个都 INDEX
在其他列中使用时公式。