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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 17:27   #1
Alex___
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 59
По умолчанию Как сцепить данные с определенного диапазона ячеек через запятую

Вопрос!
В листе 1 есть столбец с фиксированным диапазоном в 59 ячеек, в этом столбце есть заполненные ячейки и пустые, как сделать так чтобы формула склеивала значения через запятую ячеек с данными, а пустые ячейки игнорировались

Спасибо.

Последний раз редактировалось Alex___; 21.01.2013 в 18:36.
Alex___ вне форума Ответить с цитированием
Старый 21.01.2013, 18:45   #2
МаркИza
Новичок
Джуниор
 
Регистрация: 09.02.2011
Сообщений: 1
По умолчанию

Могу посоветовать пользовательскую функцию, чтобы убрать дублирующие ", ," по пустым ячейкам используйте функцию =ПОДСТАВИТЬ(СЦЕПИТЬВСЕ(A6:A10);", ,";",")

Макрос:
Function СЦЕПИТЬВСЕ(Диапазон As Range, Optional Разделитель As String = ", ")
tmp = Application.Transpose(Диапазон)
СЦЕПИТЬВСЕ = Join(tmp, Разделитель)
End Function

Либо используйте макрос с условием, у меня потребовался доп.столбце для определения, что ячейка не пуста:
Function ConcatIf(ByVal compareRange As Range, ByVal xCriteria As Variant, _
Optional ByVal stringsRange As Range, Optional Delimiter As String) As String
Dim i As Long, j As Long, criteriaMet As Boolean

Set compareRange = Application.Intersect(compareRange, _
compareRange.Parent.UsedRange)

If compareRange Is Nothing Then Exit Function
If stringsRange Is Nothing Then Set stringsRange = compareRange
Set stringsRange = compareRange.Offset(stringsRange.Ro w - compareRange.Row, _
stringsRange.Column - compareRange.Column)

For i = 1 To compareRange.Rows.Count
For j = 1 To compareRange.Columns.Count
If (Application.CountIf(compareRange.C ells(i, j), xCriteria) = 1) Then
ConcatIf = ConcatIf & Delimiter & CStr(stringsRange.Cells(i, j))
End If
Next j
Next i
ConcatIf = Mid(ConcatIf, Len(Delimiter) + 1)
End Function

..
Упоминалось здесь http://www.programmersforum.ru/showthread.php?t=66389
МаркИza вне форума Ответить с цитированием
Старый 21.01.2013, 20:22   #3
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Ещё пара функций
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 21.01.2013, 20:54   #4
Alex___
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 59
По умолчанию

Спасибо за ответы, но я чайник в этом и единственное, что я смог это скопировать формулу но она пишет ИМЯ? ....в макрос подставить диапазон не знаю куда ..... в моем случае диапазон такой: 'Y '!I10:I59 не подскажете как тогда будет выглядет макрос? или формула с моими значениями?
Alex___ вне форума Ответить с цитированием
Старый 21.01.2013, 20:57   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

на сайте автора функции СцепитьЕсли, ниже самого кода функции, описано как и что со всем этим делать.
Почитайте
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 21.01.2013, 23:42   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Можно и формулами листа, но с использованием доп. столбца. Этот столбец можно скрыть и сделать ссылку на верхнюю ячейку столбца:
Вложения
Тип файла: rar конкатенация непустых формулой.rar (3.9 Кб, 75 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 21.01.2013 в 23:56.
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringList. Вывод списка через запятую(знак , ) Человек_Борща Общие вопросы Delphi 7 25.05.2012 16:50
Дублирование ячеек, диапазона ячеек на новом листе ukrman Microsoft Office Excel 2 03.02.2012 01:06
Как добавить сразу несколько ячеек к каждой ячейке некоего диапазона? eugenerud Microsoft Office Excel 20 24.07.2009 19:18
как сцепить несколько ячеек чтобы сохранилось выделение цветом или жирным шрифтом gribkow Microsoft Office Excel 7 23.04.2008 09:27