Просмотр сообщений
|
Страниц: [1] 2 3 ... 8
|
1
|
Прочие форумы / Курилка / Re:Инсульт - дело нешуточное
|
: 05.07.2015, 21:07:21
|
Друзья, здравствуйте! Извините, что долго молчу - пока еще тяжело писать. Огромнейшее спасибо за помощь - всего около 70 т руб. Благодаря вам - прошел нужные обследование и основной курс терапии. Читать немного получается, писать учусь по-новой. Еще раз -огромное спасибо за помощь, сейчас немного полегче. Такой острой нужды сечас уже нет, и было бы не честно об этом не сказать.
|
|
|
4
|
Основные форумы / Вопросы по Excel и VBA / Re:Копирование и добавления строк в зависимости от числа в ячейке.
|
: 13.03.2015, 23:22:29
|
Sub Insert_Row_iceggg() Dim Arr(), MiArr(), i&, ii&, k&, S& With Worksheets(1) Arr = .UsedRange.Value S = WorksheetFunction.Sum(.Range(.Cells(2, 13), .Cells(.Rows.Count, 13).End(xlUp))) ReDim MiArr(1 To S, 1 To UBound(Arr, 2)) k = 1 For i = 2 To UBound(Arr) If Arr(i, 10) <> 0 Then For k = k To k + Arr(i, 13) - 1 For ii = 1 To UBound(Arr, 2) MiArr(k, ii) = Arr(i, ii) Next MiArr(k, 13) = 1 Next Else For ii = 1 To UBound(Arr, 2) MiArr(k, ii) = Arr(i, ii) Next k = k + 1 End If Next .Cells(2, 1).Resize(S, UBound(MiArr, 2)).Value = MiArr End With End Sub
|
|
|
9
|
Основные форумы / Вопросы по Excel и VBA / Re:Копирование и добавления строк в зависимости от числа в ячейке.
|
: 12.03.2015, 19:11:35
|
Во второй S=1 488 931 827 S - это количество строк; на листе всего 1 048 576 строк, куда вы столько поместите (полтора миллиарда)? Еще заметил если в одном из столбцов есть пустые ячейки то выходит ошибка <Subscript out of range>. Здесь непонятно. весь столбец пустой? или отдельные ячейки пустые? в принципе, не пустые. не нулевые ячейки в 13 столбце не мешают - просто эти строки не переносятся. В других столбцах вообще роли нет.
|
|
|
12
|
Основные форумы / Вопросы по Excel и VBA / Re:Копирование и добавления строк в зависимости от числа в ячейке.
|
: 10.03.2015, 18:56:25
|
Sub Insert_Row_iceggg() Dim Arr(), MiArr(), i&, ii&, k&, S& With Worksheets(1) 'берем в массив все данные первого листа Arr = .UsedRange.Value ' 'считаем сумму по 13 столбцу - для определения, сколько стоко будет всего S = WorksheetFunction.Sum(.Range(.Cells(2, 13), Cells(.Rows.Count, 2).End(xlUp))) 'Назанчаем размеры нового (конечного) массива ReDim MiArr(1 To S, 1 To UBound(Arr, 2)) k = 1 ' начальное значение переменной. Определяет строку конечного массива For i = 2 To UBound(Arr) 'идем по строкам исходного массива, начиная с строки 2 For k = k To k + Arr(i, 13) - 1 'в элемете Arr(i,13) - количество повтора строк, столько раз повторится строка i первого массива For ii = 1 To UBound(Arr, 2) 'переносим из строки i первого массива в строку k второго массива MiArr(k, ii) = Arr(i, ii) Next MiArr(k, 13) = 1 ' присваиваем значению в 13 стобце значение 1 Next Next 'Выгружаем конечный массив на лист, начиная со второй строки .Cells(2, 1).Resize(S, UBound(MiArr, 2)).Value = MiArr End With End Sub
|
|
|
14
|
Основные форумы / Вопросы по Excel и VBA / Re:Копирование и добавления строк в зависимости от числа в ячейке.
|
: 10.03.2015, 08:42:45
|
Sub Insert_Row_iceggg() Dim Arr(), MiArr(), i&, ii&, k&, S& With Worksheets(1) Arr = .UsedRange.Value S = WorksheetFunction.Sum(.Range(.Cells(2, 13), Cells(.Rows.Count, 2).End(xlUp))) ReDim MiArr(1 To S, 1 To UBound(Arr, 2)) k = 1 For i = 2 To UBound(Arr) For k = k To k + Arr(i, 13) - 1 For ii = 1 To UBound(Arr, 2) MiArr(k, ii) = Arr(i, ii) Next MiArr(k, 13) = 1 Next Next .Cells(2, 1).Resize(S, UBound(MiArr, 2)).Value = MiArr End With End Sub
|
|
|
|
|