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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление из прайса строк с заданными значениями со втор лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удаление из прайса строк с заданными значениями со втор лист
wwizard Дата: Вторник, 27.08.2013, 15:17 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Имеется прайс лист на 10000 позиций, к сожалению для работы с ним не все категории нужны которые в нем есть.
Категории присутствуют в третьей колонке данного прайса листа 1. На листе 2 [pr] в столбце 3 сверху вниз будут указаны наименования категорий которые должны быть удалены с основного прайса листа 1
Помогите пожалуйста сделать небольшой макрос который бы по заданным значениям находил и удалял данные строки с основного прайса на Листе 1.
К сообщению приложен файл: Tets.xlsx (67.3 Kb)


Сообщение отредактировал wwizard - Вторник, 27.08.2013, 15:18
 
Ответить
СообщениеИмеется прайс лист на 10000 позиций, к сожалению для работы с ним не все категории нужны которые в нем есть.
Категории присутствуют в третьей колонке данного прайса листа 1. На листе 2 [pr] в столбце 3 сверху вниз будут указаны наименования категорий которые должны быть удалены с основного прайса листа 1
Помогите пожалуйста сделать небольшой макрос который бы по заданным значениям находил и удалял данные строки с основного прайса на Листе 1.

Автор - wwizard
Дата добавления - 27.08.2013 в 15:17
nilem Дата: Вторник, 27.08.2013, 16:23 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
может, лучше фильтр?


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможет, лучше фильтр?

Автор - nilem
Дата добавления - 27.08.2013 в 16:23
wwizard Дата: Вторник, 27.08.2013, 16:31 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Прайс получаю раз в три дня, фильтром замучаюсь там много позиций которые надо убрать, а потом переделать этот прайс в xml.
 
Ответить
СообщениеПрайс получаю раз в три дня, фильтром замучаюсь там много позиций которые надо убрать, а потом переделать этот прайс в xml.

Автор - wwizard
Дата добавления - 27.08.2013 в 16:31
SkyPro Дата: Вторник, 27.08.2013, 16:50 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub del0()
Dim sh As Worksheet, pr As Worksheet, rCell As Range, rCell2 As Range
Application.ScreenUpdating = False
Set pr = Sheets("pr")
Set sh = Sheets(1)
For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1)
     For Each rCell2 In sh.[c2].Resize(sh.UsedRange.Rows.Count, 1)
         If rCell2.Value = rCell.Value Then
             sh.Rows(rCell2.Row).Delete shift:=xlUp
         End If
     Next
Next
Application.ScreenUpdating = True
End Sub

[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub del0()
Dim sh As Worksheet, pr As Worksheet, rCell As Range, rCell2 As Range
Application.ScreenUpdating = False
Set pr = Sheets("pr")
Set sh = Sheets(1)
For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1)
     For Each rCell2 In sh.[c2].Resize(sh.UsedRange.Rows.Count, 1)
         If rCell2.Value = rCell.Value Then
             sh.Rows(rCell2.Row).Delete shift:=xlUp
         End If
     Next
Next
Application.ScreenUpdating = True
End Sub

[/vba]

Автор - SkyPro
Дата добавления - 27.08.2013 в 16:50
wwizard Дата: Вторник, 27.08.2013, 17:23 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

[vba]
Код
For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1)
[/vba]


А где тут указано что надо брать с третьего столбца? т.е. мне 1 надо заменить на 3?
 
Ответить
Сообщение
[vba]
Код
For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1)
[/vba]


А где тут указано что надо брать с третьего столбца? т.е. мне 1 надо заменить на 3?

Автор - wwizard
Дата добавления - 27.08.2013 в 17:23
SkyPro Дата: Вторник, 27.08.2013, 17:39 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
А где тут указано что надо брать с третьего столбца? т.е. мне 1 надо заменить на 3?

[c1].Resize(pr.UsedRange.Rows.Count, 1)
Вот тут указано.


skypro1111@gmail.com
 
Ответить
Сообщение
А где тут указано что надо брать с третьего столбца? т.е. мне 1 надо заменить на 3?

[c1].Resize(pr.UsedRange.Rows.Count, 1)
Вот тут указано.

Автор - SkyPro
Дата добавления - 27.08.2013 в 17:39
SkyPro Дата: Вторник, 27.08.2013, 17:47 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Немного переделанный макрос с сайта http://www.excel-vba.ru/chto-um....sloviyu
[vba]
Код
Sub Del_Array_SubStr()
     Dim sSubStr As String    'искомое слово или фраза
     Dim lCol As Long    'номер столбца с просматриваемыми значениями
     Dim lLastRow As Long, li As Long
     Dim avArr, lr As Long
   
     lCol = 3 'номер столбца в котором будем искать

     Application.ScreenUpdating = 0
     lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
     'Имя листа с диапазоном значений на удаление
     With Sheets("pr")
         avArr = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)) 'диапазон с критериями
     End With
     'удаляем
     For lr = 1 To UBound(avArr, 1)
         sSubStr = avArr(lr, 1)
         For li = lLastRow To 1 Step -1
             If CStr(Cells(li, lCol)) = sSubStr Then Rows(li).Delete
         Next li
     Next lr
     Application.ScreenUpdating = 1
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
СообщениеНемного переделанный макрос с сайта http://www.excel-vba.ru/chto-um....sloviyu
[vba]
Код
Sub Del_Array_SubStr()
     Dim sSubStr As String    'искомое слово или фраза
     Dim lCol As Long    'номер столбца с просматриваемыми значениями
     Dim lLastRow As Long, li As Long
     Dim avArr, lr As Long
   
     lCol = 3 'номер столбца в котором будем искать

     Application.ScreenUpdating = 0
     lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
     'Имя листа с диапазоном значений на удаление
     With Sheets("pr")
         avArr = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)) 'диапазон с критериями
     End With
     'удаляем
     For lr = 1 To UBound(avArr, 1)
         sSubStr = avArr(lr, 1)
         For li = lLastRow To 1 Step -1
             If CStr(Cells(li, lCol)) = sSubStr Then Rows(li).Delete
         Next li
     Next lr
     Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 27.08.2013 в 17:47
nilem Дата: Вторник, 27.08.2013, 18:14 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
или вот так с фильтром:
[vba]
Код
Sub ertert()
With Sheets("sheet1")
      With .Range("A1:V" & .Cells(Rows.Count, 1).End(xlUp).Row)
          .AdvancedFilter 1, Sheets("pr").Cells(3).CurrentRegion
          .Offset(1).EntireRow.Delete
      End With
      .ShowAllData
End With
End Sub
[/vba]

ПС имхо, хороший приемчик и довольно распространенный. Чтобы не забылось, в Полезные приемы положим?
К сообщению приложен файл: _Tets-1.xlsm (74.0 Kb)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Вторник, 27.08.2013, 20:48
 
Ответить
Сообщениеили вот так с фильтром:
[vba]
Код
Sub ertert()
With Sheets("sheet1")
      With .Range("A1:V" & .Cells(Rows.Count, 1).End(xlUp).Row)
          .AdvancedFilter 1, Sheets("pr").Cells(3).CurrentRegion
          .Offset(1).EntireRow.Delete
      End With
      .ShowAllData
End With
End Sub
[/vba]

ПС имхо, хороший приемчик и довольно распространенный. Чтобы не забылось, в Полезные приемы положим?

Автор - nilem
Дата добавления - 27.08.2013 в 18:14
Serge_007 Дата: Четверг, 29.08.2013, 15:03 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Можно :)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеМожно :)

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

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