Страницы: 1
RSS
Как преобразовать выделенный цветом ячейки в столбце цифрами в таблицу
 
Возникла задача на работе: составлять паспорта на продукцию раз в день по мере готовности продукции.
Есть карта контроля. В ней указываются порядковые номера каждой единицы продукта, и расположены они в столбик. Их может быть и 1 шт. и 5000 шт.
Продукция проверяется не по порядку и не за один день. Проверенные - отмечаются цветом, например зеленым сегодня, а красным-завтра.
Как это можно осуществить в автоматическом режиме?  
Изменено: Александр Зубков - 21.10.2020 14:31:18
 
Александр Зубков, у вас нет тут выделенных цветом ячеек
Не бойтесь совершенства. Вам его не достичь.
 
Простите, мой косяк. Не цвет ячейки а цвет текста.  
 
Александр Зубков, мда...чет не очень вариант может как то в массивы можно или чет такое) 8.5 сек. работал на 6523 строки
Код
Sub dsd()
Dim i As Long, col As New Collection, lr As Long
'a = Timer
Application.DisplayAlerts = False
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lr
On Error Resume Next
    If Cells(i, 1).Font.ColorIndex <> 1 Then col.Add Cells(i, 1).Font.ColorIndex, CStr(Cells(i, 1).Font.ColorIndex)
Next i
n = 4
For i = 1 To col.Count
    k = 4
    For Z = 1 To lr
        If col(i) = Cells(Z, 1).Font.ColorIndex Then
        Cells(Z, 1).Copy Destination:=Cells(n, k)
            If k + 1 <= 8 Then
                k = k + 1
            Else
                n = n + 1
                k = 4
            End If
        End If
    Next Z
    n = n + 1 + 1
    Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'MsgBox Timer - a
End Sub

Изменено: Mershik - 21.10.2020 15:14:29
Не бойтесь совершенства. Вам его не достичь.
 
ОГО какой код. Сейчас попробую. Максимально у нас может быть до 10000 единиц в заказе. И обрабатывать их в ручную все равно на несколько порядков дольше чем 8,5 секунд. :D ДА ДАЖЕ ЕСЛИ 20 СЕКУНД, ВООБЩЕ НЕ БЕДА.
И я так понимаю, нужно в макрос этот код прописать?
Изменено: Александр Зубков - 22.10.2020 08:02:34
 
Всё, разобрался, работает просто супер. Огромное спасибо Mershik. Подскажите, а на каком языке написан код?  
Изменено: Александр Зубков - 22.10.2020 08:37:23 (Добавить вопрос)
 
Цитата
Александр Зубков написал:
Подскажите, а на каком языке написан код?  
ну если вы находитесь на форуме по Excel - То логично что VBA
Не бойтесь совершенства. Вам его не достичь.
 
Александр Зубков, почему собираете именно в такие блоки? Чем не устроил фильтр по цвету шрифта?
Скрин
Изменено: Jack Famous - 22.10.2020 10:33:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Собирать в такие блоки необходимо для создания паспорта на продукцию. В вордовский файл вставляется таблица готовых номеров. И каждый раз при создании паспорта нужно залесть в карту контроля, где записаны номера в столбик, там их вручную фильтруешь по цвету шрифта. Затем переводишь их в строки и копированием перенесишь в паспорт. А т.к. в ворд в строку больше 10 номеров не влезает и порядок номеров должен быть слева на право, приходиться заниматься этим вручную.
Изменено: Александр Зубков - 22.10.2020 10:55:47
 
Mershik,, подскажите, что нужно изменить в коде , что бы в строке выходило не пять номеров подряд, а 10 ? Я уже второй час пытаюсь переделать код и не получается.
 
Можете не отвечать, разобрался что к чему благодаря вот этому https://www.kgasu.ru/upload/iblock/0e1/vba.pdf. Еще раз огромное спасибо.
Страницы: 1
Наверх