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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление строки по условию - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Удаление строки по условию
Roman777 Дата: Вторник, 24.03.2015, 16:50 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Хотел вот узнать. Возможно ли в переменную как-то увязать условие (> < или =)
Например
[vba]
Код
Sub Удаление_строки_по_условию()
     Dim range1  As Range
     Dim i As Long, kol As Long, Stolbec As Long
     Dim perech As String
     Dim NameStolbec() As String
     Dim Uclovie As String
      
     Stolbec = InputBox("Укажите номер столбца, в котором будем искать условие", "Номер столбца", "1")
     Uclovie = InputBox("Укажите, выражение, согласно которому будем удалять строки", "Условие", "=1")

     i_n = Cells(Rows.Count, 1).End(xlUp).Row

     For i = 1 To i_n
      If Cells(i, Stolbec) & Uclovie Then
         Application.ScreenUpdating = False
         Rows(i).Delete
         kol = kol + 1
         Application.ScreenUpdating = True
      End If
     Next
     MsgBox ("Удалено " & kol & " столбцов")
End Sub
[/vba]
Вот в строке "If Cells(i, Stolbec) & Uclovie Then" как-нибудь правильно это описать можно? чтобы вместо переменной подставлялось само условие...?


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Хотел вот узнать. Возможно ли в переменную как-то увязать условие (> < или =)
Например
[vba]
Код
Sub Удаление_строки_по_условию()
     Dim range1  As Range
     Dim i As Long, kol As Long, Stolbec As Long
     Dim perech As String
     Dim NameStolbec() As String
     Dim Uclovie As String
      
     Stolbec = InputBox("Укажите номер столбца, в котором будем искать условие", "Номер столбца", "1")
     Uclovie = InputBox("Укажите, выражение, согласно которому будем удалять строки", "Условие", "=1")

     i_n = Cells(Rows.Count, 1).End(xlUp).Row

     For i = 1 To i_n
      If Cells(i, Stolbec) & Uclovie Then
         Application.ScreenUpdating = False
         Rows(i).Delete
         kol = kol + 1
         Application.ScreenUpdating = True
      End If
     Next
     MsgBox ("Удалено " & kol & " столбцов")
End Sub
[/vba]
Вот в строке "If Cells(i, Stolbec) & Uclovie Then" как-нибудь правильно это описать можно? чтобы вместо переменной подставлялось само условие...?

Автор - Roman777
Дата добавления - 24.03.2015 в 16:50
KuklP Дата: Вторник, 24.03.2015, 17:22 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Sub Удаление_строки_по_условию()
     Dim i As Long, kol As Long, Stolbec As Long
     Dim Uclovie As String, i_n&
     Stolbec = InputBox("Укажите номер столбца, в котором будем искать условие", "Номер столбца", "1")
     Uclovie = InputBox("Укажите, выражение, согласно которому будем удалять строки", "Условие", "=1")
     i_n = Cells(Rows.Count, 1).End(xlUp).Row
     Application.ScreenUpdating = False
     For i = i_n To 1 Step -1
         If Evaluate(Cells(i, Stolbec) & Uclovie) Then
             Rows(i).Delete
             kol = kol + 1
         End If
     Next
     Application.ScreenUpdating = True
     MsgBox ("Удалено " & kol & " строк")
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Вторник, 24.03.2015, 17:25
 
Ответить
Сообщение[vba]
Код
Sub Удаление_строки_по_условию()
     Dim i As Long, kol As Long, Stolbec As Long
     Dim Uclovie As String, i_n&
     Stolbec = InputBox("Укажите номер столбца, в котором будем искать условие", "Номер столбца", "1")
     Uclovie = InputBox("Укажите, выражение, согласно которому будем удалять строки", "Условие", "=1")
     i_n = Cells(Rows.Count, 1).End(xlUp).Row
     Application.ScreenUpdating = False
     For i = i_n To 1 Step -1
         If Evaluate(Cells(i, Stolbec) & Uclovie) Then
             Rows(i).Delete
             kol = kol + 1
         End If
     Next
     Application.ScreenUpdating = True
     MsgBox ("Удалено " & kol & " строк")
End Sub
[/vba]

Автор - KuklP
Дата добавления - 24.03.2015 в 17:22
Roman777 Дата: Вторник, 24.03.2015, 17:35 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KuklP, Спасибо!


Много чего не знаю!!!!
 
Ответить
СообщениеKuklP, Спасибо!

Автор - Roman777
Дата добавления - 24.03.2015 в 17:35
KSV Дата: Среда, 25.03.2015, 00:42 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Roman777, но учти, что если в указанном столбце есть пустые ячейки, то эти строки тоже будут удалены!

а избежать этого можно, например так:


а с такой доработкой макрос должен корректно обработать почти все условия, даже, если нужно, такое "нестандартное", как: !=

перед использованием, желательно проверить ВСЕ возможные условия!
[p.s.]при желании, можно добавить проверку "от дурака", чтобы запретить ввод неправильных условий, типа: ==, ><, =>, <==, и т.д.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 25.03.2015, 01:08
 
Ответить
СообщениеRoman777, но учти, что если в указанном столбце есть пустые ячейки, то эти строки тоже будут удалены!

а избежать этого можно, например так:


а с такой доработкой макрос должен корректно обработать почти все условия, даже, если нужно, такое "нестандартное", как: !=

перед использованием, желательно проверить ВСЕ возможные условия!
[p.s.]при желании, можно добавить проверку "от дурака", чтобы запретить ввод неправильных условий, типа: ==, ><, =>, <==, и т.д.

Автор - KSV
Дата добавления - 25.03.2015 в 00:42
Roman777 Дата: Среда, 25.03.2015, 08:58 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Спасибо! Оч широко раскрыли детали))). Подскажите, а что это за условие такое "!="?
И ещё, в выражении:
"If Evaluate((Cells(i, Stolbec) * 1) & Uclovie) Then" при "" значениях в столбце, будет ""*1. Разве это не будет ошибкой?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 25.03.2015, 09:01
 
Ответить
СообщениеKSV, Спасибо! Оч широко раскрыли детали))). Подскажите, а что это за условие такое "!="?
И ещё, в выражении:
"If Evaluate((Cells(i, Stolbec) * 1) & Uclovie) Then" при "" значениях в столбце, будет ""*1. Разве это не будет ошибкой?

Автор - Roman777
Дата добавления - 25.03.2015 в 08:58
KSV Дата: Среда, 25.03.2015, 11:29 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Подскажите, а что это за условие такое "!="?

это эквивалент <> (в некоторых языках)

при "" значениях в столбце, будет ""*1. Разве это не будет ошибкой?

нет.
интерпретатор VBA довольно лояльно относится к несоответствию типов подобного рода, и перед выполнением, выражение ""*1 будет преобразовано в 0*1, что в результате даст 0, именно поэтому:
' а условие: =0 удалит строки не только с ячейками =0, но и с пустыми ячейками


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Подскажите, а что это за условие такое "!="?

это эквивалент <> (в некоторых языках)

при "" значениях в столбце, будет ""*1. Разве это не будет ошибкой?

нет.
интерпретатор VBA довольно лояльно относится к несоответствию типов подобного рода, и перед выполнением, выражение ""*1 будет преобразовано в 0*1, что в результате даст 0, именно поэтому:
' а условие: =0 удалит строки не только с ячейками =0, но и с пустыми ячейками

Автор - KSV
Дата добавления - 25.03.2015 в 11:29
Roman777 Дата: Среда, 25.03.2015, 12:15 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Ясно, спасибо)


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Ясно, спасибо)

Автор - Roman777
Дата добавления - 25.03.2015 в 12:15
  • Страница 1 из 1
  • 1
Поиск:

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