Попросили меня написать о таком зверьке, как VLOOKUP.
Что делает эта штука?
Если заумно, то гугл вам в помощь.
Если проще, то подставляет значения.
Как это работает?
Например, мы хотим захватить еву и снабжать её кораблями. По плану для захвата мира необходимы рифтеры и кондоры.
Мало того, они должны быть зафичены. Как узнать сколько это все будет стоить?
Окей, для 2х кораблей подставить цифры с пролинковкой с цен с одной таблицей посредством " = A2*B2" не проблема.
Но если добавлять фит, то получается головная боль.
Как упростить задачу?
Дальше будут картинки с описанием.
1) Создаем таблицу. В эту таблицу обозначенным в 1-ом посте способом закидываем скрипт на цены.
2) Создаем лист с ценами. Назовем её Price (в переводе на русский цена). Я с гуглом в азартные игры не играю, поэтому все листы всегда обзываю на английском.
3) Создаем лист и называем его Rifter
4) Создаем лист и называем его Condor
Есть способ подгрузки данных по айдишникам и именам и т.п. через market-data, но эта хрень иногда тупит, поэтому я предпочитаю ручками для каждого предмета. Шутка. У меня есть таблица со всеми названиями и айдишниками, и оттуда я все гружу. Однако пойдем ручным способом.
Предположим, что рифтеры мы будем фитить в 2 200mm Autocannons II и 5mn microwarp drive I, damage control II.
Кондорам же достается Traige I, Capital armor repair I и Aurora Ominae.
Да-да. план сумасшедший.
Итак.
Что у нас получается в листе Price
Подставляем ID.
Дальше подгружаем цены скриптом по айди предмета.
Т.к. для примера мне нужна была цена только минимальной продажи в жите, поэтому скрипт показывает исключительно эту цену.
На листах Rifter и Condor я прописала, что хочу создать 10 рифтеров и 100 кондров в фите.
Теперь воспользуемся волшебной vlookup. Однако перед этим нужно кое-что сделать.
ВАЖНО!
Нужно определить откуда и что брать.
У каждого предмета есть имя и айдишник. По ним собственно и ориентируется функция vlookup , поэтому нам необходимо задать ей область поиска. Но мало того. нам надо чтобы она еще и цены брала оттуда. (можно, конечно, ручками каждый раз прописывать, однако я считаю способ ниже более элегантным что ли)
Идем на лист Price.
1) Выделяем наши названия кораблей, их айдишники и цену.
2) Тыкаем правой кнопкой по выделенным ячейкам и выбираем Define named range.
3) Дальше справа вылазит панелька. Я называю ренджи так, чтобы можно было интуитивно их найти. Но вы можете называть их как хотите, желательно, чтоб это была латиница все-таки. 1-ое поле имя для ренджа. 2-ое поле: имя листа и какие ячейки. На скрине выше они как раз выделены.
4) Нажимаем Done. Панелька не закрылась, однако показывает вам какие в принципе у вас есть области сохраненные.
5) Теперь идем на лист Rifter
6) В ячейку C2 вставляем:
=VLOOKUP(A2,R_PRICE,3,false)
где
A2 то, что мы ищем,
R_Price то, где мы ищем (наша область)
3 из какого столба нашей области мы берем. Нас интересуют цены, а у нас это столбец номер 3
false - сортировка (гуглите, что это такое. кратко - false возвращает точное значение)
7) Дальше просто в столбце D перемножаем значения C2 и D2 и получаем цены за 10 штук.
Теперь идем на лист Condor.
Делаем все тоже самое, кроме одного нюанса. Для наглядности я подцепила цену за 1 штуку.
В данном случае в столбце D я сразу умножила результат из листа Price на кол-во (в ячейке B2). Можете туда и цифры ручками ставить, опять же ваше дело.
Нюансы:
1) Что делать если мне нужны и бай ордера?
В таблицу Price добавляете еще цены на покупку.
В область поиска добавляете этот столбец, вы можете их свободно редактировать.
2) Как найти все области, что я создал?
Data -> Named ranges...
3) Как отредактировать?
Панелька снова появится справа. Тыкаете на карандаш рядом с именем ренджа и редактируете.
Есть вариант, например, создавать рендж несколько иначе. Для этого сначала вызываете панельку ( Data -> Named ranges) затем нажимаете Add a range. В 1-ом поле пишете его название. Во 2-ом поле там будет картинка таблицы миниатюрная. Тыкаете её и выделяете нужную вам область. Точно так же нажимаете Done.
4) Как подставлять значения из других столбцов?
Допустим вы решили, что цены на бай ордера вам тоже нужны.
Вы их подгрузили в Price. Добавили в область поиска.
Затем прописываете в нужной ячейке, куда должны загружаться данные =VLOOKUP(A2,R_PRICE,3,false) , где ЗАМЕНЯЕТЕ 3 на номер того столбца, что вам нужен. НЕ ориентируйтесь на A, B, C названия столбцов, вас интересует порядковый номер столбца в выделенной области.
Ну, в догонку пример как это сделано: https://docs.google....dit?usp=sharing
Искренне надеюсь, что манипуляции я описала понятно. Если есть вопросы, то задавайте
p.s. вот как раз vlookup у меня и основана здоровая таблица со всеми айдишниками и названиями. В одном месте собраны итемы и подтягиваются цены. В другом месте я их просто подставляю.
p.p.s я подозреваю, что когда меня просили про vlookup написать, то их интересовало, как я вытаскиваю все итемы.
Здесь есть 2 способа.
1) Взять готовый excel дамп базы евы.
2) Загрузить из евовской дб, развернутой где-то на хосте . (я именно этим пользуюсь. первоначально подключила mysql, выгрузила в нужный лист нужную мне инфу, дальше подцепила скрипт на цены. profit)
Дальше в ход идет уже vlookup, который расставляет все значения, куда надо
Сообщение отредактировал Aliner: 24 October 2015 - 5:42