Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как удалить пустые категории без товара из списка
 
Здравствуйте!
Подскажите пжт по каким условиям можно удалит категории и подкатегории в прайс листе при этом не задев те категории и подкатегории в которых имеется товар.
ScreenShot.png (38.67 КБ)
 
пробуйте это:
Код
sub DelBlankCat
  dim r&, c&
  c = 4 ' колокнка содержащая количество
  r = 2 ' строка с которой начинаются данные
  do while not isempty(cells(r,c-1))
    if isempty(cells(r,c)) then
       if  isempty(cells(r+1,c)) then rows(r).delete
    else
       r = r+1
    end if
  loop
end sub
Изменено: Ігор Гончаренко - 20 Сен 2018 16:57:03 (Вставил 2 недостающие скобки)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Простите я тут полный чайник, сделал вроде как написали вот что получилось, где то ошибка. Если есть возможность подсказать, то буду очень благодарен.
ScreenShot.png (41.59 КБ)
 
Закрывающих скобок не хватает же!
А вообще - включить автофильтр, выбрать Пустые в нужном столбце, удалить видимые строки, выключить автофильтр.
 
skvitali,
вставил скобки в сообщении выше

Леша,
с фильтром - не покатит
все строки с категориями в колонке количество - пустые
если за строкой с пусто, в след строке снова пусто - то у этой категории нет ни одного товара и она удаляется
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
skvitali написал:
я тут полный чайник
у меня в макросе написано с = 4 (и написано, что с - это № колонки с количеством!
дело в том, что по Вашим скринам невозможно определить в какой колонке записано количество, я предположил в 4-й

по след. скрину, вижу с = 4, r = 2...
допустим  r угадать не сложно, 1-я строка шапка, данные начинаются с 2-й строки
но Вы хотите сказать что я и с = 4 угадал.
или "полный чайнмк" - это неполная характеристика? извините
Изменено: Ігор Гончаренко - 20 Сен 2018 17:14:16
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Казанский написал:
А вообще - включить автофильтр, выбрать Пустые в нужном столбце, удалить видимые строки, выключить автофильтр
Это можно сделать, но слишком долго 600 категорий вырезать придется и довольно регулярно это делать. Это прайс.
 
Цитата
Ігор Гончаренко написал:
по след. скрину, вижу с = 4, r = 2...допустим  r угадать не сложно, 1-я строка шапка, данные начинаются с 2-й строкино Вы хотите сказать что я и с = 4 угадал.
Вот как раз вы с с = 4 угадали, а вот r = 10
Буду пытаться теперь скобки вставлять, знать бы куда их еще засунуть)
 
Файлик в приложении, немного обрезал.
 
Цитата
skvitali написал:
знать бы куда их еще засунуть
- достаточно просто ещё раз скопировать код :)
 
И ведь написано в #5:
Цитата
Ігор Гончаренко написал:
вставил скобки в сообщении выше
 
Цитата
Hugo написал:
достаточно просто ещё раз скопировать код
Скопировал, вставил
Сохранил ctr+s
запустил...и тишина, ничего не поменялось.
Что не так?
ScreenShot (2).png (25.88 КБ)
ScreenShot (1).png (35.98 КБ)
 
Цитата
skvitali написал:
Что не так?
у Вас ошибка колонка с ценами - это колонка 5
и у меня ошибка в коде(((
Код
Sub DelBlankCat()
  Dim r&, c&
  c = 5 ' колокнка содержащая количество
  r = 10 ' строка с которой начинаются данные
  Do While Not IsEmpty(Cells(r, c - 1))
    If IsEmpty(Cells(r, c)) Then
       If IsEmpty(Cells(r + 1, c)) Then Rows(r).Delete Else r = r + 1
    Else
       r = r + 1
    End If
  Loop
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
у Вас ошибка колонка с ценами - это колонка 5и у меня ошибка в коде((
Урра заработало!!! Игорь спасибо большое за помощь!!!
 
Ребят начал просматривать результат и обнаружил, что вместе с категориями в которых нет товара удалились категории в которых есть товар.(пример Led-телевизор выделено красным)
Попробую объяснить.
Есть главные категории Led-телевизор(выделено красным) и LCD-телевизоры(на первой картинке чуть ниже), в каждой категории есть подкатегории, в которой имеется товар, либо нет товара. Так вот если в главной категории есть подкатегории с товаром, то удалять главную категорию не надо. А если нет товара в подкатегориях то удаляется и подкатегории и главные категории. Во как!
ScreenShot.png (73.4 КБ)
ScreenShot (1).png (33.27 КБ)
 
Цитата
skvitali написал:
Попробую объяснить.
отличная идея!
с этого можно было начинать, что в файле в колонке 4 есть категории, подкатегории и товары, что нужно удалить все подкатегории, в которых нет товаров
ВСЕ!
лаконично и точно обьясняете задачу - получаете кооректное решение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Может воспользоваться PowerQuery, ка вариант: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=94747&TITLE_SEO=94747-power-query_-dobyvaem-ierarkhiyu-_vlozhennost_-strok-iz-fayla-excel&MID=783810#message783810

Вот ссылка на объяснение от Максима Зеленского, там есть файл, который вам все посчитает.
 
skvitali, если после Вашего сообщения нет других, его можно дополнить, а не создавать новое.
Страницы: 1
Читают тему (гостей: 1)
Наверх