Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Объединение ячеек из разных листов в один столбец - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Объединение ячеек из разных листов в один столбец
An9el Дата: Понедельник, 25.03.2013, 23:13 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте!
Сразу прошу прощения за может быть похожую тему в других топиках.
Суть проблемы:
Как объединить данные из ячеек (столбец А) из нескольких листов одной книги в один столбец на новом листе?
Число строк в разных листах разное. Число листов в книге тоже может меняться.
Желательно вариант с формулами. Если это неприменимо в принципе, тогда подойдет и макрос.

К сообщению приложен файл: primer.xls (20.5 Kb)


Сообщение отредактировал An9el - Понедельник, 25.03.2013, 23:15
 
Ответить
СообщениеЗдравствуйте!
Сразу прошу прощения за может быть похожую тему в других топиках.
Суть проблемы:
Как объединить данные из ячеек (столбец А) из нескольких листов одной книги в один столбец на новом листе?
Число строк в разных листах разное. Число листов в книге тоже может меняться.
Желательно вариант с формулами. Если это неприменимо в принципе, тогда подойдет и макрос.


Автор - An9el
Дата добавления - 25.03.2013 в 23:13
KuklP Дата: Понедельник, 25.03.2013, 23:28 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В модуль общего листа:
[vba]
Код
Public Sub www()
     Dim sh As Worksheet
     For Each sh In Worksheets
         If Not sh Is Me Then _
            sh.Range(sh.[a1], sh.Cells(Rows.Count, 1).End(xlUp)).Copy _
            Me.Cells(Rows.Count, 1).End(xlUp)(2)
     Next
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВ модуль общего листа:
[vba]
Код
Public Sub www()
     Dim sh As Worksheet
     For Each sh In Worksheets
         If Not sh Is Me Then _
            sh.Range(sh.[a1], sh.Cells(Rows.Count, 1).End(xlUp)).Copy _
            Me.Cells(Rows.Count, 1).End(xlUp)(2)
     Next
End Sub
[/vba]

Автор - KuklP
Дата добавления - 25.03.2013 в 23:28
AlexM Дата: Понедельник, 25.03.2013, 23:46 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Sub Macros()
Dim Arr, MyArr() As String
Dim i As Long, j As Long, n As Long
For i = 3 To Sheets.Count
     iRow = Sheets(i).Range("A1").End(xlDown).Row
     Arr = Sheets(i).Range("A1:A" & iRow)
     For j = 1 To UBound(Arr)
         ReDim Preserve MyArr(1 To 1, 0 To n)
         MyArr(1, n) = Arr(j, 1): n = n + 1
     Next j
Next
Sheets(1).Range("A1").Resize(n, 1) = Application.Transpose(MyArr)
End Sub
[/vba]
К сообщению приложен файл: 9633481.xls (47.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение[vba]
Код
Sub Macros()
Dim Arr, MyArr() As String
Dim i As Long, j As Long, n As Long
For i = 3 To Sheets.Count
     iRow = Sheets(i).Range("A1").End(xlDown).Row
     Arr = Sheets(i).Range("A1:A" & iRow)
     For j = 1 To UBound(Arr)
         ReDim Preserve MyArr(1 To 1, 0 To n)
         MyArr(1, n) = Arr(j, 1): n = n + 1
     Next j
Next
Sheets(1).Range("A1").Resize(n, 1) = Application.Transpose(MyArr)
End Sub
[/vba]

Автор - AlexM
Дата добавления - 25.03.2013 в 23:46
An9el Дата: Понедельник, 25.03.2013, 23:47 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

KuklP, я так понимаю тут надо чегото поправить, так как не работает.
Я с макросами недружу cry
 
Ответить
СообщениеKuklP, я так понимаю тут надо чегото поправить, так как не работает.
Я с макросами недружу cry

Автор - An9el
Дата добавления - 25.03.2013 в 23:47
KuklP Дата: Понедельник, 25.03.2013, 23:50 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Прокладку между стулом и монитором biggrin
К сообщению приложен файл: 0553523.xls (39.0 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПрокладку между стулом и монитором biggrin

Автор - KuklP
Дата добавления - 25.03.2013 в 23:50
An9el Дата: Понедельник, 25.03.2013, 23:54 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

AlexM, Ваш вариант подходит

Огромное
И тогда еще вопросик. Этот макрос будет работать с любым количеством листов?
И как перенести кнопочку с макросом в другую книгу?
 
Ответить
СообщениеAlexM, Ваш вариант подходит

Огромное
И тогда еще вопросик. Этот макрос будет работать с любым количеством листов?
И как перенести кнопочку с макросом в другую книгу?

Автор - An9el
Дата добавления - 25.03.2013 в 23:54
KuklP Дата: Понедельник, 25.03.2013, 23:55 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Алекс, у Transpose есть ограничение в 65535 строк. Причем даже в новых версиях.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеАлекс, у Transpose есть ограничение в 65535 строк. Причем даже в новых версиях.

Автор - KuklP
Дата добавления - 25.03.2013 в 23:55
AlexM Дата: Вторник, 26.03.2013, 00:00 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (An9el)
макрос будет работать с любым количеством листов

Да, с любым.
В первый лист данные собираются.
В коде i=3, то значит что собирать данные начинаем с третьего листа.
Если второй лист с примером убрать, то измените i=2
Макрос переносите в модуль проекта VBA?
Кнопку делаете или копируете и назначаете ей макрос или запускаете макрос Alt+F8 выбираете макрос, нажать выполнить.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Вторник, 26.03.2013, 00:04
 
Ответить
Сообщение
Цитата (An9el)
макрос будет работать с любым количеством листов

Да, с любым.
В первый лист данные собираются.
В коде i=3, то значит что собирать данные начинаем с третьего листа.
Если второй лист с примером убрать, то измените i=2
Макрос переносите в модуль проекта VBA?
Кнопку делаете или копируете и назначаете ей макрос или запускаете макрос Alt+F8 выбираете макрос, нажать выполнить.

Автор - AlexM
Дата добавления - 26.03.2013 в 00:00
AlexM Дата: Вторник, 26.03.2013, 00:02 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (KuklP)
у Transpose есть ограничение в 65535 строк

Спасибо учту. Для моего Excel2003 должно хватить. smile



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (KuklP)
у Transpose есть ограничение в 65535 строк

Спасибо учту. Для моего Excel2003 должно хватить. smile

Автор - AlexM
Дата добавления - 26.03.2013 в 00:02
An9el Дата: Вторник, 26.03.2013, 00:13 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

AlexM,
Цитата (AlexM)
Спасибо учту. Для моего Excel2003 должно хватить.


Для моего тоже biggrin
Спасибо за помощь notworthy
 
Ответить
СообщениеAlexM,
Цитата (AlexM)
Спасибо учту. Для моего Excel2003 должно хватить.


Для моего тоже biggrin
Спасибо за помощь notworthy

Автор - An9el
Дата добавления - 26.03.2013 в 00:13
An9el Дата: Вторник, 26.03.2013, 11:10 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

И всетаки, макрос это хорошо, но можно ли решить эту задачу с помосчью формул? oops
Знатоки формул, что скажете?
smile
 
Ответить
СообщениеИ всетаки, макрос это хорошо, но можно ли решить эту задачу с помосчью формул? oops
Знатоки формул, что скажете?
smile

Автор - An9el
Дата добавления - 26.03.2013 в 11:10
An9el Дата: Вторник, 26.03.2013, 17:21 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

AlexM, здравствуйте
Цитата (AlexM)
Да, с любым.
В первый лист данные собираются.
В коде i=3, то значит что собирать данные начинаем с третьего листа.
Если второй лист с примером убрать, то измените i=2
Макрос переносите в модуль проекта VBA?
Кнопку делаете или копируете и назначаете ей макрос или запускаете макрос Alt+F8 выбираете макрос, нажать выполнить.


Простите за беспокойство. wacko
Обнаружилась ошибка. При вставке пустого листа или не заполнены хотя бы 2 строчки, макрос выдает ошибку Runitime error '13':
Type maismatch
и в макросе подсвечивает строчку
Sheets(1).Range("A1").Resize(n, 1) = Application.Transpose(MyArr)

С пустим листом как бы понятно (это пока не критично), а вот если в столбце на листе нет данных хотя бы в 2 строчках это не совсем гут. так как может быть заполнена только одна ячейка в столбце или совсем пустой.
Если с пустым листом сложно, то помогите решить хотя бы с листами в которых только одна строчка.
 
Ответить
СообщениеAlexM, здравствуйте
Цитата (AlexM)
Да, с любым.
В первый лист данные собираются.
В коде i=3, то значит что собирать данные начинаем с третьего листа.
Если второй лист с примером убрать, то измените i=2
Макрос переносите в модуль проекта VBA?
Кнопку делаете или копируете и назначаете ей макрос или запускаете макрос Alt+F8 выбираете макрос, нажать выполнить.


Простите за беспокойство. wacko
Обнаружилась ошибка. При вставке пустого листа или не заполнены хотя бы 2 строчки, макрос выдает ошибку Runitime error '13':
Type maismatch
и в макросе подсвечивает строчку
Sheets(1).Range("A1").Resize(n, 1) = Application.Transpose(MyArr)

С пустим листом как бы понятно (это пока не критично), а вот если в столбце на листе нет данных хотя бы в 2 строчках это не совсем гут. так как может быть заполнена только одна ячейка в столбце или совсем пустой.
Если с пустым листом сложно, то помогите решить хотя бы с листами в которых только одна строчка.

Автор - An9el
Дата добавления - 26.03.2013 в 17:21
KuklP Дата: Вторник, 26.03.2013, 17:26 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
cool А мой работает и с пустыми и с одной строкой.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщениеcool А мой работает и с пустыми и с одной строкой.

Автор - KuklP
Дата добавления - 26.03.2013 в 17:26
An9el Дата: Вторник, 26.03.2013, 17:34 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

KuklP,
Цитата (KuklP)
cool А мой работает и с пустыми и с одной строкой.


Да ваш работает, только при следующем нажатии на кнопку, макрос не перечитывает листы а тупо добавляет те же данные wacko

Тоесть задваивает, затраивает и т.д. в зависимости от того сколько раз нажал на кнопку(запустил макрос)


Сообщение отредактировал An9el - Вторник, 26.03.2013, 17:39
 
Ответить
СообщениеKuklP,
Цитата (KuklP)
cool А мой работает и с пустыми и с одной строкой.


Да ваш работает, только при следующем нажатии на кнопку, макрос не перечитывает листы а тупо добавляет те же данные wacko

Тоесть задваивает, затраивает и т.д. в зависимости от того сколько раз нажал на кнопку(запустил макрос)

Автор - An9el
Дата добавления - 26.03.2013 в 17:34
KuklP Дата: Вторник, 26.03.2013, 17:41 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Цитата (An9el)
тупо добавляет
Кто мешает тупо добавить строку очистки диапазона? Кстати, макрос Алекса тоже диапазон не чистит, поэтому, если к-во данных уменьшится по каким-то причинам, то останутся хвосты от прошлой работы. Но Вы ведь не научиться чему-то сюда пришли, а тупо получить готовое решение, пальцем не шевельнув. Для этого есть раздел Работа. [Удалено администрацией] tongue


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Цитата (An9el)
тупо добавляет
Кто мешает тупо добавить строку очистки диапазона? Кстати, макрос Алекса тоже диапазон не чистит, поэтому, если к-во данных уменьшится по каким-то причинам, то останутся хвосты от прошлой работы. Но Вы ведь не научиться чему-то сюда пришли, а тупо получить готовое решение, пальцем не шевельнув. Для этого есть раздел Работа. [Удалено администрацией] tongue

Автор - KuklP
Дата добавления - 26.03.2013 в 17:41
An9el Дата: Вторник, 26.03.2013, 19:21 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

KuklP,
яж не говорю дайте готовий макрос
Скажите код строчки для очистки диапазона, я вставлю cry
 
Ответить
СообщениеKuklP,
яж не говорю дайте готовий макрос
Скажите код строчки для очистки диапазона, я вставлю cry

Автор - An9el
Дата добавления - 26.03.2013 в 19:21
AlexM Дата: Вторник, 26.03.2013, 19:36 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Перед строкой с For, кода KuklP, вставить строку
[vba]
Код
Columns(1).ClearContents
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Вторник, 26.03.2013, 19:37
 
Ответить
СообщениеПеред строкой с For, кода KuklP, вставить строку
[vba]
Код
Columns(1).ClearContents
[/vba]

Автор - AlexM
Дата добавления - 26.03.2013 в 19:36
An9el Дата: Вторник, 26.03.2013, 20:02 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

AlexM,
Спасибо beer
 
Ответить
СообщениеAlexM,
Спасибо beer

Автор - An9el
Дата добавления - 26.03.2013 в 20:02
ALV Дата: Понедельник, 16.09.2013, 17:50 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM,
Вопрос по Вашему коду, как сказал An9el, есть ошибка. Если между листами с данными попадает лист без данных или с не заполненными хотя бы 2 строчками, макрос не собирает информацию с последующих листов с данными.
Как с этим бороться? :(
 
Ответить
СообщениеAlexM,
Вопрос по Вашему коду, как сказал An9el, есть ошибка. Если между листами с данными попадает лист без данных или с не заполненными хотя бы 2 строчками, макрос не собирает информацию с последующих листов с данными.
Как с этим бороться? :(

Автор - ALV
Дата добавления - 16.09.2013 в 17:50
ShAM Дата: Вторник, 17.09.2013, 04:02 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Как с этим бороться?

Использовать код от Kuklp. :)
 
Ответить
Сообщение
Как с этим бороться?

Использовать код от Kuklp. :)

Автор - ShAM
Дата добавления - 17.09.2013 в 04:02
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!