Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 13:36   #1
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию Макрос присваивает каждому диапазону 1-ый элемент

Доброго всем времени суток!!!

Помогите с этим кодом:

Dim r4 As Range, i4&
i4 = WorksheetFunction.Sum(Range("Y1:Y" & Cells(Rows.Count, "Y").End(xlUp).Row)) 'Получает количество заполненных строк
'MsgBox i
With Application
.ScreenUpdating = 0: .DisplayAlerts = 0
For Each r4 In Range("G1:G" & i4).Areas.Item(1)
If r4.Text = 0 Then Range(r4, r4.Offset(-1)).Value = ???
Next
.ScreenUpdating = 1: .DisplayAlerts = 1
End With


Условие в этом макросе соблюдается, то есть имеется диапазон
1
0
0
0
2
0
0
0
0
3
0
0
0
0
0
Программа знает, что в первом диапазоне 4 строки, во втором 5 строк, в третьем 6 строк. Нужно чтоб делала вот так:
1
1
1
1
2
2
2
2
2
3
3
3
3
3
3
Как откорректировать код, пожалуйста помогите!
DJTreeno вне форума Ответить с цитированием
Старый 24.09.2011, 14:41   #2
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

ГГГ))) Сам себе отвечаю))) Ура!!! получилось

If r4.Text = 0 Then Range(r4, r4.Offset(0)).Value = Range(r4, r4.Offset(-1)).Item(1)
DJTreeno вне форума Ответить с цитированием
Старый 24.09.2011, 16:58   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так пойдет?:
Код:
for r = 2 to WorksheetFunction.Sum(Range("Y1:Y" & Cells(Rows.Count, "Y").End(xlUp).Row))
  if cells(r,7) = 0 then cells(r,7) = cells(r-1,7)
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.09.2011, 17:25   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

"Ленивый" метод без цикла:
Код:
Application.ReferenceStyle = xlR1C1
With Range("Y1", Cells(Rows.Count, "Y").End(xlUp))
    .Replace 0, "=R[-1]C", xlWhole
    .Value = .Value
End With
Application.ReferenceStyle = xlA1
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив 7х7 целого типа в каждом столбце поменять max элемент и элемент побочной диагонали Sheport Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2011 23:30
Поиск по диапазону. D.O.G БД в Delphi 12 28.10.2010 10:17
Фильтрация по диапазону. D.O.G БД в Delphi 12 18.08.2010 10:02
Форма фильтрации по диапазону Малой БД в Delphi 3 24.02.2010 13:24
Каждый раз присваивает заново V@mpir Общие вопросы Delphi 4 10.06.2009 18:29