Как найти конкретную ячейку на другом листе в зависимости от значения ячейки?

Я пытаюсь прочитать в таблице операции, которые выглядят так

"id";"name";
"1";"LASER CUTTING";
"2";"DEBURR";
"3";"MACHINING";
"4";"BENDING";
"5";"PEM";
"6";"WELDING";
"7";"PAINT PREPARATION";
"8";"PAINTING";
"9";"SILKSCREEN PREPARATION";
"10";"SILKSCREEN";
"11";"ASSEMBLY - PACKAGING";
"12";"LASER PREP";

Я хочу иметь столбец на листе, который получает соответствующее имя на основе значения столбца operation_id на другом листе. Как найти конкретную ячейку на другом листе в зависимости от значения ячейки?

Пример

userid, operation_id, operation_name
bob, 3, MACHINING

person davidahines    schedule 13.07.2011    source источник
comment
Вопрос: исходя из моего собственного опыта, вам не нужен хотя бы один столбец значений (для агрегирования) для сводных таблиц? Глядя на данные, которые вы разместили здесь, не похоже, что какой-либо столбец подходит для агрегирования.   -  person Chains    schedule 13.07.2011
comment
Кстати, иногда вы можете «агрегировать» строки, изменив функцию на min() или max() и т. д., вместо обычных математических функций, таких как сумма, среднее и т. д. Это своего рода хак, но до тех пор, пока вы у вас нет дубликатов в столбце строк, это будет работать.   -  person Chains    schedule 13.07.2011
comment
Да, я вообще не хочу агрегировать, я просто хочу использовать его для поиска нужного мне значения.   -  person davidahines    schedule 13.07.2011
comment
Похоже, у вас нет проблем с SQL, и весь ваш вопрос касается того, как вы получаете доступ к данным после их загрузки на лист. Это правильно?   -  person Lance Roberts    schedule 13.07.2011
comment
Да, я думаю, ты прав. Поиск - это то, что я искал, я собираюсь отредактировать свои теги.   -  person davidahines    schedule 13.07.2011


Ответы (3)


Возможно, вам лучше подойдет функция Lookup(). http://www.techonthenet.com/excel/formulas/lookup.php

person Chains    schedule 13.07.2011

Вам следует взглянуть на функцию DGET (база данных, поле, критерии), ссылка здесь.

Или вы можете использовать эту функцию рабочего листа:

VLOOKUP(cellWithID, Sheet2!A1:B13, 2, FALSE)

где cellWithID — это ячейка со значением идентификатора, которое вы хотите использовать.

person Lance Roberts    schedule 13.07.2011
comment
Я делаю такие вещи каждый месяц на моей работе. Я использую ВПР. Он был создан именно для таких вещей. (Я предполагаю, что вы хотите знать, как это сделать в Excel, так как это один из ваших тегов) - person chrisfs; 14.07.2011

Основываясь на этом: «Что я действительно хочу сделать, так это просто найти имя операции без необходимости каждый раз запускать SQL-запрос или иметь уродливое огромное выражение if в каждой ячейке».

Я думаю, что меня здесь смущает, почему вы просто не используете объединение. Вы всегда можете присоединиться к этой таблице для поиска любого вашего оператора sql;

select operations.name, tableA.* from tableA 

левые операции внешнего соединения для Operations.id = tableA.operationid

Если бы вы хотели, вы могли бы использовать это; не рекомендуется. Подзапросы, вообще говоря, плохие новости. Однако,

create function dbo.LookupOperationName
(
@id int
)
returns varchar(100)
as
declare @returnvalue varchar(100)
select @returnvalue = name from Operations where id = @id

return @returnValue

бы сделать свое дело. Тогда вы могли бы:

 select tablea.*,LookupOperationName(operationid) from tablea

Опять же, помните, что ваш пример объединения гораздо более эффективен. Вы также можете создать представление, в котором есть соединение, и использовать представление вместо таблицы.... все виды вещей.

person Jesse Hofmann    schedule 13.07.2011
comment
Отредактировал мое объяснение, чтобы лучше объяснить, что я ищу. - person davidahines; 13.07.2011
comment
К сожалению, я только что заметил, что ваш вопрос был там. Вы, вероятно, больше ищете решение на основе Excel... извините! Я вижу сейчас. - person Jesse Hofmann; 13.07.2011