Страницы: 1
RSS
Поиск и копирование на новы лист строк с ячейкой нужного цвета
 
Доброго времени суток господа)
Есть желание облегчить работу диспетчерскому отделу на родном предприятии...
Скажу сразу, что с Excel работаю часто, но обычно пытаюсь решить все проблемы с помощью фильтров, сводных таблиц и формул.
Но сейчас понимаю, что поможет только VBA. VBA начинал изучать в институте и пока дальше точного следования урокам дело не дошло))
Ну так вот. Имеем документ в котором строка - это маршрут прохождения детали в производстве. Маршрут может состоять из 2,3,4 и т.д. операций.
Я подумал, что лучшим вариантом будет отмечать зеленым готовую операцию, а например желтым предстоящую.
Вот тут то и прошу Вас о помощи...Как скопировать на новый лист строки с желтыми ячейками, причем в идеале чтобы рядом с названием детали была только одна ячейка желтого цвета. Дальше я уже сам отсортирую их по операциям и отдельными списками раздам мастерам по участкам, вроде: "Вот тебе Василий Иванович список деталей ждущих обработки на твоем участке".
Пример файла прилагаю.
Буду очень благодарен любой помощи...
 
Цитата
slipknotik написал:
Я подумал, что лучшим вариантом будет
лучшим вариантом будет доп. столбец, в котором будет отображаться статус. Тогда и проблем меньше будет. По приложенному файлу, правда, плохо понятно, можно ли это сделать именно в Вашем случае, т.к. все маршруты одинаковые. Если это реально так - их можно в заголовок кинуть, а в доп.столбце для каждой детали вписывать статус(готовая, предстоящая, завершенная и т.п.)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
лучше бы признаки какие нибудь проставляли выделит кто нибудь желтым с серобуромалиновым оттенком макрос уже это не увидит, а так можно и формулой тянуть
Лень двигатель прогресса, доказано!!!
 
slipknotik, так перенос строк целиком (содержащих окрашенные желтым ячейки), или деталь+содержимое ячеек в строке выделенных желтым?
 
Цитата
Дмитрий Щербаков написал:
лучшим вариантом будет доп. столбец, в котором будет отображаться статус
С этим я согласен, сейчас что нибудь попробую сделаю.
Цитата
Anchoret написал:
так перенос строк целиком (содержащих окрашенные желтым ячейки), или деталь+содержимое ячеек в строке выделенных желтым?
Простите, сам не заметил что разные вещи написал. Похоже и копировать ничего не нужно будет. Статус детали на этом же листе попробую сделаю.
 
Цитата
Дмитрий Щербаков написал:
правда, плохо понятно, можно ли это сделать именно в Вашем случае, т.к. все маршруты одинаковые.
Маршруты все разные, вот переделал пример...
 
Макросом:
Код
Sub CopyYellow()
Dim aa As Range, sh1 As Worksheet, sh2 As Worksheet, a&, b&, bb As Range
Set sh1 = Sheets(1): Set sh2 = Sheets(2): b = 1: a = 1: sh2.UsedRange.Clear
For Each aa In sh1.UsedRange
  If aa.Interior.ColorIndex = 6 Then
    If aa.Row = a Then
      If Not bb Is Nothing Then
         Set bb = Union(bb, aa)
      Else: Set bb = Union(aa.EntireRow.Columns(1), aa)
      End If
    Else
      If Not bb Is Nothing Then
        bb.Copy sh2.Range("A" & b)
        Set bb = Nothing: a = a + 1: b = b + 1
      Else: a = a + 1: Set bb = Union(aa.EntireRow.Columns(1), aa)
      End If
    End If
  Else
    If Not bb Is Nothing And aa.Row > a Then
        bb.Copy sh2.Range("A" & b)
        Set bb = Nothing: a = a + 1: b = b + 1
    ElseIf bb Is Nothing And aa.Row > a Then a = a + 1
    End If
  End If
Next
End Sub
 
Anchoret, Выглядит супер)))Спасибо большое. Теперь буду разбираться какая переменная за что отвечает и буду редактировать ваш код))
 
slipknotik,
a - номер текущей строки на листе №1 (порядковый номер ярлыка листа слева направо)
b - номер строки на листе №2
UsedRange - хоть чем-то занятый (не важно значния/формулы/форматы) диапазон на листе - не переменная
на первом листе этот диапазон можно заменить нужным диапазоном, соответственно в a перед циклом нужно поместить номер первой строки.
на втором листе также.
Изменено: Anchoret - 22.03.2018 12:16:23
 
Здравствуйте, еще вариант
Код
Sub Yellows()

Dim c As Range
Dim i As Integer, m As Integer
m = 0
If Worksheets.Count = 1 Then Worksheets.Add after:=Worksheets(1)
Worksheets(2).UsedRange.Clear
Worksheets(1).Activate
Application.FindFormat.Interior.Color = vbYellow
For i = 1 To Worksheets(1).Cells(1, 1).End(xlDown).Row
    Set c = Worksheets(1).Range(Cells(i, 1), Cells(i, 1).End(xlToRight)).Find("", SearchFormat:=True)
    If Not c Is Nothing Then
        m = m + 1
        Worksheets(2).Cells(m, 1) = Cells(i, 1)
        Worksheets(2).Cells(m, 2) = c
    End If
Next i

End Sub
 
Цитата
Бибигуль написал:
Здравствуйте, еще вариант
Спасибо большое)

А можно ли как нибудь в прикрепленном ниже документе осуществить следующее... Необходимо: получить список деталей которые проходят определенные участки. Т.е. нужен список деталей которые после заготовки (лос, гил, плазма) попадают на механическую обработку №1 (ток, ТО, ток до ТО, ток окончательная), а в другом списке с заготовительного на механический участок №2 (фрез,коорд.раст, коорд(сверл)). Например с механического №1 детали на покрытие (Кд.9, ан.окс, Ц9.хр).
Можно ли добиться этого по аналогии с поиском ячеек желтого цвета из сообщений выше?

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