Здравствуйте. Есть таблица, начиная с 36 столбца идет разбиение суммы, которая находится в столбце 14 в соответствующей строке, необходимо к каждой строке добавить количество строк, которое соответствует количеству ненулевых значений в правой части строки (начиная с 36 ячейки) - с этой задачей я справилась (не идеально, конечно). Теперь необходимо заполнить добавленные строки, а именно в столбце 14 прописать значения строки,к которой были добавлены строки, начиная с 36 ячейки в этой строке, остальные ячейки остаются такими же как и в исходной строке. Пробовала заполнять циклом-не получается. В идеале необходимо еще и удалить исходную строку. Мои идеи иссякли, прошу Вас помочь.
Здравствуйте. Есть таблица, начиная с 36 столбца идет разбиение суммы, которая находится в столбце 14 в соответствующей строке, необходимо к каждой строке добавить количество строк, которое соответствует количеству ненулевых значений в правой части строки (начиная с 36 ячейки) - с этой задачей я справилась (не идеально, конечно). Теперь необходимо заполнить добавленные строки, а именно в столбце 14 прописать значения строки,к которой были добавлены строки, начиная с 36 ячейки в этой строке, остальные ячейки остаются такими же как и в исходной строке. Пробовала заполнять циклом-не получается. В идеале необходимо еще и удалить исходную строку. Мои идеи иссякли, прошу Вас помочь.Lubasha
If Cells(i, j).Value <> 0 Then k = k + 1 Cells(i - k, 14).Value = Cells(i, j).Value
End If
Next j
i = i - k k = 0
Next i
Application.ScreenUpdating = True
MsgBox "Конец!", vbInformation
End Sub
[/vba]
Прилагаю свое решение, поставленная задача в процессе решения, но теперь возникла новая проблема. Я считаю количество ненулевых ячек, а затем добавляю этакое количество строк, так вот если нулевые ячейки присутствуют, то добавляется строк на 1 меньше, причем просматривая выполнение программы по шагам, количество ненулевых считается верно, а вот добавляет меньше. Подскажите пож-та с чем это связано и как можно исправить...
[vba]
Код
Option Explicit Option Base 1
Sub Discret()
Dim lLastRow, lLastCol As Long Dim SumAray(), StrArray() As Double
Dim Pr As String Dim i, k, l As Long Dim j As Long Dim s As Integer
If Cells(i, j).Value <> 0 Then k = k + 1 Cells(i - k, 14).Value = Cells(i, j).Value
End If
Next j
i = i - k k = 0
Next i
Application.ScreenUpdating = True
MsgBox "Конец!", vbInformation
End Sub
[/vba]
Прилагаю свое решение, поставленная задача в процессе решения, но теперь возникла новая проблема. Я считаю количество ненулевых ячек, а затем добавляю этакое количество строк, так вот если нулевые ячейки присутствуют, то добавляется строк на 1 меньше, причем просматривая выполнение программы по шагам, количество ненулевых считается верно, а вот добавляет меньше. Подскажите пож-та с чем это связано и как можно исправить...Lubasha
Lubasha, в своем примере, ручками вставьте после 9-той строки еще 3 строчки и так же ручками заполните их так, как надо заполнить макросом. А то, действительно, ниччче не понятно.
Lubasha, в своем примере, ручками вставьте после 9-той строки еще 3 строчки и так же ручками заполните их так, как надо заполнить макросом. А то, действительно, ниччче не понятно.Wasilich
Wasilic, На самом деле это огромная таблица с данным, файл во вложении это всего лишь очень маленькая ее часть, в связи с чем и требуется написать макрос.
Wasilic, На самом деле это огромная таблица с данным, файл во вложении это всего лишь очень маленькая ее часть, в связи с чем и требуется написать макрос.Lubasha
Т. к. таблица оч большая, боюсь, что мое решение окажется не эффективным, может быть есть другие идеи [moder]Оформляйте коды тегами. Кнопка #[/moder]Lubasha
Куда? Я не вижу. Я просил в пример из первого сообщения, в котором на 9-ой строке в диапазоне столбцов 36-42 есть 3 нуля, добавить ручками 3 строки и ручками заполнить их так, как это должен сделать макрос. И все. В Вашем макросе разбираться ... Поэтому, в примере я сделал как понял.
Куда? Я не вижу. Я просил в пример из первого сообщения, в котором на 9-ой строке в диапазоне столбцов 36-42 есть 3 нуля, добавить ручками 3 строки и ручками заполнить их так, как это должен сделать макрос. И все. В Вашем макросе разбираться ... Поэтому, в примере я сделал как понял.Wasilich