3

У меня есть эта таблица, которая начиналась как глупая помощь для игры (Mafia Wars 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

В последних столбцах указаны предметы, которые я уже купил и экипировал (помеченные знаком "х"). Что мне нужно, так это формула, которая для каждого "слота" (типа элемента) возвращает информацию, относящуюся к элементу того типа, который я использую. Это было бы:

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     --          --              --  --  --

Типы элементов являются фиксированными, поэтому они могут быть жестко запрограммированы. Каждая строка для типа элемента.

Таким образом, для 1-ой строки результата будут возвращены данные из строки, в которой 2-й столбец - "Оружейный огонь", а последний столбец - "х". В основном мне нужен LOOKUP (или VLOOKUP, или что-нибудь еще), который использует 2 критерия, чтобы найти данную строку, тип элемента и маркер X.

Вопрос: КАК?

Я использую OpenOffice Calc 3.2.1, но так как он разделяет очень много функций с MS Excel, ответы на Excel также хороши (если только используются обычные формулы, нет VBScript, макросов, VBA и т.д.)

И последнее, но не менее важное: также приветствуются предложения / решения по перестройке данных, чтобы облегчить решение этой проблемы.

Спасибо!

1 ответ1

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 при использовании этого в других столбцах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .