Заполнение пустых ячеек соседними данными при особых условиях

Автор SS78RUS, 11.07.2012, 16:54

« назад - далее »

SS78RUS

Приветствую!

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

Есть реестр контрактов, в котором для каждого контракта отведено несколько строк (от 3 до 200).
При этом в некоторых строках пропущены данные. Хотелось бы, чтобы они присутствовали в каждой из строк.
Уникальный столбец (с не повторяющимися данными и присутствующими в каждой строчке каждого контракта)  всего 1, по нему и можно разделить контракты, для удобства я его вынес через xml в столбец А. Также есть усложняющий момент: один из столбцов трогать НЕ нужно.
Примерный вид файла смастерил и прикладываю. Буду благодарен за идеи и варианты!  ::)

nilem

Привет, SS78RUS. Попробуйте так (если правильно понял, конечно).

P.S. Полиглюкин - это фамилия?  :)

SS78RUS

Красиво! И, главное, именно то, что и хотел! Спасибо большое!  :)
А Полиглюкин.. хмм.. подозреваю, что это лекарство какое-то =)

Dmitry Tumaykin

#3
крутой макрос, мне тоже такой нужен в моей таблице.
Можешь объяснить, как он работает?

Sub ertert()
Dim r As Range, i&, j&
Application.ScreenUpdating = False

On Error Resume Next: Err.Clear
With Range("A1").CurrentRegion
    For i = 2 To .Rows.Count
        Do
            If r Is Nothing Then Set r = .Cells(i, 1) Else Set r = Union(r, .Cells(i, 1))
            i = i + 1
        Loop While .Cells(i, 1) = .Cells(i - 1, 1)
        If r.Count > 1 Then
            For j = 1 To .Columns.Count - 1
                If j <> 7 Then
                    With r.Offset(, j).SpecialCells(2)
                        If Err = 0 Then
                            If .Count < r.Count Then
                                .Item(1).Copy
                                r.Offset(, j).PasteSpecial xlPasteAll, , True
                            End If
                        Else
                            Err.Clear
                        End If
                    End With
                End If
            Next j
        End If
Какое-то более-менее доходчивое описание этого кода)
что за функции используются, или код самому писать нужно)
просто у меня таблица в 100.000 строк, там нереально вручную что-то делать.
И с ВПР все виснет по-страшному.

nilem

Если 100000 строк, то этот макрос (с копи-пастом) вряд ли подойдет. Нужно, видимо, что-то другое.
Давайте пример Вашего файла (строк на 20-30) с пояснениями - будем посмотреть (может быть).