Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.09.2010, 17:58   #1
Михаил2261
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 37
Репутация: 10
По умолчанию условия сравнение

Здравствуйте
Подскажите как правильно записать условия сравнения для строки
из 5 чисел
А В С D E
3 8 4 18 12
Если А < B , C < B, D > C, E < D удалить строку или отметить другим цветом
спасибо
Михаил2261 вне форума   Ответить с цитированием
Старый 06.09.2010, 21:33   #2
motorway
Профессионал
 
Регистрация: 28.06.2009
Сообщений: 1,950
Репутация: 196
По умолчанию

Код:
if ( (Cells(1,1).Value<Cells(1,2).Value) And (...)) Then Rows("1:1").Delete
В ... пишете нужные условия аналогично первому, где Cells(i,j) - ячейка с i строкой и j столбцом
__________________
Скрипты PHP, VBA. Skype:ktmtramway Расписание электричек
Быстрый проверенный хостинг.
motorway вне форума   Ответить с цитированием
Старый 06.09.2010, 22:13   #3
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 9,166
Репутация: 1811

icq: 7934250
skype: i2x0,5
По умолчанию

Код:
Sub PaintRows()
  Dim r As Long, rg
  For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If (Cells(r, 1) < Cells(r, 2)) _
    And (Cells(r, 3) < Cells(r, 2)) _
    And (Cells(r, 4) > Cells(r, 3)) _
    And (Cells(r, 5) < Cells(r, 4)) Then
      If IsEmpty(rg) Then Set rg = Rows(r) Else Set rg = Application.Union(rg, Rows(r))
    End If
  Next
  If Not IsEmpty(rg) Then rg.Interior.Color = 55555
End Sub
__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO на форуме   Ответить с цитированием
Старый 07.09.2010, 07:52   #4
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

С позволения уважаемого IgorGO, хочу отметить, что при проверке нескольких (больше 2-х) условий лучше не использовать оператор And, т.к. в этом случае Excel проверяет все условия (присваивает True или False), независимо от того, совпали они или нет. Затем между ними выполняет And. Т.е. если 1-е условие не совпало, то нет смысла проверять остальные. Лучше воспользоваться вложенными If. Код чуть длиннее, но время выполнения процедуры будет меньше. Например, так:
Код:
Sub PaintRows()
    Dim r As Long, rg As Range: Application.ScreenUpdating = False
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(r, 1) < Cells(r, 2) Then
            If Cells(r, 3) < Cells(r, 2) Then
                If Cells(r, 4) > Cells(r, 3) Then
                    If Cells(r, 5) < Cells(r, 4) Then
                        If rg Is Nothing Then Set rg = Rows(r) Else Set rg = Union(rg, Rows(r))
    End If: End If: End If: End If: Next
    If Not rg Is Nothing Then rg.Interior.ColorIndex = 6
    'If Not rg Is Nothing Then rg.EntireRow.Delete
End Sub
Закомментированная строчка кода - это на случай, если нужно не выделять ячейки, а удалять строки.
Также, обратите внимание:
1. Возможно, что Вам понадобится проверка значений ячеек как на пустоту, так и на тип данных (числовое значение).
2. Предлагаемый макрос просматривает столбцы "A:E" с 1-й строки до последней заполненной в столбце "A". Достаточно ли Вам этого условия?
__________________
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 07.09.2010 в 08:26. Причина: Добавлено
SAS888 вне форума   Ответить с цитированием
Старый 07.09.2010, 10:21   #5
Teslenko_EA
Профессионал
 
Регистрация: 10.08.2009
Адрес: Сургут
Сообщений: 1,796
Репутация: 256

skype: Teslenko_EA
По умолчанию

Здравствуйте уважаемые господа.
по поводу "..лучше не использовать оператор And..", согласен и потому предлагаю использовать подобный варианты ветвления:
Код:
        If Cells(r, 1) > Cells(r, 2) Then
        ElseIf Cells(r, 3) > Cells(r, 2) Then
        ElseIf Cells(r, 4) < Cells(r, 3) Then
        ElseIf Cells(r, 5) > Cells(r, 4) Then
        ElseIf rg Is Nothing Then
            Set rg = Rows(r)
        Else
            Set rg = Union(rg, Rows(r))
        End If
но с утверждением "..проверяет все условия (присваивает True или False), независимо от того, совпали они или нет.." согласиться не могу, проблема только в осмыслении результатов выражения, а они никогда не противоречат логике.

Евгений.
Teslenko_EA вне форума   Ответить с цитированием
Старый 07.09.2010, 10:35   #6
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

Цитата:
...но с утверждением ... согласиться не могу...
Почему? Оператор And осуществляет логическое перемножение значений. Для этого, по меньшей мере, эти значения должны быть в наличии. Т.е. Excel (в нашем случае) получает для каждого сравнения логический результат (True или False), затем выполняет саму операцию And (логическое перемножение всех Boolean значений).
__________________
Чем шире угол зрения, тем он тупее.
SAS888 вне форума   Ответить с цитированием
Старый 07.09.2010, 11:45   #7
Михаил2261
Пользователь
 
Регистрация: 03.05.2010
Сообщений: 37
Репутация: 10
По умолчанию

спасибо большое
Михаил2261 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условия DartDayring Assembler 1 02.04.2010 10:08
Условия и их выполнение kta87 Помощь студентам 8 28.02.2010 16:37
условия в ComboBox Dotha Компоненты Delphi 4 26.12.2009 12:20
условия( if ) на запросе mavlon_m SQL, базы данных 6 20.10.2009 15:38
условия glupayastudentka Помощь студентам 7 25.06.2009 09:43


01:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru