Sub Мяу() Dim lr&, i& Dim arr1, arr2, s Application.ScreenUpdating = False lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 2 Step -1 arr1 = Range("A" & i & ":D" & i).Value k = UBound(Split(arr1(1, 2), vbLf)) ReDim arr2(1 To k + 1, 1 To 4) For j = 1 To k + 1 arr2(j, 1) = arr1(1, 1) arr2(j, 2) = Split(arr1(1, 2), vbLf)(j - 1) arr2(j, 3) = Split(arr1(1, 3), vbLf)(j - 1) arr2(j, 4) = Split(arr1(1, 4), vbLf)(j - 1) Next Rows(i).Resize(k).Insert xlShiftDown Cells(i, 1).Resize(k + 1, 4) = arr2 Next End Sub
[/vba]
Для файла 3791769.xls [vba]
Код
Sub Мяу() Dim lr&, i& Dim arr1, arr2, s Application.ScreenUpdating = False lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 2 Step -1 arr1 = Range("A" & i & ":D" & i).Value k = UBound(Split(arr1(1, 2), vbLf)) ReDim arr2(1 To k + 1, 1 To 4) For j = 1 To k + 1 arr2(j, 1) = arr1(1, 1) arr2(j, 2) = Split(arr1(1, 2), vbLf)(j - 1) arr2(j, 3) = Split(arr1(1, 3), vbLf)(j - 1) arr2(j, 4) = Split(arr1(1, 4), vbLf)(j - 1) Next Rows(i).Resize(k).Insert xlShiftDown Cells(i, 1).Resize(k + 1, 4) = arr2 Next End Sub
Андрей, а после работы твоей процедуры экран обновлять будет уже не нужно? И S на k замени в Dim А вообще - хороший пример как раздолбать данные, собранные в ячейках, на строки и упорядочить таким образом таблицу данных. Правда, если формулу для расчёта эквивалентного шума выяснить, то может быть и разбивать на строки не придётся?
Андрей, а после работы твоей процедуры экран обновлять будет уже не нужно? И S на k замени в Dim А вообще - хороший пример как раздолбать данные, собранные в ячейках, на строки и упорядочить таким образом таблицу данных. Правда, если формулу для расчёта эквивалентного шума выяснить, то может быть и разбивать на строки не придётся?Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Среда, 07.05.2014, 12:39
А Вас не смущает, что со строки 5 до строки 21 в Вашей таблице везде при таком заполнении получились одинаковые данные, никак не зависящие от введённых в строки 2... 4 значений? А формула, рассчитывающая эквивалентный уровень шума, всегда считает и эти не заполненные ячейки. Соответственно и данные не правильные выдаёт, наверное.
Нет, таблица А1:М21 - это и есть форма для рассчета. Если ячейки остаются пустыми, то они просто не участвуют в рассчете. С этим все нормально.
Для рассчета эквивалента нет конкретной формулы, он состоит из последовательности действий, для удобства специально разработана приведенная выше форма. Мы берем из сводной таблицы данные, помещаем в таблицу рассчетов и забираем оттуда эквивалент, возвращаем его обратно. Как-то так.
Alex_ST,
Цитата
А Вас не смущает, что со строки 5 до строки 21 в Вашей таблице везде при таком заполнении получились одинаковые данные, никак не зависящие от введённых в строки 2... 4 значений? А формула, рассчитывающая эквивалентный уровень шума, всегда считает и эти не заполненные ячейки. Соответственно и данные не правильные выдаёт, наверное.
Нет, таблица А1:М21 - это и есть форма для рассчета. Если ячейки остаются пустыми, то они просто не участвуют в рассчете. С этим все нормально.
Для рассчета эквивалента нет конкретной формулы, он состоит из последовательности действий, для удобства специально разработана приведенная выше форма. Мы берем из сводной таблицы данные, помещаем в таблицу рассчетов и забираем оттуда эквивалент, возвращаем его обратно. Как-то так.arhi
Сообщение отредактировал arhi - Среда, 07.05.2014, 12:50
ScreenUpdating = True автоматически при выходе из процедуры
Проверил... И в правду True Наверное, автоматом подхватывается по настройкам листа. Но всё равно хоть и работает, но это "не по уставу", т.к. на 100% быть уверенным нельзя.
ScreenUpdating = True автоматически при выходе из процедуры
Проверил... И в правду True Наверное, автоматом подхватывается по настройкам листа. Но всё равно хоть и работает, но это "не по уставу", т.к. на 100% быть уверенным нельзя.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Среда, 07.05.2014, 13:04
Да, мы сделали это! Спасибо всем! Воспользовалась вариантом Hugo, как самым коротким и понятным мне. Макрос RAN тоже пригодится в работе! Отдельное спасибо Alex_ST за терпение и желание разобраться в проблеме
Да, мы сделали это! Спасибо всем! Воспользовалась вариантом Hugo, как самым коротким и понятным мне. Макрос RAN тоже пригодится в работе! Отдельное спасибо Alex_ST за терпение и желание разобраться в проблеме arhi