Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/как "зациклить" макрос - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
как "зациклить" макрос
RAN Дата: Среда, 07.05.2014, 12:26 | Сообщение № 21
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Для файла 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
[/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
[/vba]

Автор - RAN
Дата добавления - 07.05.2014 в 12:26
Alex_ST Дата: Среда, 07.05.2014, 12:33 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Андрей, а после работы твоей процедуры экран обновлять будет уже не нужно? lol
И S на k замени в Dim
А вообще - хороший пример как раздолбать данные, собранные в ячейках, на строки и упорядочить таким образом таблицу данных.
Правда, если формулу для расчёта эквивалентного шума выяснить, то может быть и разбивать на строки не придётся?



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 07.05.2014, 12:39
 
Ответить
СообщениеАндрей, а после работы твоей процедуры экран обновлять будет уже не нужно? lol
И S на k замени в Dim
А вообще - хороший пример как раздолбать данные, собранные в ячейках, на строки и упорядочить таким образом таблицу данных.
Правда, если формулу для расчёта эквивалентного шума выяснить, то может быть и разбивать на строки не придётся?

Автор - Alex_ST
Дата добавления - 07.05.2014 в 12:33
arhi Дата: Среда, 07.05.2014, 12:36 | Сообщение № 23
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Alex_ST,
Цитата
А Вас не смущает, что со строки 5 до строки 21 в Вашей таблице везде при таком заполнении получились одинаковые данные, никак не зависящие от введённых в строки 2... 4 значений? А формула, рассчитывающая эквивалентный уровень шума, всегда считает и эти не заполненные ячейки. Соответственно и данные не правильные выдаёт, наверное.


Нет, таблица А1:М21 - это и есть форма для рассчета. Если ячейки остаются пустыми, то они просто не участвуют в рассчете. С этим все нормально.

Для рассчета эквивалента нет конкретной формулы, он состоит из последовательности действий, для удобства специально разработана приведенная выше форма. Мы берем из сводной таблицы данные, помещаем в таблицу рассчетов и забираем оттуда эквивалент, возвращаем его обратно. Как-то так.


Сообщение отредактировал arhi - Среда, 07.05.2014, 12:50
 
Ответить
СообщениеAlex_ST,
Цитата
А Вас не смущает, что со строки 5 до строки 21 в Вашей таблице везде при таком заполнении получились одинаковые данные, никак не зависящие от введённых в строки 2... 4 значений? А формула, рассчитывающая эквивалентный уровень шума, всегда считает и эти не заполненные ячейки. Соответственно и данные не правильные выдаёт, наверное.


Нет, таблица А1:М21 - это и есть форма для рассчета. Если ячейки остаются пустыми, то они просто не участвуют в рассчете. С этим все нормально.

Для рассчета эквивалента нет конкретной формулы, он состоит из последовательности действий, для удобства специально разработана приведенная выше форма. Мы берем из сводной таблицы данные, помещаем в таблицу рассчетов и забираем оттуда эквивалент, возвращаем его обратно. Как-то так.

Автор - arhi
Дата добавления - 07.05.2014 в 12:36
RAN Дата: Среда, 07.05.2014, 12:38 | Сообщение № 24
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Леш, а ты попробуй. :p


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛеш, а ты попробуй. :p

Автор - RAN
Дата добавления - 07.05.2014 в 12:38
Alex_ST Дата: Среда, 07.05.2014, 12:42 | Сообщение № 25
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Что пробовать-то?
Я вижу в начале кода строку[vba]
Код
    Application.ScreenUpdating = False
[/vba]и не вижу [vba]
Код
Application.ScreenUpdating = True
[/vba]на выходе.
И ещё не вижу объявления переменных j и k
Option Explicit у тебя, наверное, не стоит в декларациях?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЧто пробовать-то?
Я вижу в начале кода строку[vba]
Код
    Application.ScreenUpdating = False
[/vba]и не вижу [vba]
Код
Application.ScreenUpdating = True
[/vba]на выходе.
И ещё не вижу объявления переменных j и k
Option Explicit у тебя, наверное, не стоит в декларациях?

Автор - Alex_ST
Дата добавления - 07.05.2014 в 12:42
RAN Дата: Среда, 07.05.2014, 12:50 | Сообщение № 26
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вижу, не вижу ...
1. ScreenUpdating = True автоматически при выходе из процедуры.
2. Option Explicit отключил, дабы не объявлять (лень) в тесте.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВижу, не вижу ...
1. ScreenUpdating = True автоматически при выходе из процедуры.
2. Option Explicit отключил, дабы не объявлять (лень) в тесте.

Автор - RAN
Дата добавления - 07.05.2014 в 12:50
Alex_ST Дата: Среда, 07.05.2014, 12:58 | Сообщение № 27
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
ScreenUpdating = True автоматически при выходе из процедуры
??? Почему?
не объявлять (лень) в тесте
а всё остальное не лень? :)
Чему народ учишь, хвостато-полосатый?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
ScreenUpdating = True автоматически при выходе из процедуры
??? Почему?
не объявлять (лень) в тесте
а всё остальное не лень? :)
Чему народ учишь, хвостато-полосатый?

Автор - Alex_ST
Дата добавления - 07.05.2014 в 12:58
Alex_ST Дата: Среда, 07.05.2014, 13:03 | Сообщение № 28
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
ScreenUpdating = True автоматически при выходе из процедуры
Проверил... И в правду True %) Наверное, автоматом подхватывается по настройкам листа.
Но всё равно хоть и работает, но это "не по уставу", т.к. на 100% быть уверенным нельзя.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 07.05.2014, 13:04
 
Ответить
Сообщение
ScreenUpdating = True автоматически при выходе из процедуры
Проверил... И в правду True %) Наверное, автоматом подхватывается по настройкам листа.
Но всё равно хоть и работает, но это "не по уставу", т.к. на 100% быть уверенным нельзя.

Автор - Alex_ST
Дата добавления - 07.05.2014 в 13:03
arhi Дата: Среда, 07.05.2014, 13:34 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да, мы сделали это! Спасибо всем! Воспользовалась вариантом Hugo, как самым коротким и понятным мне. Макрос RAN тоже пригодится в работе!
Отдельное спасибо Alex_ST за терпение и желание разобраться в проблеме yes
 
Ответить
СообщениеДа, мы сделали это! Спасибо всем! Воспользовалась вариантом Hugo, как самым коротким и понятным мне. Макрос RAN тоже пригодится в работе!
Отдельное спасибо Alex_ST за терпение и желание разобраться в проблеме yes

Автор - arhi
Дата добавления - 07.05.2014 в 13:34
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!