Страницы: 1
RSS
Сцепка текста в соседних ячейках макросом
 
Добрый вечер.
Помогите с макросом при выделение диапазона что бы сцеплял текст.
Изменено: DartoArem - 15.12.2019 21:45:54
 
http://www.excelworld.ru/forum/3-25-1
 
Там вариант как склеить весь текст из всех ячеек.
А нужно склеить построчно
 
Код
Sub iConcatenate()
Dim i As Long
Dim iLastRow As Long
Dim j As Integer
Dim iLastCol As Integer
Dim stroka As String
 iLastRow = Range("A1").End(xlDown).Row
  For i = 1 To iLastRow
    stroka = Cells(i, 1)
    iLastCol = Cells(i, Columns.Count).End(xlToLeft).Column
    If iLastCol >= 2 Then
      For j = 2 To iLastCol
        stroka = stroka & "[" & Cells(i, j) & "]"
      Next
    End If
    Cells(i, 1) = stroka
  Next
End Sub
 
Нижняя таблица - это желаемый результат? Зачем в ней повторяются второй и третий столбцы?
 
Юрий М, да. Показать что ячейки должны остаться

Kuzmich,
Спасибо но макрос обеденяет текст из диапазона в одну ячейку
А нужно построчно
A1+B1
A2+B2+C2
 
Цитата
DartoArem написал:
Там вариант как склеить весь текст из всех ячеек.А нужно склеить построчно
Там вариант, как склеить совершенно любым образом. Можно сверху вниз наискосок, можно сбоку на бок.
 
Спасибо.
Но там функции, а нужен макрос.
Сам переделать функцию не смогу(
 
Чем мой вариант не подошел?
 
DartoArem, возможен ли вариант, когда в исходных данных второй столбец пустой, а третий заполнен?
 
Юрий М, да.

Kuzmich, вариант отлично работает если данные начинаются с ячейки A1
Но если данные начинаются с H6:I10
То эксель вылетает

А еще там глюк если данные начинаются с A10
то он все копирует в одну ячейку
 
Цитата
Но если данные начинаются с H6:I10
То эксель вылетает
Так скорректируйте код под этот диапазон
 
Цитата
DartoArem написал:
если данные начинаются с H6:I10
Но Вы же в примере показали начало диапазона с ячейки А1. Как макрос должен понять, где начинается таблица? Может быть приемлем вариант с выделенным диапазоном?
 
Да, извините что я плохо изъясняюсь  
 
См. вариант. Выделить диапазон и выполнить этот макрос. Проверку на количество выделенных ячеек не делал.
Код
Sub Macro1()
Dim LastRow As Long, Adr As String, Arr(), i As Long, j As Long
    Arr = Selection.Value
    Adr = Selection.Cells(1, 1).Address
    For i = 1 To UBound(Arr)
        For j = 2 To UBound(Arr, 2)
            If Arr(i, j) <> "" Then
                Arr(i, 1) = Arr(i, 1) & " [" & Arr(i, j) & "] "
            End If
        Next
    Next
    Range(Adr).Resize(UBound(Arr), 1).Value = Arr
End Sub
 
Юрий М,  Большое вам спасибо, выручили.
Kuzmich,  Большое и вам спасибо
 
Цитата
Юрий М написал:
Проверку на количество выделенных ячеек не делал.
3000 строк меньше чем за секунду
 
Про проверку - я не об этом: не делал проверку, если выделено НЕ несколько ячеек ))
P.S. Переменная LastRow Лишняя. Но не мешает.
Страницы: 1
Наверх