Excel - макрос для сортування декількох аркушів

Проблема

У мене 11 аркушів у Excel. 10 аркушів потрібно витягувати інформацію з аркуша1.

Це призначено для шеф-кухарів у закладі громадського харчування.

У стовпці А є ключове слово для диференціації кожного рядка інформації.

Мені потрібно ...

  • Лист 2 і 3, щоб витягти повну лінію з аркуша1, якщо слово в стовпці А є "гарячим".
  • Лист 4 і 5 витягують повну лінію з аркуша 1, якщо слово в стовпці А є "холодним".
  • Лист 6 витягнути повний рядок з аркуша 1, якщо слово в стовпці А є "Масовим".
  • Аркуш 8 і 9 витягують повний рядок з аркуша 1, якщо слово в колонці А є "Випічка".
  • Лист 10, щоб витягти повну лінію з аркуша 1, якщо слово в колонці A є "Pres".

Інші аркуші вже покриті.

Я створив макрос для сортування листів на основі трьох стовпців. Було б непогано, якщо б цей макрос автоматично запускався, вся інформація була додана до аркуша. Не до певної лінії, а до будь-якої області аркуша, щоб зберегти інформацію в порядку.

Рішення

Спробуйте цей макрос:

 Опція Явне Приватне підзаголовка_Змінити (ByVal Target As Range) Dim nxtRow As Integer 'Визначити, чи змінилося на стовпець H (8) Якщо Target.Column = 8 Тоді' Якщо так, визначте, якщо клітина = Hot Якщо Target.Value = "H" Потім 'Якщо так, знайдіть наступний порожній рядок в аркуші 2 nxtRow = Листи (2) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1' Копіюйте змінений рядок і вставте в Sheet 2 Target.EntireRow .Copy _ Призначення: = Листи (2) .Range ("A" & nxtRow) "Якщо так, знайдіть наступний порожній рядок у аркуші 3 nxtRow = Sheets (3) .Range (" G "& Rows.Count) .End ( xlUp) .Row + 1 'Копіювати змінений рядок і вставляти в Sheet 3 Target.EntireRow.Copy _ Destination: = Sheets (3) .Range ("A" & nxtRow) End if End If' Визначити, чи змінилося на стовпець H ( 8) Якщо Target.Column = 8 Тоді 'Якщо так, визначте, якщо клітина = холодна, якщо Target.Value = "C" Тоді "Якщо так, знайдіть наступний порожній рядок в аркуші 4 nxtRow = Листи (4) .Range (" G ") & Rows.Count) .End (xlUp) .Row + 1 'Копіювати змінений рядок і вставляти в Sheet 4 Target.EntireRow.Copy _ Destination: = Sheets (4) .Range ("A" & nxtRow)' Якщо так, знайдіть наступний порожній рядок у аркуші 5 nxtRow = аркуші (5) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Копіювати змінений рядок і вставляти в Sheet 3 Target.EntireRow.Copy _ Destination: = Аркуші (5) .Range ("A" & nxtRow) End If End If 'Визначити, чи змінилося на стовпець H (8) Якщо Target.Column = 8, то "Якщо так, визначте, якщо cell = Presentation Якщо Target.Value =" P "Тоді" Якщо так, знайдіть наступний порожній рядок у аркуші 8 nxtRow = аркуші (8) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Копіюйте змінений рядок і вставте в Sheet 8 Target .EntireRow.Copy _ Призначення: = аркуші (8) .Range ("A" & nxtRow) End If End Якщо 'Визначити, чи змінилося на стовпець H (8) Якщо Target.Column = 8, то' Якщо так, визначте, чи є клітина = Кондитерські вироби Якщо Target.Value = "PY" Тоді "Якщо Так, знайдіть наступний порожній рядок у Таблиці 10 nxtRow = Листи (10) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1 'Copy змінено рядок і вставити в аркуш 10 Target.EntireRow.Copy _ Призначення: = аркуші (10) .Range ("A" & nxtRow) 'Якщо так, знайдіть наступний порожній рядок в аркуші 12 nxtRow = Sheets (11) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1 'Копіювати змінений рядок і вставляти в Sheet 12 Target.EntireRow.Copy _ Destination: = Sheets (11) .Range ("A" & nxtRow) End if End If' Визначити, чи змінилося на стовпець H (8) Якщо Target.Column = 8, то "Якщо так, визначте, якщо cell = Bulk Якщо Target.Value =" B "Тоді" Якщо так, знайдіть наступний порожній рядок в Sheet 6 nxtRow = Sheets (6) .Range ("G "& Rows.Count) .End (xlUp) .Row + 1" Копіювати змінений рядок і вставляти в Sheet 6 Target.EntireRow.Copy _ Destination: = Sheets (6) .Range ("A" & nxtRow) Закінчити, якщо закінчити End Sub 

Завдяки Jlee1978 за цей відгук.

Попередня Стаття Наступна Стаття

Кращі Поради