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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос для обработки прайса по заданному критерию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для обработки прайса по заданному критерию (Макросы/Sub)
Макрос для обработки прайса по заданному критерию
Vinney Дата: Понедельник, 07.12.2015, 12:50 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день! Нужна помощь в следующем вопросе. Есть прайс поставщика (примерно 10 тыс. строк) с кучей издательств и информации по товару. Нужно автоматизировать, насколько возможно, процесс вычленения конкретного издательства с копированием этого товара в отдельную книгу/лист. В прикрепленном файле условный прайс. В нем нужно вытащить издательство Спейс, к примеру, с сохранением структуры прайса, т.е., чтобы остались разделы. Фильтр пробовал, он тут не особо помогает.
Вкратце, суть в том, чтобы из всего списка перенести на отдельный лист товар конкретного издателя.
Заранее очень сильно благодарен за помощь!
К сообщению приложен файл: 7402578.xls (89.0 Kb)
 
Ответить
СообщениеДобрый день! Нужна помощь в следующем вопросе. Есть прайс поставщика (примерно 10 тыс. строк) с кучей издательств и информации по товару. Нужно автоматизировать, насколько возможно, процесс вычленения конкретного издательства с копированием этого товара в отдельную книгу/лист. В прикрепленном файле условный прайс. В нем нужно вытащить издательство Спейс, к примеру, с сохранением структуры прайса, т.е., чтобы остались разделы. Фильтр пробовал, он тут не особо помогает.
Вкратце, суть в том, чтобы из всего списка перенести на отдельный лист товар конкретного издателя.
Заранее очень сильно благодарен за помощь!

Автор - Vinney
Дата добавления - 07.12.2015 в 12:50
SLAVICK Дата: Понедельник, 07.12.2015, 13:01 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Попробуйте сводную таблицу
Чтоб оставались разделы - нужно макрос...
Ща сделаю :D
К сообщению приложен файл: 7402578.zip (25.0 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 07.12.2015, 13:02
 
Ответить
СообщениеПопробуйте сводную таблицу
Чтоб оставались разделы - нужно макрос...
Ща сделаю :D

Автор - SLAVICK
Дата добавления - 07.12.2015 в 13:01
Vinney Дата: Понедельник, 07.12.2015, 13:20 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо большое за помощь, но тут не совсем все просто. Проблема в том, что при фильтрации не сохраняется структура прайса. Т.е., допустим, есть раздел Альбомы для рисования и в нем есть товар разных производителей. Нужно, чтобы сам раздел остался, но в нем остался только товар конкретного проиводителя. Если это вообще реально воплотить, в чем лично я уже начинаю сомневаться))


Сообщение отредактировал Vinney - Понедельник, 07.12.2015, 13:20
 
Ответить
СообщениеСпасибо большое за помощь, но тут не совсем все просто. Проблема в том, что при фильтрации не сохраняется структура прайса. Т.е., допустим, есть раздел Альбомы для рисования и в нем есть товар разных производителей. Нужно, чтобы сам раздел остался, но в нем остался только товар конкретного проиводителя. Если это вообще реально воплотить, в чем лично я уже начинаю сомневаться))

Автор - Vinney
Дата добавления - 07.12.2015 в 13:20
SLAVICK Дата: Понедельник, 07.12.2015, 13:35 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
но тут не совсем все просто. Проблема в том, что при фильтрации не сохраняется структура прайса.

Я же сказал:
Ща сделаю

Ловите:
К сообщению приложен файл: 7402578-1-.xls (97.5 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 07.12.2015, 13:36
 
Ответить
Сообщение
но тут не совсем все просто. Проблема в том, что при фильтрации не сохраняется структура прайса.

Я же сказал:
Ща сделаю

Ловите:

Автор - SLAVICK
Дата добавления - 07.12.2015 в 13:35
Vinney Дата: Понедельник, 07.12.2015, 13:45 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо еще раз, это то, что надо!
 
Ответить
СообщениеСпасибо еще раз, это то, что надо!

Автор - Vinney
Дата добавления - 07.12.2015 в 13:45
Vinney Дата: Понедельник, 07.12.2015, 14:16 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А можно еще вопрос? После обработки прайса остается много названий разделов, где не было продукции искомого производителя, но сами разделы не удалены, естесственно. В прикрепленном файле пример того, что остается после обработки. Каким образом можно удалить эти пустые разделы?
К сообщению приложен файл: 5033666.xls (35.5 Kb)
 
Ответить
СообщениеА можно еще вопрос? После обработки прайса остается много названий разделов, где не было продукции искомого производителя, но сами разделы не удалены, естесственно. В прикрепленном файле пример того, что остается после обработки. Каким образом можно удалить эти пустые разделы?

Автор - Vinney
Дата добавления - 07.12.2015 в 14:16
SLAVICK Дата: Понедельник, 07.12.2015, 16:09 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Пробуйте:
[vba]
Код
Sub d()
Dim s$, r As Range, Fr As Range, Fullr As Range, i&, m%, mas(1 To 4) As Boolean, ii%, b As Boolean
s = InputBox("Критерий", , "Спейс")
's = "Спейс"
    Sheets(1).Copy After:=Sheets(1)
    With Sheets(2).UsedRange
    i = .Rows.Count
    m = 4
    Do
            On Error Resume Next
            Set r = .Rows(i)
            If Len(r.Cells(1, 1)) = 6 Then
                m = 5
                Set Fr = Nothing: Set Fr = r.Find(What:=s, After:=r.Cells(1, 1), LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
                If Fr Is Nothing Then
                    If Fullr Is Nothing Then Set Fullr = r Else Set Fullr = Union(r, Fullr)
                    Else
                    For ii = 1 To 4: mas(ii) = 1: Next
                End If
            Else
                    If Not mas(r.OutlineLevel) Then If Fullr Is Nothing Then Set Fullr = r Else Set Fullr = Union(r, Fullr)
                    mas(r.OutlineLevel) = 0
            End If
    i = i - 1
    Loop While i >= 3
    Fullr.Delete Shift:=xlUp
    End With
End Sub
[/vba]
К сообщению приложен файл: 7402578-1-2-.xlsm (35.9 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПробуйте:
[vba]
Код
Sub d()
Dim s$, r As Range, Fr As Range, Fullr As Range, i&, m%, mas(1 To 4) As Boolean, ii%, b As Boolean
s = InputBox("Критерий", , "Спейс")
's = "Спейс"
    Sheets(1).Copy After:=Sheets(1)
    With Sheets(2).UsedRange
    i = .Rows.Count
    m = 4
    Do
            On Error Resume Next
            Set r = .Rows(i)
            If Len(r.Cells(1, 1)) = 6 Then
                m = 5
                Set Fr = Nothing: Set Fr = r.Find(What:=s, After:=r.Cells(1, 1), LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
                If Fr Is Nothing Then
                    If Fullr Is Nothing Then Set Fullr = r Else Set Fullr = Union(r, Fullr)
                    Else
                    For ii = 1 To 4: mas(ii) = 1: Next
                End If
            Else
                    If Not mas(r.OutlineLevel) Then If Fullr Is Nothing Then Set Fullr = r Else Set Fullr = Union(r, Fullr)
                    mas(r.OutlineLevel) = 0
            End If
    i = i - 1
    Loop While i >= 3
    Fullr.Delete Shift:=xlUp
    End With
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 07.12.2015 в 16:09
Vinney Дата: Вторник, 08.12.2015, 06:56 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо большущее! hands
 
Ответить
СообщениеСпасибо большущее! hands

Автор - Vinney
Дата добавления - 08.12.2015 в 06:56
Vinney Дата: Вторник, 08.12.2015, 11:23 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите, пожалуйста, каким образом можно получить количество строк в прайсе уже после удаления ненужных строк?
 
Ответить
СообщениеПодскажите, пожалуйста, каким образом можно получить количество строк в прайсе уже после удаления ненужных строк?

Автор - Vinney
Дата добавления - 08.12.2015 в 11:23
devilkurs Дата: Вторник, 08.12.2015, 11:43 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Vinney,
Последняя заполненная строка по столбцу 1 (т.е. "А")
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row
[/vba]


 
Ответить
СообщениеVinney,
Последняя заполненная строка по столбцу 1 (т.е. "А")
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row
[/vba]

Автор - devilkurs
Дата добавления - 08.12.2015 в 11:43
Vinney Дата: Вторник, 08.12.2015, 12:06 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо!
 
Ответить
СообщениеСпасибо!

Автор - Vinney
Дата добавления - 08.12.2015 в 12:06
Vinney Дата: Среда, 09.12.2015, 07:23 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Допиливаю макрос до победного конца. Возник вопрос - мне нужно "подравнять" высоту строк, но метод AutoFit почему то не работает
Макрос выглядит таким образом
[vba]
Код
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(4 & ":" & i).Select
Range(4 & ":" & i).Select.EntireRow.AutoFit
[/vba]
i - это координата конца списка.
Выделение происходит, но выравнивание по высоте нет. Подскажите, что тут не так?
[moder]Код нужно оформлять тегами (кнопка #).
Поправила за Вас[/moder]


Сообщение отредактировал Manyasha - Среда, 09.12.2015, 10:01
 
Ответить
СообщениеДопиливаю макрос до победного конца. Возник вопрос - мне нужно "подравнять" высоту строк, но метод AutoFit почему то не работает
Макрос выглядит таким образом
[vba]
Код
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(4 & ":" & i).Select
Range(4 & ":" & i).Select.EntireRow.AutoFit
[/vba]
i - это координата конца списка.
Выделение происходит, но выравнивание по высоте нет. Подскажите, что тут не так?
[moder]Код нужно оформлять тегами (кнопка #).
Поправила за Вас[/moder]

Автор - Vinney
Дата добавления - 09.12.2015 в 07:23
SLAVICK Дата: Среда, 09.12.2015, 10:11 | Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Зачем select ? %) . Пробуйте так:
[vba]
Код
Rows("4:" & i).EntireRow.AutoFit
[/vba]
можно просто:
[vba]
Код
Rows("4:" & i).AutoFit
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 09.12.2015, 10:13
 
Ответить
СообщениеЗачем select ? %) . Пробуйте так:
[vba]
Код
Rows("4:" & i).EntireRow.AutoFit
[/vba]
можно просто:
[vba]
Код
Rows("4:" & i).AutoFit
[/vba]

Автор - SLAVICK
Дата добавления - 09.12.2015 в 10:11
nilem Дата: Среда, 09.12.2015, 10:13 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
---


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

Сообщение отредактировал nilem - Среда, 09.12.2015, 10:14
 
Ответить
Сообщение---

Автор - nilem
Дата добавления - 09.12.2015 в 10:13
Vinney Дата: Пятница, 11.12.2015, 09:29 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Зачем select ? . Пробуйте так:
Rows("4:" & i).EntireRow.AutoFit

Спасибо, заработало! Еще вопросик. Нужно скопировать формулу из ячейки и протянуть от начала (ячейка "Цена", она же именованный диапазон "цена") до конца таблицы (координата конца таблицы известна)
К сообщению приложен файл: 4646314.xls (36.0 Kb)
 
Ответить
Сообщение
Зачем select ? . Пробуйте так:
Rows("4:" & i).EntireRow.AutoFit

Спасибо, заработало! Еще вопросик. Нужно скопировать формулу из ячейки и протянуть от начала (ячейка "Цена", она же именованный диапазон "цена") до конца таблицы (координата конца таблицы известна)

Автор - Vinney
Дата добавления - 11.12.2015 в 09:29
SLAVICK Дата: Пятница, 11.12.2015, 14:17 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
[vba]
Код
Range("F1").Copy: Range("F5:F" & координата).PasteSpecial Paste:=xlPasteFormulas
[/vba]


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение[vba]
Код
Range("F1").Copy: Range("F5:F" & координата).PasteSpecial Paste:=xlPasteFormulas
[/vba]

Автор - SLAVICK
Дата добавления - 11.12.2015 в 14:17
Vinney Дата: Пятница, 11.12.2015, 14:45 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, работает!
 
Ответить
СообщениеСпасибо, работает!

Автор - Vinney
Дата добавления - 11.12.2015 в 14:45
Vinney Дата: Четверг, 14.01.2016, 08:38 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите, пожалуйста. Нужно скопировать часть таблицы в другой лист. Не могу задать область копирования, т.к. в процессе выполнения макрос удаляет ненужные столбцы и я не могу знать координаты конца таблицы вправо. Допустим, мне нужен фрагмент, заканчивающийся колонкой "Мин. уп". Во вложении пример, область копирования выделена красным цветом

[moder]Новый вопрос - новая тема. Читаем Правила форума[/moder]
К сообщению приложен файл: .xls.xlsx (13.7 Kb)


Сообщение отредактировал Pelena - Четверг, 14.01.2016, 08:56
 
Ответить
СообщениеПодскажите, пожалуйста. Нужно скопировать часть таблицы в другой лист. Не могу задать область копирования, т.к. в процессе выполнения макрос удаляет ненужные столбцы и я не могу знать координаты конца таблицы вправо. Допустим, мне нужен фрагмент, заканчивающийся колонкой "Мин. уп". Во вложении пример, область копирования выделена красным цветом

[moder]Новый вопрос - новая тема. Читаем Правила форума[/moder]

Автор - Vinney
Дата добавления - 14.01.2016 в 08:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для обработки прайса по заданному критерию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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