Страницы: 1
RSS
Макрос Сцепить столбцы в выделенном диапазоне построчно, откорректировать макрос
 

Здравствуйте, Уважаемые Специалисты!

Помогите, откорректировать макрос. Нужно сцепить построчно выделенные столбцы  и поместить результат в столбец, следующий за выделенным диапазоном. Нашла на форуме макрос, но он сцепляет слитно, а мне нужно через разделитель пробел, и формат полученных данных "текстовый".

Код
Sub Сцепить()
Dim lngI As Long
Dim lngJ As Long
Dim strS As String
    For lngI = 1 To Selection.Rows.Count
        For lngJ = 1 To Selection.Columns.Count
            strS = strS & Selection.Cells(lngI, lngJ)
        Next lngJ
    Selection.Cells(lngI, lngJ) = strS
    strS = ""
    Next lngI
  End Sub
 
а так:
Код
Sub Ñöåïèòü()
  Dim lngI As Long
  Dim lngJ As Long
  Dim strS As String
  For lngI = 1 To Selection.Rows.Count
    For lngJ = 1 To Selection.Columns.Count
      strS = strS & " " & Selection.Cells(lngI, lngJ)
    Next lngJ
    Selection.Cells(lngI, lngJ) = Right(strS, Len(strS) - 1)
    strS = ""
  Next lngI
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Благодарю! :)  То что нужно!
 
Подскажите, как в этом макросе к объединенному столбцу применить формат "текстовый" ?
 
Код
  Next lngI
  Selection.Cells(lngI, lngJ).EntireColumn.NumberFormat = "@"
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо за помощь!
 

Вчера-сегодня я протестировала макрос. Выявился дефект. Бывает, что нужно сцепить 4 столбца и  в 4 столбце не все ячейки заполнены. При сцепке, где были пустые ячейки в конце строки образуется пробел, который очень не нужен.

 
Вместо Right можно применить Application.Trim() (без параметра) - так отрежет и первый лишний пробел, и возможно лишние внутри и на конце.
 
"Я не волшебник, я только учусь!"© :)  Пропишите, пожалуйста, строку (или строки), которою мне нужно вставить в макрос.
 
Код
Selection.Cells(lngI, lngJ) = Trim(strS)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
по поводу Trim и WorksheetFunction.Trim

Код
Sub Test()
    Dim str As String, sResult1 As String, sResult2 As String
    
    str = "        oops,     I did it again      yep"
    sResult1 = Trim(str)
    sResult2 = WorksheetFunction.Trim(str)
    
    MsgBox "'" & sResult1 & "'" & vbLf & "'" & sResult2 & "'" & vbLf & vbLf & "Строки НЕ равны", , ""
End Sub
Изменено: New - 10.10.2022 02:31:38
 
Цитата
New: по поводу Trim и WorksheetFunction.Trim
Trim невероятно быстрый, но не удаляет двойные пробелы
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх