Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Объединить данные по 14 ячеек вниз с уничтожением дублирующихся записей и ...

Автор shamilganiev, 05.05.2012, 07:37

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

shamilganiev

Объединить данные по 14 ячеек вниз с уничтожением дублирующихся записей и приведением их к виду
"Данные1 & Данные2 & ..."
или
"Данные1, Данные2, ..."

В примере нужно вытащить в другой файл эксель wf_1_fitup.xlsx в ячейку D4 данные из ячеек AA5:AA18, в ячейку D4 в другом листе данные из ячеек AA19:AA32 и так далее. Обращаться буду так: в каждом листе буду указывать ячейку B7, чтобы узнать из какой "четырнадцатки" брать данные.

В результате данного примера, должно получиться следующее:
на первом листе в ячейке D4: "unt-9 s.s. & unt-10 s.s."
на втором листе в ячейке D4: "unt-9 s.s."
на третьем листе в ячейке D4: "unt-10 s.s."

Хотел бы получить функцию на VBA (ну а как ещё? стандартными средствами такое не вытворишь наверно).

Если подобная тема уже где-то обсуждалась, прошу сильно не бить, а перенаправить на ту страницу. Но я поискал как смог, возможно неправильно искал, да и как в поиск запихнуть столько условий необходимых. Вот и решил открыть новую тему.

shamilganiev

P.S.

1) Пустые ячейки не брать в счёт, естественно.

2) Дополнение по поводу обращение через B7.
В этой ячейке могут быть только числа 14*n + 1, так что хотел бы функцию примерно такого вида: Areas(B7), который даёт результатом текстовую строку.

3) Название файла с данными всегда будет такое, как в примере.

Wasilic

Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

shamilganiev

немножко не так... щас, до дома доберусь, объясню... а пока ухожу с работы...

shamilganiev

В общем, данные объединяются правильно.
Я видимо не совсем понятно объяснил в первом посте, но сможете ещё кое что подправить?
1) "...Обращаться буду так: в каждом листе буду указывать ячейку B7..." означает, что я хотел туда вписать формулу, а открывать каждый лист и нажимать кнопку "Обновить" не вариант. (там наверно просто нужно убрать кнопки и сделать формулу vba, чтобы можно было обращаться через знак "=" да?)
2) Пусть путь к файлу wf_0.xlsx будет такой же, как и путь к документу, в котором запущен макрос, а в случае, если его не окажется, откроется диалоговое окно с начальным местоположением "путь к документу, в котором запущен макрос", а при нажатии "Отмена" всё остановится.

Я не слишком замудрил? Просто работать будут люди, совсем не разбирающиеся в "этих ваших компьютерах" и я хочу, чтобы файл wf_1_fitup.xlsx был уже полностью заполнен, когда его открыли.

Wasilic

Ниччё не понял!
Цитата: shamilganiev от 10.05.2012, 10:30
1) "...Обращаться буду так: в каждом листе буду указывать ячейку B7..."
Как указывать ячейку B7?  Где указывать?
В ячейке В7 указан начальный номер записи с которой должен начинаться цикл поиска для каждого листа. Из неё и берется этот номер для макроса.  ???

Цитата: shamilganiev от 10.05.2012, 10:30
1) означает, что я хотел туда вписать формулу,
Куда, туда вписать формулу? Какую формулу?  ???

Цитата: shamilganiev от 10.05.2012, 10:30
чтобы можно было обращаться через знак "=" да?)
Как это понимать?  :-\

Цитата: shamilganiev от 10.05.2012, 10:30
и я хочу, чтобы файл wf_1_fitup.xlsx был уже полностью заполнен, когда его открыли.
Так для чего нужны выше описанные действия, если файл wf_1_fitup.xlsx уже полностью будет заполнен.
В общем – стою на асфальте, в лыжи обутый, то ли лыжи не едут, то ли я ...  ;D
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

shamilganiev

Цитата: Wasilic от 10.05.2012, 15:46
Ниччё не понял!
Цитата: shamilganiev от 10.05.2012, 10:30
1) "...Обращаться буду так: в каждом листе буду указывать ячейку B7..."
Как указывать ячейку B7?  Где указывать?
В ячейке В7 указан начальный номер записи с которой должен начинаться цикл поиска для каждого листа. Из неё и берется этот номер для макроса.  ???
Вот ты в коде сделал процедуру "Обновить" так?
Поставил фигуру и приклеил к ней эту процедуру так?

shamilganiev

Цитата: Wasilic от 10.05.2012, 15:46
Цитата: shamilganiev от 10.05.2012, 10:30
1) означает, что я хотел туда вписать формулу,
Куда, туда вписать формулу? Какую формулу?  ???
В ячейку D4 хочу вписывать формулу типа такого: "=Обновить(B7)", но ты сделал в виде процедуры, поэтому надо вызывать эту процедуру каким-нибудь дополнительным действием.

Wasilic

В общем, как понял так и сделал.
Процедура запускается автоматически при отрытии книги.
Перебираются все существующие листы.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

shamilganiev

А как ты сделал автозагрузку?
Вроде всё работает. Попробую "пустить в производство", только надо подготовить аналогично для другого документа.
Это конечно не так как я хотел, но мне кажется, как я хотел невозможно.

shamilganiev

Ну в принципе я подготовил для другого документа тоже такую же автоподгрузку данных, просто создал копию файла и заменил на нём листы, ну и подправил макрос. отпишусь через несколько дней что получилось.
Но всё равно интересно знать как ты сделал автоподгрузку

Wasilic

Цитата: shamilganiev от 16.05.2012, 13:51
Но всё равно интересно знать как ты сделал автоподгрузку
Процедура  Sub с именем Auto_open() запускается автоматически при открытии книги.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Poltava

не знаю как топик стартер но я мимо такого решения пройти не мог. Я о нем не знал и как раз примерно так задача стала! не могу не поставить +1
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

shamilganiev

а я уже ставил +1 ему. решение хорошее, правда вот запустить в использование никак не могу, не могут найти время на проверку для одобрения, там бы выяснились подводные камни.

shamilganiev

Цитата: Wasilic от 16.05.2012, 21:29
Цитата: shamilganiev от 16.05.2012, 13:51
Но всё равно интересно знать как ты сделал автоподгрузку
Процедура  Sub с именем Auto_open() запускается автоматически при открытии книги.
Прикольно, надо запомнить. Значит если в личной книге макросов будет процедура с таким именем, тогда она будет запускаться при открытии любой книги?