Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Подтягивание данных из нескольких ячеек

Автор ICE, 19.07.2012, 17:33

« назад - далее »

ICE

Добрый день Excelоюзеры!
Прошу помочь в таком вопросе. Есть список клиентов (дилеров) и список объектов. При заполнении ячейки "О" (Посещение на этой неделе) словом "Да" например "О2", необходимо что-бы в лист "План на неделю" подтянулись данные из той же строки (где стоит "Да") из ячеек A2,B2,C2,D2,E2,F2. Это возможно?

Barbarian12


ICE

Спасибо. Оказалось так просто? Почти так, только хотелось-бы что-б пробелов в листе "План на неделю не было". Что б все было по порядку. И еще. Было бы здорово, если бы Вы объяснили значение символов {} вначале формулы, или дали ссылку.

Barbarian12

Держите :)

Фигурные скобки означают, что введенная формула - это формула массива, которая вводится не обычным нажатием enter`a, а одновременным нажатием клавиш ctrl+shift+enter

ICE

Спасибо Вам огромное добрый человек!!! :D :D :D

ICE

#5
И еще. Прошу не считать меня наглым, но еще одна просьба. Было бы здорово если бы на листе "План на неделю" после того как подтянутся данные из листа "База дилеров" , подтягивались данные (в эту же таблицу "План на неделю") из листа "База объектов",и  сразу рисовались границы таблички. Ну типа что б красиво было. :) :) :)Заранее благодарен.

Barbarian12

Граница рисуется только с помощью макросов. Какие ячейки из "базы объектов" должны копироваться и куда?

ICE

В идеале, должно быть продолжение таблицы, как бы общий список визитов на неделю. Совместить базу дилеров и базу объектов. Менеджер должен выбрать на листах "База дилеров" и "База контактов" точки куда он будет ехать. И это должно объединиться на листе "План на неделю". А границы я решил условным форматированием. Столбцы например A,B,C,D,E,F из листа "База объектов".

IKor


ICE

Я ж уже написал. Решил с помощью условного форматирования. ;) ;) ;)

Barbarian12

Забыл про условное_форматирование :)

Все равно не совсем ясно, при соблюдении каких условий должны отображаться ячейки из "базы объектов". Также при наличие слова "да" в столбце I? И данные должны отображаться вперемешку с "базой дилеров"?

ICE

#11
Совершенно верно. Простите ступил. Столбец "I" на листе "База объектов". А отображаться могут и вперемешку, но лучше если сначала с листа "База дилеров", а потом с листа "База объектов".

Barbarian12

Посмотрите такой вариант. Только если будет большой объем данных, таблица скорее всего будет подтормаживать.

ICE

Земной Вам поклон добрейшей души человек!!! :D :D :DВсе работает как и хотел. Жаль что сути формулы не понял. :-\ :-\ :-\

Barbarian12

Постараюсь объяснить как работает формула:
1. Сначала идет вычисление логического условия, в зависимости от которого будет производиться либо одно, либо другое действие. Думаю, рассказывать как работают функции ЕСЛИ и СЧЁТЕСЛИ не нужно. Условие следующее: если количество слов "да" в столбце О больше, чем номер строки, в которой производится вычисление, то результат ИСТИНА, в противном случае - ЛОЖЬ. Из номера строки также вычитается единичка, потому что изначально формула вводится в ячейку А2 (в А1 шапка таблицы), если бы шапки не было и формула вводилась в А1, то единицу вычитать не нужно.
Допустим, слов "да" будет 2 штуки. Таким образом, получается: ЕСЛИ(2>=1(А2-1=А1).
=ЕСЛИ(СЧЁТЕСЛИ('База дилеров'!$O:$O;"да")>=СТРОКА()-1;...)

2. Если результат вычисления ИСТИНА, происходит вытягивание нужного значения из листа База дилеров с помощью формулы ИНДЕКС. Для этой формулы я использовал два ее аргумента: "массив" - столбец с отображаемыми данными и "номер строки" - т.е. номер ячейки, из которой нужно брать данные. Если массив - это ячейки A$1:A$500, а номер строки 5, то отобразится ячейка A5. Далее, для аргумента "номер строки" используется другая формула - НАИМЕНЬШИЙ, у которой два аргумента: "массив" и "к". Т.е. формула возвращает нужное по счету число. Если ввести формулу =НАИМЕНЬШИЙ({10;20;30;40;50;60;70};2), то она вернет число 20, т.к. оно является вторым наименьшим числом из массива. Если указать вместо двойки цифру 5, то формула вернет 50.
В качества "массива" данной формулы, используется другая формула :) - ЕСЛИ, которая, вводимая как формула массива, возвращает номера всех строк, где есть слово "да". Аргумент "к" - номер текущей строки - 1. Допустим, формула введена в ячейку А3, а количество слов "да" - 8. Формула НАИМЕНЬШИЙ из всех восьми строк, в которых встречается слово "да", выберет вторую наименьшую строку. Вторую - потому что: А3-1=2.
=ЕСЛИ(...;ИНДЕКС('База дилеров'!A$1:A$500;НАИМЕНЬШИЙ(ЕСЛИ('База дилеров'!$O$1:$O$500="да";СТРОКА($1:$500));СТРОКА()-1));...)

3. Теперь вычисляем значение, если первоначально формула ЕСЛИ вернет ЛОЖЬ и количество слов "да" окажется меньше, чем номер текущей строки (-1). Теперь идет аналогичное вычисление, только уже с другим листом. Единственное отличие - теперь во вложенной функции ЕСЛИ производится суммирование слов "да" как из листа База дилеров, так и из База объектов. Если количество слов "да" больше, чем номер строки, то с помощью функции ИНДЕКС вытягивается нужное значение, в противном случае отображается значение "", т.к. пустая ячейка.
=ЕСЛИ(...;ЕСЛИ(СЧЁТЕСЛИ('База объектов'!$I:$I;"да")+СЧЁТЕСЛИ('База дилеров'!$O:$O;"да")>=СТРОКА()-1;...)

надеюсь, все понятно объяснил :)