Страницы: Пред. 1 2
RSS
Редизайнер многоуровневой таблицы, Адаптация примера Николая Павлова
 
Тоже самое((
Я Вас правильно понял ?

Код
Sub fltbl()
Application.DisplayAlerts = False
Dim mass()
lr = ActiveSheet.UsedRange.Rows.Count
lc = ActiveSheet.UsedRange.Columns.Count
ReDim mass(1 To (lr - 3) * (lc - 5), 1 To 7) ' lr-3 - минус 3 первые строки шапки, lc-5 - марки с 6-го столбца, поэтому -5
n = 3 'номер первой строки с названиями марок
For i = 4 To lr ' с четвертой строки начинаем сбор данных
    If Cells(i, 3).Value = "" Then
        n = i 'следующая строка с марками, когда в третьем столбце пусто
    Else
    For j = 6 To lc Step 2 ' марки с 6-го столбца
        If Cells(n, j).Value <> "" Then
            a = a + 1
            mass(a, 1) = Cells(i, 1).Value: mass(a, 2) = Cells(i, 2).Value
            mass(a, 3) = Cells(i, 3).Value: mass(a, 4) = Cells(i, 4).Value
            mass(a, 5) = Cells(i, 5).FormulaLocal: mass(a, 6) = Cells(n, j).Value
            mass(a, 7) = Cells(i, j).FormulaLocal
        End If
    Next
    End If
Next
Worksheets.Add
Range("A2").Resize(a, 7).Value = mass()
Application.DisplayAlerts = True
End Sub
Изменено: Xat - 22.08.2018 12:43:58
 
правильно. значит я не понял..когда вставка на созданный лист первой строки начинается, никакие окна всплывающие код не прерывают?
 
Не совсем Вас понял , после запуска макроса имею сл ( во вложении )
Одну строчку и ошибку( на скрине)
Какие окна могут мешать ?  
Изменено: Xat - 22.08.2018 12:52:59
 
нажмите Debug - какая строчка будет подсвечена посмотрите
 
Код
Range("A2").Resize(a, 7).Value = mass()
 
Когда строка подсвечена, наведите курсор на а и посмотрите чему а равно
 
Похоже, вам нужно уходить в личку... А здесь выложить окончательнй вариант. Для чего форуму эти перекидывания фразами, если никого, кроме вас, нет?
 
vikttur,+, закрывайте тему, в личке добьем. Просто может у кого идеи есть в чем может быть причина..  
Изменено: yozhik - 22.08.2018 13:04:20
 
Рабочий код для моего случая:
Источник
Код
Sub fltbl()Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Dim mass()
lr = ActiveSheet.UsedRange.Rows.Count
lc = ActiveSheet.UsedRange.Columns.Count
ReDim mass(1 To (lr - 3) * (lc - 5), 1 To 7) ' lr-3 - минус 3 первые строки шапки, lc-5 - марки с 6-го столбца, поэтому -5
n = 3 'номер первой строки с названиями марок
For i = 4 To lr ' с четвертой строки начинаем сбор данных
    If Cells(i, 3).Value = "" Then
     n = i 'следующая строка с марками, когда в третьем столбце пусто
    Else
    For j = 6 To lc Step 2 ' марки с 6-го столбца
     If Cells(n, j).Value <> "" Then
      a = a + 1
      mass(a, 1) = Cells(i, 1).Value: mass(a, 2) = Cells(i, 2).Value
      mass(a, 3) = Cells(i, 3).Value: mass(a, 4) = Cells(i, 4).Value
      mass(a, 5) = Cells(i, 5).FormulaLocal: mass(a, 6) = Cells(n, j).Value
      mass(a, 7) = Cells(i, j).FormulaLocal
     End If
    Next
    End If
Next
Worksheets.Add
For i = 2 To a + 1
     For j = 1 To 7
        If j = 5 Or j = 7 Then
           Cells(i, j).FormulaLocal = mass(i - 1, j)
        Else
           Cells(i, j).Value = mass(i - 1, j)
        End If
     Next
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub
Изменено: Xat - 23.08.2018 15:26:07
 
Xat,у вас две темы?
Изменено: ivanok_v2 - 23.08.2018 15:30:46
 
Цитата
vikttur написал:
А здесь выложить окончательнй вариант.
ivanok_v2, вопрос перерос в новую тему , здесь отписался в итоге по результату
 
Xat, так мое решение вам подошло?
 
ivanok_v2,Да, я отписался в той теме

Еще раз больше спасибо!))
Страницы: Пред. 1 2
Наверх