Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Alexandr1 от 28.10.2016, 23:43

Название: перенос данных с листа на лист
Отправлено: Alexandr1 от 28.10.2016, 23:43
При выгрузке данных из XML файла получается таблица см. Лист1. Проблема - ячейки с данными сдвинуты относительно друг друга по строкам.
Надо сделать данные по человеку в одну строку. см. Лист2
Сложность еще в том, что у одного человека бывает несколько записей, а бывает и одна запись
Если это поможет, то ключевое поле в базе данных - IDCASE - уникальное для каждой записи
Название: Re: перенос данных с листа на лист
Отправлено: kuklp1 от 29.10.2016, 07:45
Public Sub www()
    Dim a, i&, j&, n&
    a = [a1].CurrentRegion.Value
    ReDim b(1 To UBound(a), 1 To UBound(a, 2))
    For i = 1 To UBound(a)
        If a(i, 4) <> "" Then n = n + 1
        For j = 1 To UBound(a, 2)
            If a(i, j) <> "" Then b(n, j) = a(i, j)
        Next
    Next
    With Worksheets.Add(after:=Sheets(Sheets.Count))
        .Range("A:A,M:M").NumberFormat = "@"
        .[a1].Resize(n, UBound(a, 2)) = b
    End With
End Sub
Название: Re: перенос данных с листа на лист
Отправлено: Alexandr1 от 29.10.2016, 21:54
Спасибо громадное, сам пробовал написать цикл через ВПР . - получается громоздко и коряво. А здесь очень все элегантно