|
объединение таблиц
|
|||
---|---|---|---|
#18+
как бы формулой, без макросов, получить таблицу объединенную из нескольких. количество строк заранее неизвестно. таблица 1 наименование количествострока 1 столбец 1 321строка 2 столбец 1 901строка 3 столбец 1 217строка 4 столбец 1 1013строка 5 столбец 1 113строка 6 столбец 1 1313строка 7 столбец 1 630строка 8 столбец 1 1554строка 9 столбец 1 1410таблица 2наименование количествострока 1 столбец 3 1714строка 2 столбец 3 653строка 3 столбец 3 1941строка 4 столбец 3 792строка 5 столбец 3 1021строка 6 столбец 3 1121результат наименование количествострока 1 столбец 1 321строка 2 столбец 1 901строка 3 столбец 1 217строка 4 столбец 1 1013строка 5 столбец 1 113строка 6 столбец 1 1313строка 7 столбец 1 630строка 8 столбец 1 1554строка 9 столбец 1 1410строка 1 столбец 3 1714строка 2 столбец 3 653строка 3 столбец 3 1941строка 4 столбец 3 792строка 5 столбец 3 1021строка 6 столбец 3 1121 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 20:50 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Можно вот так или внутренним запросом, тоже вариант. А для чего вам это нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 00:19 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
объединяемых таблиц будет больше, поэтому хочется большей автоматизации. а можно создать для формулы индекс такие массивы? =индекс((A:A;C:C; и т.д.);строка;;область) строка = {1:2:3:4:5:6:7:8:9:1:2:3:4:5:6: и т.д.} область={1:1:1:1:1:1:1:1:1:2:2:2:2:2:2: и т.д.} ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 13:52 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731объединяемых таблиц будет больше, поэтому хочется большей автоматизации. а можно создать для формулы индекс такие массивы? =индекс((A:A;C:C; и т.д.);строка;;область) строка = {1:2:3:4:5:6:7:8:9:1:2:3:4:5:6: и т.д.} область={1:1:1:1:1:1:1:1:1:2:2:2:2:2:2: и т.д.} Вы бы взяли, да и сами попробовали. Тем же формулами, что в моем примере, можно и больше кстати, если приложить усилия. А для большей автоматизации либо VBA, либо внутренним запросом. А если формулами извращаться, то вы на неправильном пути. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 16:53 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
выполнение запроса дает, как я понимаю, статический результат, а нужна динамика. макросы создают дополнительные неудобства с их обслуживанием. поэтому унифицированное решение задачи (формулами) предпочтительнее, если оно возможно. способов как развернуть двумерный массив в одномерный или объединить несколько массивов я не смог найти, может быть, есть еще какие-нибудь пути решения моей задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 18:04 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731выполнение запроса дает, как я понимаю, статический результат, а нужна динамика. макросы создают дополнительные неудобства с их обслуживанием. поэтому унифицированное решение задачи (формулами) предпочтительнее, если оно возможно. способов как развернуть двумерный массив в одномерный или объединить несколько массивов я не смог найти, может быть, есть еще какие-нибудь пути решения моей задачи? Запрос дает вполне себе динамический результат. Жизнь сама по себе создает неудобства с ее обслуживанием, но если хочешь жить - умей вертеться. Чем не устраивает предложенный вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 18:32 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
все же запрос не дает динамики, обновление происходит после нажатия на кнопку Обновить, или в полуавтоматическом режиме, через заданные интервалы времени, в минутах. предложенный вариант работает, только его сложно распространить на большее количество таблиц, в результате - высокая вероятность допустить ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 19:13 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
"Высокая вероятность допустить ошибку" - как раз при использовании формул, работы с массивами/диапазонами на листе и т.п. Как раз использование VBA - быстрый и правильный вариант. А если можно поменять исходную структуру данных (например, разнести таблицы на отдельные листы) - то и вообще... Ну и по динамике - можно ведь запускать макрос обновления и при любом изменении в данных - для этого надо его подвесить не только на кнопку, но и на событие Worksheet_Change() или Workbook_SheetChange() ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 19:46 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
AndreTM"Высокая вероятность допустить ошибку" - как раз при использовании формул, работы с массивами/диапазонами на листе и т.п. Как раз использование VBA - быстрый и правильный вариант. А если можно поменять исходную структуру данных (например, разнести таблицы на отдельные листы) - то и вообще... Ну и по динамике - можно ведь запускать макрос обновления и при любом изменении в данных - для этого надо его подвесить не только на кнопку, но и на событие Worksheet_Change() или Workbook_SheetChange() +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 19:54 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731 - у вас какой-то ограниченный подход к задаче... вы говорите, что у вас кол-во таблиц, стоящих в ряд на одном листе заранее не известно. как я понимаю, массив растет вправо путем ручного добавления таблиц на лист. а зачем? почему не добавить их вниз, если структура одинакова... что в исходниках? может там, напимер, файлы txt. тогда пишите запрос на VB, юзайте sql. это проще, чем кажется. если структура однородна, sql-запрос - это самый верняк. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 10:47 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
AndreTM...использование VBA - быстрый и правильный вариант... Это для тех кто знает VBA А для тех кто разбирается в Excel - быстро и правильно использовать инструменты Excel А если ещё и макросы запрещены, политикой предприятия, например :) AndreTM...разнести таблицы на отдельные листы... AndreTM , не узнаю тебя... Разнести таблицы на отдельные листы - это первая (одна из) ошибка начинающих пользователей Как ты можешь советовать остальным делать её?! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 11:29 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Serge 007 AndreTM , не узнаю тебя... Разнести таблицы на отдельные листы - это первая (одна из) ошибка начинающих пользователей Как ты можешь советовать остальным делать её?!А я образец файла и не смотрел... В приведённом виде - да, однотипную инфу сливать удобнее на один лист, только ещё завести дополнительное поле-столбец с номером таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 12:42 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
вот такая задача встала на пути. =ИНДЕКС(($A$3:$A$19;$C$3:$C$19;$E$3:$E$19);{1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:1:2:3:4:5:6};1;{1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:2:3:3:3:3:3:3:3:3:3:3:3:3:3:3:3:3:3:3:4:4:4:4:4:4}) если ввести эту формулу массива в несколько ячеек, то она работает. а как получить те же результаты массивом в одной ячейке? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 17:56 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Serge 007AndreTM...использование VBA - быстрый и правильный вариант... Это для тех кто знает VBA А для тех кто разбирается в Excel - быстро и правильно использовать инструменты Excel Общее и для тех и для других - для решения каждой задачи необходимо использовать подходящий для решения именно этой задачи инструмент. В данном случае инструмент (Excel) выбран неверно. Отсюда и сложности. И совет AndreTM - это имхо наиболее правильное решение. Есть ещё неплохое решение - импорт данных в Access и обработка там, при необходимости экспорт результатов обратно в Excel. Конечно, если ты не настаиваешь на том, что полностью твой тезис таков: "Это для тех кто знает VBA. А для тех кто разбирается в Excel - быстро и правильно использовать инструменты Excel, и ни при каких обстоятельствах не пытаться освоить VBA." ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 18:10 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Но уж если ОЧЕНЬ упёрлось обойтись формулами - вот черновой вариант. Его можно "растянуть" и на несколько таблиц - просто добавляя соответствующие подсчёты и ветвления. Также можно добавить проверку на то, что выбраны данные всех таблиц, и выводить там пустую строку (сейчас выведется ноль). Но это извращение чистой воды. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 18:31 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
вот файл с рабочим вариантом, чтобы было понятно направление поисков. получается решение с одним вспомогательным столбцом и простым расширением количества таблиц, но с рядом ограничений. от вспомогательных таблиц нужно избавится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 19:40 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
AkinaВ данном случае инструмент (Excel) выбран неверно. Согласен. Но если уж выбрали этот инструмент, то надо подстраиваться под его возможности. Объеденив две таблицы в одну, мы легко решаем поставленную задачу средствами Excel Akinaсовет AndreTM - это наиболее правильное решение Не то что неправильное, а я бы сказал даже вредное, тем более что решением средствами Excel это назвать нельзя. Форум ведь и новички читают и когда они видят подобный совет от форумчанина с кол-вом постов более 5000 - они принимают его. А потом начинают сыпать темами типа "Как собрать/просуммировать/упорядочить данные с разных листов?" Akinaи ни при каких обстоятельствах не пытаться освоить VBA А вот это каждый сам для себя решает Лично мне, в жизни, при работе с МОИМИ файлами, НИ РАЗУ не понадобилось применять макросы Использую их (макросы) только исправляя ошибки в архитектуре данных ЧУЖИХ файлов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 10:44 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Serge 007Akinaсовет AndreTM - это наиболее правильное решение Не то что неправильное, а я бы сказал даже вредное, тем более что решением средствами Excel это назвать нельзя. Форум ведь и новички читают и когда они видят подобный совет от форумчанина с кол-вом постов более 5000 - они принимают его. А потом начинают сыпать темами типа "Как собрать/просуммировать/упорядочить данные с разных листов?" Я имел в виду только ту часть ответа, где предлагается использовать VBA - на нём легко и непринуждённо строится процедура копирования данных из нескольких диапазонов на один лист. Немного сложнее - функция для использования слияния на лист, но тоже не очень сложно (правда, при большом количестве данных тормозить будет нещадно, так что это менее удачный вариант). И ни в коем случае я не имел в виду ту часть, где говорится о разнесении данных по листам. Собственно именно этот вопрос - "Как собрать/просуммировать/упорядочить данные с разных листов?" - мы и имеем. Какая разница, разные листы или разные диапазоны на одном листе? понятно, что избавиться от геморроя, вырастив его в другом месте, не получится... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 10:59 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
AkinaЯ имел в виду только ту часть ответа, где предлагается использовать VBA В таком случае - согласен на 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:17 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731вот файл с рабочим вариантом, чтобы было понятно направление поисков. получается решение с одним вспомогательным столбцом и простым расширением количества таблиц, но с рядом ограничений. от вспомогательных таблиц нужно избавиться. кажется, что проблема непреодолима, есть какие-нибудь толковые соображения? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:35 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Толковых соображений тут предостаточно. Только Вы их все игнорируете и упыристо гнёте свою линию... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:09 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
гнёте свою линию... разумеется, да )) Толковых соображений тут предостаточно. ... их все игнорируете хотелось бы увидеть их, кроме пространственных рассуждений на отвлеченные темы ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:35 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731хотелось бы увидеть их Глаза откройте и почитайте посты выше AndreTM, Akina и мои По теме разжевано абсолютно всё и должно быть понятно даже ВАМ и остальным танкистам Решения тоже предложены. Что ещё надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:42 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Serge 007Глаза откройте и почитайте ... Что ещё надо? прочитал, теперь вам тоже предлагаю перечитать вопросы. тогда может будет больше дела, меньше демагогии. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:17 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
===========Решение 1============== lbppbвнутренним запросом ===========Решение 2============== lbppbдля большей автоматизации либо VBA AndreTMиспользование VBA - быстрый и правильный вариант Akinaстроится процедура копирования данных из нескольких диапазонов на один лист. Немного сложнее - функция для использования слияния на лист, но тоже не очень сложно (правда, при большом количестве данных тормозить будет нещадно, так что это менее удачный вариант) ===========Решение 3============== Akinaнеплохое решение - импорт данных в Access и обработка там, при необходимости экспорт результатов обратно в Excel. ========================= Всё это - РЕШЕНИЯ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:22 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731Serge 007Глаза откройте и почитайте ... Что ещё надо? прочитал, теперь вам тоже предлагаю перечитать вопросы. тогда может будет больше дела, меньше демагогии. В вашем случае есть только решение, которое подойдет идеально. Вам нужна волшебная палочка. Но тут вам с этим не помогут. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:23 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731, Вы не ответили на вопрос. Так что надо-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:26 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
получается, что стандартными формулами, без sql и vba, получить объединение нельзя? но очевидно, что это не так, несколько вариантов решений смотри выше. все не без недостатков, о чем было сказано. вопрос в том, как эти недостатки устранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:34 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731, В исходном варианте - "объединить несколько имеющихся диапазонов данных в один" - решение формулами существует и может использоваться. А вот в варианте "далее мы будем изменять исходные диапазоны, а также добавлять новые и удалять существующие" - решение формулами листа становится либо сложным, либо неэффективным (объем кода+скорость), либо вообще неприменимым. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 15:52 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731получается, что стандартными формулами, без sql и vba, получить объединение нельзя? но очевидно, что это не такОчевидно, что это ТАК. Получить объединение формулами можно лишь для очень ограниченного количества областей. А в большинстве случаев - так и вовсе строго фиксированного, изменение количества областей потребует корректировки формул. box731несколько вариантов решений смотри вышеВсё это - частные решения. То есть не более чем костыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 16:05 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
костыли - когда начинает не хватает стандартных инструментов. на практике мы только и сталкиваемся с частными решениями. и они всегда компромиссные, так как у каждого достоинства есть свой недостаток. делаем лучше одно - ухудшаем другое, нужно не забывать об этом. речь идет об объединении около десятка таблиц с несколькими десятками строк с динамическими результатами, что удобно решить унифицированными средствами, без мешающих костылей с наворотом разных технологий. файлов, где это будет использоваться много, удобнее использовать обычные формулы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 15:19 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
box731костыли - когда начинает не хватает стандартных инструментов box731удобно решить унифицированными средствами VBA - стандартный унифицированный инструмент офисного (и не только) приложения. box731где это будет использоваться много, удобнее использовать обычные формулы. Нет, блин, тебе на самом деле всё ещё мало того, что твоё "удобное использование" уже переползло на вторую страницу, и решения до сих пор не видать? и на третьей странице его тоже не будет... А делалось бы на VBA - уже на первой странице было получено готовое решение, и базар бы шёл разве что об интерфейсе и оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 16:17 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Мне кажется или ТС пытается доказать, что мы тут дураки? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 19:35 |
|
объединение таблиц
|
|||
---|---|---|---|
#18+
Нет... он просто выбрал определённый путь решения, и теперь немножко злится, что ему указывают на явную неоптимальность, он не может в ответ придумать вменяемых аргументов в пользу своего выбора, а мы никак не угомонимся со своими нравоучениями... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 21:44 |
|
|
start [/forum/topic.php?all=1&fid=61&tid=2175010]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 175ms |
0 / 0 |