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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2011, 15:43   #1
Mstislav
 
Регистрация: 22.01.2011
Сообщений: 4
По умолчанию Перечисление данных из одного столбца в одну ячейку

в диапазоне A1:A10 первого листа могут быть данные....нужна формула для записи этих данных в ячейку A1 второго листа этой же книги? причем они должны именно перечисляться желательно через запятую или какойнить другой символ ну чтоб отделить одно от другого.
Допустим в ячейке А1 стоит 23 в ячейке А4 стоит 43 в ячейке А10 стоит 56, надо чтоб в ячейке А1 второго листа было записано 23,43,55
И есче все ячейки первого листа обязательно в текстовом формате. Хелпните пожалуйста уже два дня башкой бьюсь
Mstislav вне форума Ответить с цитированием
Старый 22.01.2011, 16:05   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

UDF годится?
Т.к. используется готовая функция, нужно наличие рядом (с любой стороны) столбца с критерием отбора, в данном случае пустого.

P.S. Если данные с пропусками, и в итоге результат вроде
21, , 32, 44
то можно дополнительно использовать стандартную формулу
=ПОДСТАВИТЬ(E1;", ,";",")
в другой ячейке или совместить:
=ПОДСТАВИТЬ(VLOOKUPCOUPLE(A1:B4;2;D 1;1;", ");", ,";",")
Вложения
Тип файла: zip VlookupCouple.zip (9.5 Кб, 118 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.01.2011 в 16:12.
Hugo121 вне форума Ответить с цитированием
Старый 22.01.2011, 16:48   #3
Mstislav
 
Регистрация: 22.01.2011
Сообщений: 4
По умолчанию

не могу понять, в примере пробую все супер все устраивает
создаю свою книгу копирую формулу из примера ошибка
Вложения
Тип файла: zip Книга2.zip (5.5 Кб, 31 просмотров)
Mstislav вне форума Ответить с цитированием
Старый 22.01.2011, 16:54   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Ну и правильно, ошибка. Игорь же написал вам - ЮДФ. Вам надо скопировать еще и макрос из примера Игоря.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 22.01.2011, 17:03   #5
Mstislav
 
Регистрация: 22.01.2011
Сообщений: 4
По умолчанию

Всем большое спасибо
Mstislav вне форума Ответить с цитированием
Старый 22.01.2011, 19:15   #6
Mstislav
 
Регистрация: 22.01.2011
Сообщений: 4
По умолчанию

хм созрел следующий вопрос ... а как сделать так чтоб в эту же ячейку собирались данные из нескольких одинаковых листов допустим сначала все данные с ячеек А1-А10 Листа1 дальше А1-А10 Листа2 и так далее ???
Mstislav вне форума Ответить с цитированием
Старый 23.01.2011, 08:03   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Так, например:
=СЦЕПИТЬ(VLOOKUPCOUPLE(A1:B4;2;D1;1 ;", ");VLOOKUPCOUPLE(Лист2!A1:B10;2;D1; 1;", "))
ну и т.д.
Хотя ИМХО макросом проще бы было. И собирать можно только с выделенных листов.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 23.01.2011 в 08:06.
kuklp вне форума Ответить с цитированием
Старый 23.01.2011, 08:38   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Предлагаю пользовательскую функцию, которая соберет все значения из всех столбцов "A" всех листов. Обратите внимание, что в ней нет циклического перебора ячеек, либо их значений:
Код:
Function Sbor() As String
    Dim ws As Worksheet, s As String, ss As String, a()
    With Application
        .Volatile
        For Each ws In Sheets
            If ws.Columns(1).Text = "" Then
            Else
                a = ws.Range(ws.[A1], ws.Cells(Rows.Count, 1).End(xlUp)).Value
                s = Replace(Join(.Transpose(.Index(a, 0, 1)), ", "), " ,", "")
                If Left$(s, 1) = "," Then s = Right$(s, Len(s) - 2)
                ss = IIf(ss = "", s, ss & ", " & s)
            End If
        Next
    End With: Sbor = ss
End Function
Пример во вложении. Формула в ячейке "D4". Функция - в программном модуле.
При необходимости, можно добавить аргументы функции, которые позволят выбирать требуемые листы и диапазоны для сбора значений.
Вложения
Тип файла: rar Книга1.rar (7.4 Кб, 58 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 23.01.2011 в 08:42. Причина: Добавлено
SAS888 вне форума Ответить с цитированием
Старый 03.04.2014, 10:54   #9
palach-d
Новичок
Джуниор
 
Регистрация: 03.04.2014
Сообщений: 1
По умолчанию

А как можно заставить макрос исключать из перечисления одинаковые результаты. К примеру, если число встречается несколько раз, то оно будет перечислено только один раз.
palach-d вне форума Ответить с цитированием
Старый 03.04.2014, 11:20   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Моя UDF это делает "bydesign", но можно отключить.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных, всё в одну ячейку? Jnas Microsoft Office Excel 4 20.01.2011 08:25
Выбор повторяющихся данных в одну ячейку cerberochek Microsoft Office Excel 16 21.05.2010 13:07
Копирование данных с одного листа на другой по значению первого столбца Lis000iq Microsoft Office Excel 11 07.03.2010 13:34
Транспонирование данных столбца в одну строку начинающий1 БД в Delphi 2 03.08.2009 15:06
Перегнать данные из столбца в одну ячейку KROZORS Microsoft Office Access 2 17.06.2009 17:58