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

Вход

Регистрация

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

 

= Мир MS Excel/Выделенный диапазон А1:D300 вставить в одну ячейку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделенный диапазон А1:D300 вставить в одну ячейку (Макросы/Sub)
Выделенный диапазон А1:D300 вставить в одну ячейку
pirat_m Дата: Понедельник, 11.01.2016, 14:36 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте Уважаемые Форумчане!

Требуется вставить выделенный диапазон, к примеру А1:D300, в одну ячейку, а также убрать лишние пробелы в тексте.

Как должен выглядеть пример после обработки таким макросом:
"
TextA TextB TextD

TextA
TextA TextB TextC
TextA TextD

TextA TextC

TextA TextB
"

PS: Пример прикреплен.
Заранее Благодарю Вас.
К сообщению приложен файл: 6887296.xlsx(9Kb)
 
Ответить
СообщениеЗдравствуйте Уважаемые Форумчане!

Требуется вставить выделенный диапазон, к примеру А1:D300, в одну ячейку, а также убрать лишние пробелы в тексте.

Как должен выглядеть пример после обработки таким макросом:
"
TextA TextB TextD

TextA
TextA TextB TextC
TextA TextD

TextA TextC

TextA TextB
"

PS: Пример прикреплен.
Заранее Благодарю Вас.

Автор - pirat_m
Дата добавления - 11.01.2016 в 14:36
SLAVICK Дата: Понедельник, 11.01.2016, 15:40 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1922
Репутация: 650 ±
Замечаний: 0% ±

2007,2010,2013,2016
Можно с udf:
[vba]
Код
Function Сц(Диапазон As Range, Optional РазделительСтолцов As String = " ", Optional РазделительСтрок$ = vbLf)
    Dim a, a1(), lr As Long, lc As Long, sRes As String
    Dim lcnt As Long
    a = Диапазон.Value
    If Not IsArray(a) Then
        Сц = a
        Exit Function
    End If
    ReDim a1(1 To UBound(a))
        For lr = 1 To UBound(a)
            a1(lr) = a(lr, 1)
            For lc = 2 To UBound(a, 2)
                a1(lr) = Trim(a1(lr) & РазделительСтолцов & a(lr, lc))
            Next
        Next
    Сц = Join(a1, РазделительСтрок)
End Function
[/vba]
К сообщению приложен файл: 6887296.xlsm(16Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеМожно с udf:
[vba]
Код
Function Сц(Диапазон As Range, Optional РазделительСтолцов As String = " ", Optional РазделительСтрок$ = vbLf)
    Dim a, a1(), lr As Long, lc As Long, sRes As String
    Dim lcnt As Long
    a = Диапазон.Value
    If Not IsArray(a) Then
        Сц = a
        Exit Function
    End If
    ReDim a1(1 To UBound(a))
        For lr = 1 To UBound(a)
            a1(lr) = a(lr, 1)
            For lc = 2 To UBound(a, 2)
                a1(lr) = Trim(a1(lr) & РазделительСтолцов & a(lr, lc))
            Next
        Next
    Сц = Join(a1, РазделительСтрок)
End Function
[/vba]

Автор - SLAVICK
Дата добавления - 11.01.2016 в 15:40
Gustav Дата: Понедельник, 11.01.2016, 15:52 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1253
Репутация: 490 ±
Замечаний: 0% ±

начинал с Excel 4.0...
SLAVICK, похоже, ТС ещё надо несколько подряд идущих пустых строк сокращать до одной пустой строки, т.е. этакий "trim" по переводам строк... впрочем, не буду предвосхищать :)


Мой tip box - яд 41001663842605
 
Ответить
СообщениеSLAVICK, похоже, ТС ещё надо несколько подряд идущих пустых строк сокращать до одной пустой строки, т.е. этакий "trim" по переводам строк... впрочем, не буду предвосхищать :)

Автор - Gustav
Дата добавления - 11.01.2016 в 15:52
_Boroda_ Дата: Понедельник, 11.01.2016, 15:58 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9827
Репутация: 4148 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант
[vba]
Код
Function Сц1(d As Range)
    For i = 1 To d.Count
        n_ = n_ & " " & d(i) & IIf(d(i).Row <> d(i + 1).Row, vbLf, "")
    Next i
    Сц1 = WorksheetFunction.Trim(n_)
End Function
[/vba]
К сообщению приложен файл: 6887296_1.xlsm(17Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант
[vba]
Код
Function Сц1(d As Range)
    For i = 1 To d.Count
        n_ = n_ & " " & d(i) & IIf(d(i).Row <> d(i + 1).Row, vbLf, "")
    Next i
    Сц1 = WorksheetFunction.Trim(n_)
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 11.01.2016 в 15:58
pirat_m Дата: Понедельник, 11.01.2016, 16:56 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Большое всем спасибо за помощь.
Наиболее подходящие результат мне понравился _Boroda_
Только подскажите пожалуйста еще как этим правильно пользоваться, я просто мало знаком с Excel и начал только разбираться с макросами [vba]
Код
Sub () End Sub
[/vba], а с [vba]
Код
Function () End Function
[/vba] я к сожалению пока еще не умею работать. Заранее Благодарю Вас.
 
Ответить
СообщениеБольшое всем спасибо за помощь.
Наиболее подходящие результат мне понравился _Boroda_
Только подскажите пожалуйста еще как этим правильно пользоваться, я просто мало знаком с Excel и начал только разбираться с макросами [vba]
Код
Sub () End Sub
[/vba], а с [vba]
Код
Function () End Function
[/vba] я к сожалению пока еще не умею работать. Заранее Благодарю Вас.

Автор - pirat_m
Дата добавления - 11.01.2016 в 16:56
_Boroda_ Дата: Понедельник, 11.01.2016, 17:03 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 9827
Репутация: 4148 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
На самом деле у меня там лишние пробелы.
А как пользоваться? Да просто посмотрите у нас в файлах. Только обратите внимание, что функции должны быть написаны в стандартном модуле.
В интернете куча ссылок
Почитайте здесь, например
http://www.programm-school.ru/polzovatel_func_excel.html


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНа самом деле у меня там лишние пробелы.
А как пользоваться? Да просто посмотрите у нас в файлах. Только обратите внимание, что функции должны быть написаны в стандартном модуле.
В интернете куча ссылок
Почитайте здесь, например
http://www.programm-school.ru/polzovatel_func_excel.html

Автор - _Boroda_
Дата добавления - 11.01.2016 в 17:03
RAN Дата: Понедельник, 11.01.2016, 17:10 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4299
Репутация: 839 ±
Замечаний: 0% ±

2010
Вагон готовых, на любой вкус.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВагон готовых, на любой вкус.

Автор - RAN
Дата добавления - 11.01.2016 в 17:10
pirat_m Дата: Понедельник, 11.01.2016, 17:29 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Еще раз спасибо, понял как пользоваться [vba]
Код
Function
[/vba], хорошо получается, взял код пользователя SLAVICK hands , только подскажите пожалуйста еще как мне из этого кода убрать "". Заранее Благодарю :)
 
Ответить
СообщениеЕще раз спасибо, понял как пользоваться [vba]
Код
Function
[/vba], хорошо получается, взял код пользователя SLAVICK hands , только подскажите пожалуйста еще как мне из этого кода убрать "". Заранее Благодарю :)

Автор - pirat_m
Дата добавления - 11.01.2016 в 17:29
_Boroda_ Дата: Понедельник, 11.01.2016, 17:49 | Сообщение № 9
Группа: Модераторы
Ранг: Экселист
Сообщений: 9827
Репутация: 4148 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы про вот так?
[vba]
Код
Function Сц2(d As Range)
    n_ = d(1)
    For i = 2 To d.Count
        n_ = n_ & IIf((d(i - 1).Row <> d(i).Row), vbLf, " ") & d(i)
    Next i
    Сц2 = Replace(WorksheetFunction.Trim(n_), vbLf & " ", "")
End Function
[/vba]
К сообщению приложен файл: 6887296_2.xlsm(19Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВы про вот так?
[vba]
Код
Function Сц2(d As Range)
    n_ = d(1)
    For i = 2 To d.Count
        n_ = n_ & IIf((d(i - 1).Row <> d(i).Row), vbLf, " ") & d(i)
    Next i
    Сц2 = Replace(WorksheetFunction.Trim(n_), vbLf & " ", "")
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 11.01.2016 в 17:49
SLAVICK Дата: Понедельник, 11.01.2016, 17:51 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 1922
Репутация: 650 ±
Замечаний: 0% ±

2007,2010,2013,2016
как мне из этого кода убрать ""

А где Вы "" увидели? - там их нет.
Скобки вставляются если Вы копируете из Excel текст с разделителем строк.
Можно этот разделитель заменить на другой(например " ", или "|") - тогда скобок не будет.
Код
=Сц(A1:D10;" ";"|")

Но тогда не будет переноса строки.
В принципе этот символ потом в ворде(или куда Вы копируете) можно будет заменить.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
как мне из этого кода убрать ""

А где Вы "" увидели? - там их нет.
Скобки вставляются если Вы копируете из Excel текст с разделителем строк.
Можно этот разделитель заменить на другой(например " ", или "|") - тогда скобок не будет.
Код
=Сц(A1:D10;" ";"|")

Но тогда не будет переноса строки.
В принципе этот символ потом в ворде(или куда Вы копируете) можно будет заменить.

Автор - SLAVICK
Дата добавления - 11.01.2016 в 17:51
pirat_m Дата: Понедельник, 11.01.2016, 18:08 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, все понял, огромное спасибо вам clap respect yahoo
 
Ответить
СообщениеSLAVICK, все понял, огромное спасибо вам clap respect yahoo

Автор - pirat_m
Дата добавления - 11.01.2016 в 18:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделенный диапазон А1:D300 вставить в одну ячейку (Макросы/Sub)
Страница 1 из 11
Поиск:

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