Товарищи, приветствую вас! Возникла необходимость работы с большим объемом данных. Я изучил формулу транспонирования, но копировать её каждый раз с изменением значений диапазона получается не так быстро, как хотелось бы. Прилагаю файл. Во вкладке "труба" я вручную вношу номера труб и их длину из накладных. Во вкладке "трасс.линия" я транспонирую эти данные в строки по 8 ячеек, вручную исправляя диапазоны в формулах транспонирования. Как можно автоматизировать процесс? Я записал свои действия в макрос, но не знаю, как добавить туда логические операторы и формулы шагов по массиву. Подскажите годную литературу или решение, пожалуйста.
Товарищи, приветствую вас! Возникла необходимость работы с большим объемом данных. Я изучил формулу транспонирования, но копировать её каждый раз с изменением значений диапазона получается не так быстро, как хотелось бы. Прилагаю файл. Во вкладке "труба" я вручную вношу номера труб и их длину из накладных. Во вкладке "трасс.линия" я транспонирую эти данные в строки по 8 ячеек, вручную исправляя диапазоны в формулах транспонирования. Как можно автоматизировать процесс? Я записал свои действия в макрос, но не знаю, как добавить туда логические операторы и формулы шагов по массиву. Подскажите годную литературу или решение, пожалуйста.FAG
Формулы переносят данные из первого листа (столбец А: номера труб; столбец B - длины труб) в зеленые ячейки второго листа (по 8 номеров труб) и в желтые ячейки второго листа (по 8 длин труб), за исключением тех случаев, когда линейная труба прерывается для выхода на узел запорной арматуры, это заполняется вручную. Макрос нужен для массового переноса этих данных в тех случаях, когда труба укладывается прямо по 4-8 км.
Формулы переносят данные из первого листа (столбец А: номера труб; столбец B - длины труб) в зеленые ячейки второго листа (по 8 номеров труб) и в желтые ячейки второго листа (по 8 длин труб), за исключением тех случаев, когда линейная труба прерывается для выхода на узел запорной арматуры, это заполняется вручную. Макрос нужен для массового переноса этих данных в тех случаях, когда труба укладывается прямо по 4-8 км.FAG
With Sheets("труба") x = .Range("A2:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With cl = 1: rw = 15 '15-я строка на листе "трасс.линия"
With Sheets("трасс.линия") For i = 16 To 406 Step 5 .Cells(i, 2).Resize(3, 8).ClearContents Next i
For i = 1 To UBound(x) If Len(x(i, 1)) * Len(x(i, 2)) Then cl = cl + 1 If cl = 10 Then cl = 2: rw = rw + 5 If InStr(.Cells(rw, cl), "УЗА") = 0 Then 'ячейки с УЗА пропускаем dl = dl + x(i, 2) 'общ.длина .Cells(rw, cl)(2, 1) = x(i, 1) 'мат. .Cells(rw, cl)(3, 1) = x(i, 2) 'длина .Cells(rw, cl)(4, 1) = dl End If End If Next i End With End Sub
[/vba]
На листе "труба" исправьте значение в ячейке В714
FAG, привет вот попробуйте:
[vba]
Код
Sub ertert() Dim x, i&, rw&, cl&, dl#
With Sheets("труба") x = .Range("A2:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With cl = 1: rw = 15 '15-я строка на листе "трасс.линия"
With Sheets("трасс.линия") For i = 16 To 406 Step 5 .Cells(i, 2).Resize(3, 8).ClearContents Next i
For i = 1 To UBound(x) If Len(x(i, 1)) * Len(x(i, 2)) Then cl = cl + 1 If cl = 10 Then cl = 2: rw = rw + 5 If InStr(.Cells(rw, cl), "УЗА") = 0 Then 'ячейки с УЗА пропускаем dl = dl + x(i, 2) 'общ.длина .Cells(rw, cl)(2, 1) = x(i, 1) 'мат. .Cells(rw, cl)(3, 1) = x(i, 2) 'длина .Cells(rw, cl)(4, 1) = dl End If End If Next i End With End Sub
[/vba]
На листе "труба" исправьте значение в ячейке В714nilem