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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 12:52   #1
waleryth
 
Регистрация: 14.05.2009
Сообщений: 8
По умолчанию Макрос для форматирования

Всем доброго времени суток!
Помогите пожалуйста, я раньше с макросами ни когда не работал!
Задача такова!
Имеется таблица с заполненными данными, например(фрагмент одного стобца):

130
197,4651168
130
130
130
130
178,9819139
и т.д.

Необходимо найти разность последующий - с предыдущем, т.е. 197,4651168 - 130 = 67,46511678 это разность, затем если разность > 50% от предыдущего значения (50% от 130 = 65) то ячейку выделить цветом. т.е. 67,46511678>65.
УФФ! Надеюсь понятно изложил?
waleryth вне форума Ответить с цитированием
Старый 05.07.2012, 13:01   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Код:
Sub TextBox1_Click()
    i = 1
    Do
        i = i + 1
        If Range("A" & i) = "" Then Exit Do
        If Range("A" & i) - Range("A" & i - 1) > Range("A" & i - 1) / 2 Then Range("A" & i).Font.Color = vbGreen
    Loop
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 05.07.2012, 13:03   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Тут макрос не нужен. Условное форматирование, формула (при активной ячейке А2)

=A2-A1>A1/2
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 05.07.2012, 13:04   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Что-то такое?
Вложения
Тип файла: zip Книга1.zip (6.0 Кб, 15 просмотров)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 05.07.2012, 13:21   #5
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
это нормально.
мало того, Вы практически нашли решение - УФ (условное форматирование) это то, что справиться с Вашей задачей.
в колонке А подсвечиватются те, что больше предыдущего на 50%, в колонке В - те, что отличаются от предыдущего более чем на 50%.
Чот ничего не светит просто циферки стоят
Мож я что-то не вижу?
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 09.07.2012, 07:15   #6
waleryth
 
Регистрация: 14.05.2009
Сообщений: 8
По умолчанию

Всем спосибо за оперативный ответ!
Подходит вариант

Цитата:
Сообщение от Watcher_1 Посмотреть сообщение
Код:
Sub TextBox1_Click()
    i = 1
    Do
        i = i + 1
        If Range("A" & i) = "" Then Exit Do
        If Range("A" & i) - Range("A" & i - 1) > Range("A" & i - 1) / 2 Then Range("A" & i).Font.Color = vbGreen
    Loop
End Sub
Но почемуто ругается на

If Range("A" & i) - Range("A" & i - 1) > Range("A" & i - 1) / 2 Then

Пишет мол не соответствие типов

Run-time error '13'
Type mismatch




Aaaa.
Разобрался!
Просто первая строчка это название столбца и из за этого 'Run-time error '13'
Type mismatch
'.
Вот мой код
Sub Pik()
Dim i As Integer
i = 2
Do
i = i + 1
If Range("J" & i) = "" Then Exit Do
If (Range("J" & i) - Range("J" & i - 1)) > (Range("J" & i - 1) / 100 * 50) Then Range("J" & i).Interior.Color = vbGreen
Loop
End Sub

Последний раз редактировалось waleryth; 09.07.2012 в 07:26.
waleryth вне форума Ответить с цитированием
Старый 09.07.2012, 10:32   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

допустим А1=-100, а А2=-99
по Вашему алгоритму А2 позеленеет, хотя значение увеличилось всего на 1%, а не 50.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.07.2012, 14:20   #8
waleryth
 
Регистрация: 14.05.2009
Сообщений: 8
По умолчанию

Цитата:
допустим А1=-100, а А2=-99
по Вашему алгоритму А2 позеленеет, хотя значение увеличилось всего на 1%, а не 50.
Ведь так и надо!

Вы не верно поняли Т.З!
Необходимо найти разность последующий - с предыдущем, затем если разность > 50% от предыдущего значения то ячейку выделить цветом. т.е.

Код:
-99-(-100)=1
50% от -100 это -50
соответственно 1 больше -50, значит -99 покрасим в зеленый цвет
У меня возник еще вопросик! Как поступить с тем что в столбцах имеются пустые ячейки и соответственно данное условие для завершения цикла завершается не достигнув конца документа?
Код:
If Range("A" & i) = "" Then Exit Do
Какой оператор можно использовать? Например в Делфи есть оператор EOF а как в VBA я не знаю?!

Последний раз редактировалось waleryth; 09.07.2012 в 14:36.
waleryth вне форума Ответить с цитированием
Старый 09.07.2012, 14:57   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в VBA тоже есть EOF.
только это настолько же далеко от поиска последней заполненной ячейки, как рессора трактора "Беларусь" от автомобиля "Феррари".

используйте:
Код:
LR = cells(rows.count,1).end(xlup).row
чтобы определить строку с последней заполненой ячейкой в 1-й колонке*
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 09.07.2012 в 15:00.
IgorGO вне форума Ответить с цитированием
Старый 09.07.2012, 15:02   #10
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Попробуйте так
Код:
Sub Pik()
Dim i As Integer
For i=2 to ActiveSheet.UsedRange.Rows.Count
If Range("J" & i) = "" Then Exit Do
If (Range("J" & i) - Range("J" & i - 1)) > (Range("J" & i - 1) / 100 * 50) Then Range("J" & i).Interior.Color = vbGreen
next
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос форматирования текста DJTreeno Microsoft Office Excel 3 04.07.2011 10:41
Функция для условного форматирования kipish_lp Microsoft Office Access 1 22.06.2011 07:48
Нужен макрос для условного форматирования SergioSolo Microsoft Office Excel 2 09.02.2011 21:16
макрос форматирования таблиц darklumen Microsoft Office Word 6 16.02.2010 12:57
макрос форматирования графических объектов darklumen Microsoft Office Word 2 24.12.2009 05:09