Страницы: 1
RSS
Заполнение пустых ячеек в строке значениями из нижних ячеек выделенных зеленым цветом
 
Доброго дня. Нужна помощь в небольшом макросе. В таблице встречаются строки выделенные зеленым цветом:
Код
ColorIndex = 4

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

Нашел пример тут: ссылка, но в моем случае все пробы ни к чему не привели.
Изменено: Михаил Иванченков - 23.09.2021 11:26:03
 
Цитата
Михаил Иванченков написал:
Нужно проверить по первой фразе
покажите в файле (замените выше на новый) желаемый результат

а почему Daiko ASP-H12CNX-21    - стало заполнятся есил в исходном файле зеленым не выделено?
сделал как понял
Код
Sub mrshkei()
Dim col As New Collection, i As Long, lr As Long, n As Long, j As Long, tt As String, arr, arr2
Dim dd As String
dd = " // "
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
If Cells(i, 1).Interior.ColorIndex = 4 Then
    On Error Resume Next
    For n = 1 To 52
        If tt = Empty Then
            tt = Cells(i, n)
        Else
            tt = tt & dd & Cells(i, n)
        End If
    Next n
    col.Add tt, tt
    tt = ""
End If
Next i
For n = 1 To col.Count
arr = Split(col(n), dd)
    For i = 2 To lr
        arr2 = Split(Cells(i, 1), " ")
        If arr2(0) = Split(arr(0), " ")(0) Then
            For j = 3 To 51
                If Cells(i, j) = Empty And arr(j - 1) <> Empty Then
                    Cells(i, j) = arr(j - 1)
                End If
            Next j
            Cells(i, j).Interior.ColorIndex = 4
        End If
    Next i
Next n
Application.ScreenUpdating = True
End Sub

Изменено: Mershik - 23.09.2021 11:39:20
Не бойтесь совершенства. Вам его не достичь.
 
Все так. все верно - только я так понял он не сравнивает артикул, со строкой выше по первой ячейке. Бо мне надо копирование только если они совпали. Первая фраза до пробела в зеленой ячейке - с любой фразой в предыдущей строке, над ней. Хотя нет. все сравнивает. Все работает. но вот что странно. В приложенном файле, строка 62/63 артикул разный - он скопировал. А строка 64/65 - тоже артикул вообще совершенно разный - и тут скрипт повел себя правильно  - ничего не скопировав.
Изменено: Михаил Иванченков - 23.09.2021 12:31:43
 
Михаил Иванченков,
Код
Sub mrshkei()
Dim i As Long, lr As Long, j As Long
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
If Cells(i, 1).Interior.ColorIndex = 4 Then
    If Split(Cells(i, 1), " ")(0) = Split(Cells(i - 1, 1), " ")(0) Then
        For j = 3 To 51
            If Cells(i - 1, j) = Empty And Cells(i, j) <> Empty Then
                Cells(i - 1, j) = Cells(i, j)
                Cells(i - 1, j).Interior.ColorIndex = 3
            End If
        Next j
    End If
End If
Next i
Application.ScreenUpdating = True
End Sub
Изменено: Mershik - 23.09.2021 12:30:14
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, Спасибо
Изменено: Михаил Иванченков - 23.09.2021 13:23:02
Страницы: 1
Наверх