Доброго времени суток уважаемые форумчане! В который раз прошу Вашей помощи в решении проблемы: Есть файл (Лист 1) в столбце А в котором есть данные. Эти данные необходимо разнести в таблицу по 700 штук (7 столбцов по 100 штук в каждом). После разноски необходимо эти строки пронумеровать. Количество данных в столбце А может быть разное. Все столбцы должны быть полными, по 100 штук. Если количество не кратное 700 то необходимо что бы в последней таблице не полными были последние столбцы. Результат выполнения макроса приведен на Лист2 заранее благодарю за помощь!)
Доброго времени суток уважаемые форумчане! В который раз прошу Вашей помощи в решении проблемы: Есть файл (Лист 1) в столбце А в котором есть данные. Эти данные необходимо разнести в таблицу по 700 штук (7 столбцов по 100 штук в каждом). После разноски необходимо эти строки пронумеровать. Количество данных в столбце А может быть разное. Все столбцы должны быть полными, по 100 штук. Если количество не кратное 700 то необходимо что бы в последней таблице не полными были последние столбцы. Результат выполнения макроса приведен на Лист2 заранее благодарю за помощь!)rtv206
Sub Razbienie() Dim i As Long Dim iLastRow As Long Dim j As Long Dim arr Dim arr_n Dim Kol_vo As Long Dim n As Long Dim iCounter As Long Kol_vo = 100 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row n = Int(iLastRow / Kol_vo) + 1 arr = Range("A1:A" & iLastRow).Value ReDim arr_n(1 To Kol_vo, 1 To n * 2) iCounter = 1 For j = 1 To UBound(arr_n, 2) Step 2 For i = 1 To UBound(arr_n) If iCounter <= iLastRow Then arr_n(i, j) = iCounter arr_n(i, j + 1) = arr(iCounter, 1) iCounter = iCounter + 1 End If Next Next With Worksheets("Лист2") .Cells.Clear .Range("A1").Resize(Kol_vo, n * 2) = arr_n .Range(.Cells(1, n + 1), .Cells(100, n * 2)).Cut .Range("A103") End With End Sub
[/vba]
Запускать при активном Лист1 [vba]
Код
Sub Razbienie() Dim i As Long Dim iLastRow As Long Dim j As Long Dim arr Dim arr_n Dim Kol_vo As Long Dim n As Long Dim iCounter As Long Kol_vo = 100 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row n = Int(iLastRow / Kol_vo) + 1 arr = Range("A1:A" & iLastRow).Value ReDim arr_n(1 To Kol_vo, 1 To n * 2) iCounter = 1 For j = 1 To UBound(arr_n, 2) Step 2 For i = 1 To UBound(arr_n) If iCounter <= iLastRow Then arr_n(i, j) = iCounter arr_n(i, j + 1) = arr(iCounter, 1) iCounter = iCounter + 1 End If Next Next With Worksheets("Лист2") .Cells.Clear .Range("A1").Resize(Kol_vo, n * 2) = arr_n .Range(.Cells(1, n + 1), .Cells(100, n * 2)).Cut .Range("A103") End With End Sub
Sub tt() k_ = 100 With Worksheets("Лист2") .Cells.Clear For i = 1 To Cells(Rows.Count, 1).End(3).Row / k_ .Cells(2, i).Resize(k_) = Cells(1, 1).Offset(k_ * (i - 1)).Resize(k_).Value Next i .Select End With End Sub
[/vba]
Еще вариант [vba]
Код
Sub tt() k_ = 100 With Worksheets("Лист2") .Cells.Clear For i = 1 To Cells(Rows.Count, 1).End(3).Row / k_ .Cells(2, i).Resize(k_) = Cells(1, 1).Offset(k_ * (i - 1)).Resize(k_).Value Next i .Select End With End Sub
Kuzmich, при переходе в ячейку A103 сначала идут данные а потом номер по порядку, хотя должно быть наоборот. Подскажите, пожалуйста, как сделать что бы все данные переносились в столбцы от 1-100, не разбиваясь ниже 100 столбца?
Kuzmich, при переходе в ячейку A103 сначала идут данные а потом номер по порядку, хотя должно быть наоборот. Подскажите, пожалуйста, как сделать что бы все данные переносились в столбцы от 1-100, не разбиваясь ниже 100 столбца?rtv206