Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 23:47   #1
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
Вопрос Применение VB в формулах (работа с данными на разных листах)

Всем доброго времени суток!
Задача такова.
Дано:
1. Файл экселя
2. Файл содержит 2 листа
3. Каждый лист содержит табличку. Таблицы сделаны таким образом что данные в первых колонках у них одинаковые, но этим данным соотносятся разные значения. Т.е. первые колонки идут как primary key в БД.
Надо:
по значению первой колонки 2й таблицы найти соответствующую строку в 1й таблице и взять значение из ячейки которая идёт сразу за ней (справа).
Не работал раньше с бейсиком, пока я решения не нашел.
Заранее благодарен.

ЗЫ. Если понадобятся уточнение - спрашивайте возможно я чтото забыл описать.

Подумал сначала сделать ифом:
=IF(Capacity!H:H=Transit!A4, Capacity!I:I, "Error!")

Capacity и Transit - это названия листов, А4 - ячейка, значение которой ищется в столбце H соответствующего листа.
Вся мулька в том (я так подозреваю) как грамотно записать второй аргумент (который сейчас выделен). Как в нём рассказать экселю, что надо брать соседнюю ячейку с найденной?

ЗЫ. Ну и конечно, рад иным предложениям в решении этого вопроса

Прикрепил файлик, о котором идет речь, дабы не говорить о сферических конях в вакууме )
Рабочие вкладки: Transit и Capacity
Вложения
Тип файла: zip расчетка.zip (14.8 Кб, 26 просмотров)

Последний раз редактировалось Stilet; 28.04.2010 в 12:09.
phobos вне форума Ответить с цитированием
Старый 28.04.2010, 11:57   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Код:
=ВПР($A4;Capacity!$H$9:$I$17;2;0)
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 28.04.2010, 12:57   #3
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
По умолчанию

Ух ты! Спасибо огромное - то, что надо
Надолго запомнится мне эта функция.

ЗЫ. Для тех кто юзает англицкую версию офиса: аналог ВПР - VLOOKUP
phobos вне форума Ответить с цитированием
Старый 02.05.2010, 19:46   #4
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
По умолчанию

Можно ли найти нужные данные во 2й таблице, удовлетворяющие нескольким критериям из первой?
В файле-примере есть табличка Transit, и в ней 2 первых колонки. Каждой паре таким образом соответствует некое третье значение. И вот это значение необходимо вытащить во другой таличке по тем же ключам. Буду рад советам по решению этого вопроса

ЗЫ. Пробовал AND, но тут, полагаю, такое не прокатит. Следует сделать так, чтобы находя ячейки с указанным первым значением, функция проверяла и второе. Хотя я могу ошибаться.
phobos вне форума Ответить с цитированием
Старый 02.05.2010, 20:10   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

рекомендую надолго запомнить еще одну функцию: СУММПРОИЗВ (SUMPRODUCT)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.05.2010, 20:44   #6
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
По умолчанию

Предельно чёткий ответ
Если не трудно, поясни его плиз

Для меня не совсем очевидно, как применить данную функцию к решению вопроса. Возникала идея, что она должна как-то проверять одновременность условий в 1й и 2й колонках (которые ключевые), однако это не так. Тем более данные в колонках - разнотипные (число, текст соответственно)
phobos вне форума Ответить с цитированием
Старый 02.05.2010, 20:56   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а данные можно посмотреть?
с небольшими пояснениями "сумма вот этого равна вот столько". а я формулу сделаю и посмотрим совпадет ли результат.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.05.2010, 21:10   #8
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
По умолчанию

Да, конечно.
Все что нужно есть в аттаче к первому посту: вкладка Transit. Там есть 2 колонки: индексы исх. и вх. станций. Я сделал еще одну вкладку с таблицей, в которой есть колонки с этими же данными.
Нужно во этой второй табличке в зависимости от значения пары ячеек, например, 206 - УСП, получить значения из первой (Колонка "Нагрузка") - 15.46
phobos вне форума Ответить с цитированием
Старый 02.05.2010, 21:52   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

почему-то я не обнаружил "второй таблички", нарисовал свою на листе "лист1". И чтобы "два раза не вставать", написал формулу, которая ищет сумму для 206 и УСП, или если указать только исходящую 206 будет собрана вся нагрузка переданая на другие станции, или если указать только входящую АТС, например ту же 206, то сумма будет то, что на 206 пришло со всех АТС.
Вложения
Тип файла: rar книга317.rar (15.4 Кб, 23 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.05.2010, 22:16   #10
phobos
Пользователь
 
Аватар для phobos
 
Регистрация: 19.04.2007
Сообщений: 35
По умолчанию

Прям целая конструкция

Код:
=IF(A2="",SUMPRODUCT((B2=OFFSET(тра1,3,1,COUNTA(трк1)))*OFFSET(тра1,3,3,COUNTA(трк1))),IF(B2="",SUMPRODUCT((A2=OFFSET(тра1,3,,COUNTA(трк1)))*OFFSET(тра1,3,3,COUNTA(трк1))),SUMPRODUCT((B2=OFFSET(тра1,3,1,COUNTA(трк1)))*(A2=OFFSET(тра1,3,,COUNTA(трк1)))*OFFSET(тра1,3,3,COUNTA(трк1)))))
Что такое "тра1", "трк1"? Полагаю, это как-то заменяет указание конкретной вкладки с данными?

Попытался перенести в свой файл, но видать этого не достичь простой заменой ячеек в формуле
phobos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация списков ( столбцов ) на разных листах и генерирование сводных листов chillUA Microsoft Office Excel 1 26.03.2010 04:31
Как связать ячейки на разных листах? BobBarker Microsoft Office Excel 9 13.03.2010 01:33
Поиск и удаление совпадающих строк в разных листах hybrid84 Microsoft Office Excel 11 24.07.2009 05:13
обмен данными из двух таблиц (одинаковой структуры) но в разных базах Tanuska___:) БД в Delphi 1 26.11.2008 19:41