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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение ячеек по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Объединение ячеек по условию (Формулы/Formulas)
Объединение ячеек по условию
AVI Дата: Вторник, 20.09.2016, 08:38 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
Мне было необходимо объединить ячейки по условию.
Нашел макрос. Он работает наура. А можно сделать то же самое только формулами?
Сам макрос
[vba]
Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String)
    Dim Delimeter As String, i As Long
    Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
     
    'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
    If SearchRange.Count <> TextRange.Count Then
        MergeIf = CVErr(xlErrRef)
        Exit Function
    End If
     
    'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText
    For i = 1 To SearchRange.Cells.Count
        If SearchRange.Cells(i) Like Condition And Len(TextRange.Cells(i))>0 Then OutText = OutText & TextRange.Cells(i) & Delimeter
    Next i
     
    'выводим результаты без последнего разделителя
    MergeIf = Left(OutText, Len(OutText) - Len(Delimeter))
End Function
[/vba]

[p.s.]в тот раздел вопрос задал?
К сообщению приложен файл: 4469521.xlsm (20.7 Kb)


Сообщение отредактировал AVI - Вторник, 20.09.2016, 08:57
 
Ответить
СообщениеДобрый день!
Мне было необходимо объединить ячейки по условию.
Нашел макрос. Он работает наура. А можно сделать то же самое только формулами?
Сам макрос
[vba]
Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String)
    Dim Delimeter As String, i As Long
    Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
     
    'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
    If SearchRange.Count <> TextRange.Count Then
        MergeIf = CVErr(xlErrRef)
        Exit Function
    End If
     
    'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText
    For i = 1 To SearchRange.Cells.Count
        If SearchRange.Cells(i) Like Condition And Len(TextRange.Cells(i))>0 Then OutText = OutText & TextRange.Cells(i) & Delimeter
    Next i
     
    'выводим результаты без последнего разделителя
    MergeIf = Left(OutText, Len(OutText) - Len(Delimeter))
End Function
[/vba]

[p.s.]в тот раздел вопрос задал?

Автор - AVI
Дата добавления - 20.09.2016 в 08:38
buchlotnik Дата: Вторник, 20.09.2016, 08:58 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
можно, но это геморойнее (сцепляем в столбце P, и потом фильтр непустых по столбцу O)
К сообщению приложен файл: 6725760.xlsm (21.2 Kb)


Сообщение отредактировал buchlotnik - Вторник, 20.09.2016, 08:59
 
Ответить
Сообщениеможно, но это геморойнее (сцепляем в столбце P, и потом фильтр непустых по столбцу O)

Автор - buchlotnik
Дата добавления - 20.09.2016 в 08:58
AVI Дата: Вторник, 20.09.2016, 09:08 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
buchlotnik, Я раньше примерно так и делал, но получалось страшно.
 
Ответить
Сообщениеbuchlotnik, Я раньше примерно так и делал, но получалось страшно.

Автор - AVI
Дата добавления - 20.09.2016 в 09:08
_Boroda_ Дата: Вторник, 20.09.2016, 09:17 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант
Формула похожа, да не совсем.
И еще условное форматирование.
Фильтровать ничего не нужно.
К сообщению приложен файл: 4469521_1.xlsm (19.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант
Формула похожа, да не совсем.
И еще условное форматирование.
Фильтровать ничего не нужно.

Автор - _Boroda_
Дата добавления - 20.09.2016 в 09:17
AVI Дата: Вторник, 20.09.2016, 12:29 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Дело в том, что их может быть как 1 так и 10. И могут идти не по порядку.
 
Ответить
СообщениеДело в том, что их может быть как 1 так и 10. И могут идти не по порядку.

Автор - AVI
Дата добавления - 20.09.2016 в 12:29
_Boroda_ Дата: Вторник, 20.09.2016, 12:32 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так приложите пример, соответсвующий реальным данным


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак приложите пример, соответсвующий реальным данным

Автор - _Boroda_
Дата добавления - 20.09.2016 в 12:32
AVI Дата: Вторник, 27.09.2016, 16:48 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, да, простите
К сообщению приложен файл: 9437113.xlsm (27.7 Kb)


Сообщение отредактировал AVI - Вторник, 27.09.2016, 16:49
 
Ответить
Сообщение_Boroda_, да, простите

Автор - AVI
Дата добавления - 27.09.2016 в 16:48
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Объединение ячеек по условию (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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