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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос объединения текста выбранных столбцов построчно - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос объединения текста выбранных столбцов построчно (Макросы/Sub)
Макрос объединения текста выбранных столбцов построчно
Wander Дата: Понедельник, 13.10.2014, 18:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Помогите с макросом. Имеется сводный прайс лист, где в каждую ячейку строки занесено название товара состоящее из нескольких слов. Иногда из трех, иногда из четырех. Плюс добавлена цена и количество. В интернете нашел макрос, который объединяет текст в ячейках, но он объединяет все выбранные ячейки без разбора на строки. Чего хочется - выделить три столбца и две строки и чтобы произошло объединение столбцов построчно. В прилагаемом файле на листе 1 исходные данные, лист2 то что надо получить.
К сообщению приложен файл: 6216350.xls (23.5 Kb)
 
Ответить
СообщениеПомогите с макросом. Имеется сводный прайс лист, где в каждую ячейку строки занесено название товара состоящее из нескольких слов. Иногда из трех, иногда из четырех. Плюс добавлена цена и количество. В интернете нашел макрос, который объединяет текст в ячейках, но он объединяет все выбранные ячейки без разбора на строки. Чего хочется - выделить три столбца и две строки и чтобы произошло объединение столбцов построчно. В прилагаемом файле на листе 1 исходные данные, лист2 то что надо получить.

Автор - Wander
Дата добавления - 13.10.2014 в 18:44
SkyPro Дата: Понедельник, 13.10.2014, 18:54 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Выделяете и запускаете:
[vba]
Код
Sub MergeToOneCell()
      Const sDELIM As String = " "     'символ-разделитель
      Dim rCell As Range
      Dim sMergeStr As String
      If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
      With Selection
          For i = 1 To .Rows.Count
              For c = 1 To .Columns.Count
                  sMergeStr = sMergeStr & sDELIM & .Cells(i, c).Value
              Next
              Application.DisplayAlerts = False
              .Cells(i, 1).Resize(1, .Columns.Count).Merge Across:=False
              Application.DisplayAlerts = True
              .Cells(i, 1) = Trim(sMergeStr)
          Next
      End With
End Sub

[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Понедельник, 13.10.2014, 18:55
 
Ответить
СообщениеВыделяете и запускаете:
[vba]
Код
Sub MergeToOneCell()
      Const sDELIM As String = " "     'символ-разделитель
      Dim rCell As Range
      Dim sMergeStr As String
      If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
      With Selection
          For i = 1 To .Rows.Count
              For c = 1 To .Columns.Count
                  sMergeStr = sMergeStr & sDELIM & .Cells(i, c).Value
              Next
              Application.DisplayAlerts = False
              .Cells(i, 1).Resize(1, .Columns.Count).Merge Across:=False
              Application.DisplayAlerts = True
              .Cells(i, 1) = Trim(sMergeStr)
          Next
      End With
End Sub

[/vba]

Автор - SkyPro
Дата добавления - 13.10.2014 в 18:54
Wander Дата: Понедельник, 13.10.2014, 19:02 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Первая строка объединяется нормально, а вот остальные... вторая уже содержит первую и вторую, а третья все три строчки в себе объединила.
 
Ответить
СообщениеПервая строка объединяется нормально, а вот остальные... вторая уже содержит первую и вторую, а третья все три строчки в себе объединила.

Автор - Wander
Дата добавления - 13.10.2014 в 19:02
SkyPro Дата: Понедельник, 13.10.2014, 19:44 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub MergeToOneCell()
     Const sDELIM As String = " "     'символ-разделитель
     Dim rCell As Range
     Dim sMergeStr As String
     If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
     With Selection
         For i = 1 To .Rows.Count
sMergeStr = ""
             For c = 1 To .Columns.Count
                 sMergeStr = sMergeStr & sDELIM & .Cells(i, c).Value
             Next
             Application.DisplayAlerts = False
             .Cells(i, 1).Resize(1, .Columns.Count).Merge Across:=False
             Application.DisplayAlerts = True
             .Cells(i, 1) = Trim(sMergeStr)
         Next
     End With
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub MergeToOneCell()
     Const sDELIM As String = " "     'символ-разделитель
     Dim rCell As Range
     Dim sMergeStr As String
     If TypeName(Selection) <> "Range" Then Exit Sub   'если выделены не ячейки - выходим
     With Selection
         For i = 1 To .Rows.Count
sMergeStr = ""
             For c = 1 To .Columns.Count
                 sMergeStr = sMergeStr & sDELIM & .Cells(i, c).Value
             Next
             Application.DisplayAlerts = False
             .Cells(i, 1).Resize(1, .Columns.Count).Merge Across:=False
             Application.DisplayAlerts = True
             .Cells(i, 1) = Trim(sMergeStr)
         Next
     End With
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 13.10.2014 в 19:44
Wander Дата: Понедельник, 13.10.2014, 20:00 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
О, огромное спасибо, плюс к репутации уже у вас!
 
Ответить
СообщениеО, огромное спасибо, плюс к репутации уже у вас!

Автор - Wander
Дата добавления - 13.10.2014 в 20:00
krosav4ig Дата: Понедельник, 13.10.2014, 20:49 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Wander, а обязательно ячейки именно объединять? Может вам такой вариант подойдет?
[vba]
Код
Sub JoinVal()
           Dim rng As Range, cell As Range, wsh As Worksheet
10        On Error GoTo err
20        With Application
30            .ScreenUpdating = 0: .EnableEvents = 0
40            Set wsh = ThisWorkbook.Worksheets("Лист1")
50            Set rng = Intersect(wsh.UsedRange, wsh.[A:A])
60            For Each cell In rng.Cells
70                cell.Value = Trim(Join(.Index(wsh.Range(cell, cell.Offset(, _
                       2)).Value, 1, 0), " "))
80            Next
90            wsh.[B:C].EntireColumn.Delete: rng.EntireColumn.AutoFit
100 err:      If err.Number Then
110               MsgBox "Ошибка " & err.Number & " (" & err.Description & _
                       ") в процедуре JoinVal модуля Module1 на строке " & Erl
120           End If
130           .ScreenUpdating = 1: .EnableEvents = 1
140       End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 13.10.2014, 22:14
 
Ответить
СообщениеWander, а обязательно ячейки именно объединять? Может вам такой вариант подойдет?
[vba]
Код
Sub JoinVal()
           Dim rng As Range, cell As Range, wsh As Worksheet
10        On Error GoTo err
20        With Application
30            .ScreenUpdating = 0: .EnableEvents = 0
40            Set wsh = ThisWorkbook.Worksheets("Лист1")
50            Set rng = Intersect(wsh.UsedRange, wsh.[A:A])
60            For Each cell In rng.Cells
70                cell.Value = Trim(Join(.Index(wsh.Range(cell, cell.Offset(, _
                       2)).Value, 1, 0), " "))
80            Next
90            wsh.[B:C].EntireColumn.Delete: rng.EntireColumn.AutoFit
100 err:      If err.Number Then
110               MsgBox "Ошибка " & err.Number & " (" & err.Description & _
                       ") в процедуре JoinVal модуля Module1 на строке " & Erl
120           End If
130           .ScreenUpdating = 1: .EnableEvents = 1
140       End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 13.10.2014 в 20:49
Формуляр Дата: Вторник, 14.10.2014, 09:23 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Как раз на прошлой неделе наклепал себе такую.



Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Вторник, 14.10.2014, 09:24
 
Ответить
СообщениеКак раз на прошлой неделе наклепал себе такую.


Автор - Формуляр
Дата добавления - 14.10.2014 в 09:23
Wander Дата: Вторник, 14.10.2014, 15:42 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
а обязательно ячейки именно объединять? Может вам такой вариант подойдет?

Да, объединение обязательно, причем по выделенному фрагменту т.к. надо объединять где три слова, а где четыре.
 
Ответить
Сообщение
а обязательно ячейки именно объединять? Может вам такой вариант подойдет?

Да, объединение обязательно, причем по выделенному фрагменту т.к. надо объединять где три слова, а где четыре.

Автор - Wander
Дата добавления - 14.10.2014 в 15:42
Wander Дата: Вторник, 14.10.2014, 15:52 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Формуляр, у вас получается объединение по столбцам, а мне необходимо чтобы он построчно объединял. Вариант SkyPro идеальный.
 
Ответить
СообщениеФормуляр, у вас получается объединение по столбцам, а мне необходимо чтобы он построчно объединял. Вариант SkyPro идеальный.

Автор - Wander
Дата добавления - 14.10.2014 в 15:52
Формуляр Дата: Вторник, 14.10.2014, 17:06 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
выделить три столбца и две строки и чтобы произошло объединение столбцов построчно.
Видимо, неправильно читал слова. :)

Ну тогда, пост №11 в этой теме.


Excel 2003 EN, 2013 EN
 
Ответить
Сообщение
выделить три столбца и две строки и чтобы произошло объединение столбцов построчно.
Видимо, неправильно читал слова. :)

Ну тогда, пост №11 в этой теме.

Автор - Формуляр
Дата добавления - 14.10.2014 в 17:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос объединения текста выбранных столбцов построчно (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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