Возникла задача на работе: составлять паспорта на продукцию раз в день по мере готовности продукции. Есть карта контроля. В ней указываются порядковые номера каждой единицы продукта, и расположены они в столбик. Их может быть и 1 шт. и 5000 шт. Продукция проверяется не по порядку и не за один день. Проверенные - отмечаются цветом, например зеленым сегодня, а красным-завтра. Как это можно осуществить в автоматическом режиме?
Александр Зубков, мда...чет не очень вариант может как то в массивы можно или чет такое) 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
ОГО какой код. Сейчас попробую. Максимально у нас может быть до 10000 единиц в заказе. И обрабатывать их в ручную все равно на несколько порядков дольше чем 8,5 секунд. ДА ДАЖЕ ЕСЛИ 20 СЕКУНД, ВООБЩЕ НЕ БЕДА. И я так понимаю, нужно в макрос этот код прописать?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Собирать в такие блоки необходимо для создания паспорта на продукцию. В вордовский файл вставляется таблица готовых номеров. И каждый раз при создании паспорта нужно залесть в карту контроля, где записаны номера в столбик, там их вручную фильтруешь по цвету шрифта. Затем переводишь их в строки и копированием перенесишь в паспорт. А т.к. в ворд в строку больше 10 номеров не влезает и порядок номеров должен быть слева на право, приходиться заниматься этим вручную.
Mershik,, подскажите, что нужно изменить в коде , что бы в строке выходило не пять номеров подряд, а 10 ? Я уже второй час пытаюсь переделать код и не получается.