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

Вход

Регистрация

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

 

= Мир MS Excel/Пропуск пустых ячеек в цикле - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Пропуск пустых ячеек в цикле (Формулы/Formulas)
Пропуск пустых ячеек в цикле
yurikfirst Дата: Вторник, 06.11.2018, 04:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Всем добра и счастья.
Буду краток: есть макрос, не могу понять, где и что написать, что бы пропускало пустые ячейки:
[vba]
Код

Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, rc As Range
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            'цикл по всем ячейкам
            For Each rc In arg.Cells
                If result = "" Then
                    result = rc.Value
                Else
                    result = result & Разделитель & rc.Value
                End If
            Next
        End Select
    Next
    ОбъединитьСРазделителем = result
End Function
[/vba]
Спасибо всем


*****Меньше телодвижений - больше времени на отдых*****
 
Ответить
СообщениеЗдравствуйте. Всем добра и счастья.
Буду краток: есть макрос, не могу понять, где и что написать, что бы пропускало пустые ячейки:
[vba]
Код

Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, rc As Range
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            'цикл по всем ячейкам
            For Each rc In arg.Cells
                If result = "" Then
                    result = rc.Value
                Else
                    result = result & Разделитель & rc.Value
                End If
            Next
        End Select
    Next
    ОбъединитьСРазделителем = result
End Function
[/vba]
Спасибо всем

Автор - yurikfirst
Дата добавления - 06.11.2018 в 04:33
krosav4ig Дата: Вторник, 06.11.2018, 06:36 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1698
Репутация: 699 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте [vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, arr As Variant, rc As Variant
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
        Case "Variant()"                 'это массив
            arr = arg
        Case Else
            arr = Array(arg)
        End Select
        'цикл по всем значениям массива
        For Each rc In arr
            If Not IsEmpty(rc) And rc <> "" Then
                result = result & IIf(result <> "", Разделитель, "") & rc
            End If
    Next rc, arg
    ОбъединитьСРазделителем = result
End Function
[/vba]


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Вторник, 06.11.2018, 06:46
 
Ответить
СообщениеЗдравствуйте [vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, arr As Variant, rc As Variant
    For Each arg In Значения
        Select Case TypeName(arg)
        Case "Range"                     'это диапазон
            arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
        Case "Variant()"                 'это массив
            arr = arg
        Case Else
            arr = Array(arg)
        End Select
        'цикл по всем значениям массива
        For Each rc In arr
            If Not IsEmpty(rc) And rc <> "" Then
                result = result & IIf(result <> "", Разделитель, "") & rc
            End If
    Next rc, arg
    ОбъединитьСРазделителем = result
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 06.11.2018 в 06:36
_Boroda_ Дата: Вторник, 06.11.2018, 12:05 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13514
Репутация: 5529 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У krosav4ig правильный полноценный макрос, учитывающий кучу вариантов. Если же только Ваш код доделать, то можно, например, так
[vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, rc As Range
    For Each arg In Значения
        For Each rc In arg.Cells
            If rc <> "" Then
                result = result & Разделитель & rc.Value
            End If
        Next
    Next
    ОбъединитьСРазделителем = Mid(result, Len(Разделитель) + 1)
End Function
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ krosav4ig правильный полноценный макрос, учитывающий кучу вариантов. Если же только Ваш код доделать, то можно, например, так
[vba]
Код
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
    Dim result As String, arg, rc As Range
    For Each arg In Значения
        For Each rc In arg.Cells
            If rc <> "" Then
                result = result & Разделитель & rc.Value
            End If
        Next
    Next
    ОбъединитьСРазделителем = Mid(result, Len(Разделитель) + 1)
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 06.11.2018 в 12:05
yurikfirst Дата: Вторник, 06.11.2018, 14:04 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
krosav4ig, спасибо за оперативный ответ, единственное, что получилось - ячейки объединяются с верху в низ, и переходили в право на следующий столбец и так далее. В изначальном скрипте - ячейки объединяются с лева на право, и по ходу в низ. Однозначно ваш вариант в копилку. Спасибо!


*****Меньше телодвижений - больше времени на отдых*****
 
Ответить
Сообщениеkrosav4ig, спасибо за оперативный ответ, единственное, что получилось - ячейки объединяются с верху в низ, и переходили в право на следующий столбец и так далее. В изначальном скрипте - ячейки объединяются с лева на право, и по ходу в низ. Однозначно ваш вариант в копилку. Спасибо!

Автор - yurikfirst
Дата добавления - 06.11.2018 в 14:04
yurikfirst Дата: Вторник, 06.11.2018, 14:07 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, У вас простое и лаконичное решение! Огромное спасибо!


*****Меньше телодвижений - больше времени на отдых*****
 
Ответить
Сообщение_Boroda_, У вас простое и лаконичное решение! Огромное спасибо!

Автор - yurikfirst
Дата добавления - 06.11.2018 в 14:07
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Пропуск пустых ячеек в цикле (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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