Страницы: 1
RSS
Заполнение данных в столбце (диапазон от активной ячейки до следующей пустой ячейки)
 
Повторите сообщение, но без ссылки на картинку. Антиспам заблокировал.
 
Добрый день Всем!

Помогите, пожалуйста, решить задачу.

Нужен цикл VBA, который должен выполнять следующие действия:
1. Выделять ячейку "C2";
2. Определять диапазон от активной ячейки до следующей пустой ячейки в столбце "С";
3. Записывать в активную ячейку значение переменной Х, которое представляет собой уникальный код, полученный путем слияния строк из определенного диапазона (от активной ячейки до пустой ячейки), например, для диапазона "С3:С8", Х = "С3" & "C4" & "C5" & "C6" & "C7" & "C8";
4. Выделять следующую пустую ячейку в столбце "С";
5. Повторять цикл до последней строки в таблице.  
Изменено: Федор Сасенков - 07.07.2020 12:54:56
 
Что касается:
1. Тут все понятно.
2. Тут сработает код:
Код
ActiveSheet.Range("С3", ActiveSheet.Range("С3").End(xlDown)).Select

3. Тут не понятно, но я думаю, в данном направлении...

Код
Sub Боль()
Dim X As Range
Set X = ActiveSheet.Range("C3", ActiveSheet.Range("C3").End(xlDown)).CurrentRegion


Dim i As Long
For i = 2 To X.Rows.Count
    Debug.Print X.Cells(i, 3).Value2
    
Next i

'    ActiveSheet.Range("C3", ActiveSheet.Range("C3").End(xlDown)).Select
'    Range("C3").End(xlDown).Offset(1, 0).Select



End Sub

4. Тут сработает код:

Код
ActiveSheet.Range("С3").End(xlDown).Offset(1,0).Select

5. Определить последнюю строку не составит труда.

Еще не понятен конструктор цикла.
Изменено: Федор Сасенков - 07.07.2020 12:54:27
 
Идти снизу вверх намного проще:
Код
Sub UniqueCode()
    Dim aData
    Dim sCode As String, i As Long
    
    i = Cells(Rows.Count, 1).End(xlUp).Row
    aData = Range("C1:C" & i).Value
    
    For i = UBound(aData) To 2 Step -1
        If aData(i, 1) <> Empty Then
            sCode = aData(i, 1) & sCode
        Else
            aData(i, 1) = sCode: sCode = ""
        End If
    Next i
    
    Range("C1:C" & UBound(aData)).Value = aData
End Sub
 
vikttur,
Это магия!!))

Спасибо Вам! Вы вернули мой сон!
 
Ув. vikttur,
Я извиняюсь.

Поменялись исходные.
Теперь диапазон пустых ячеек идет снизу вверх.

Данный код не срабатывает для самой нижней (последней) ячейки(
 
Измените направление цикла:
Код
For i = 2 To UBound(aData)

и порядок сцепления:
Код
sCode = sCode & aData(i, 1)
 
:D

Супер!!! Спасибо!!!
Страницы: 1
Наверх