быстрый способ скопировать форматирование в excel

У меня есть два бита кода. Сначала стандартный скопируйте и вставьте из ячейки A в ячейку B

Sheets(sheet_).Cells(x, 1).Copy Destination:=Sheets("Output").Cells(startrow, 2)

Я могу сделать почти то же самое, используя

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)

Теперь этот второй метод намного быстрее, избегайте g копирование в буфер обмена и повторная вставка. Однако он не копирует форматирование, как это делает первый метод. Вторая версия почти мгновенно копирует 500 строк, в то время как первый метод добавляет ко времени около 5 секунд. И окончательная версия может содержать до 5000 ячеек.

Итак, мой вопрос, можно ли изменить вторую строку, чтобы включить форматирование ячеек (в основном, цвет шрифта), оставаясь при этом быстрым.

В идеале я хотел бы иметь возможность копировать значения ячеек в массив / список вместе с форматированием шрифтов, чтобы я мог выполнять дальнейшую сортировку и операции с ними, прежде чем я «вставлю» их обратно на рабочий лист ..

Итак, моим идеальным решением было бы что-то вроде

for x = 0 to 5000
array(x) = Sheets(sheet_).Cells(x, 1) 'including formatting
next

for x = 0 to 5000
Sheets("Output").Cells(x, 1)
next

, можно ли использовать строки RTF в VBA или это возможно только в vb.net и т. Д.

Ответ *

Просто чтобы посмотреть, как мои Исходный метод и сравнение нового метода, вот результаты или до и после

Новый код = 65 мс

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)
Sheets("Output").Range("B" & startrow).Font.ColorIndex = Sheets(sheet_).Range("A" & x).Font.ColorIndex 'copy font colour as well

Старый код = 1296 мс

'Sheets("Output").Cells(startrow, 2).Value = Sheets(sheet_).Cells(x, 1)
'Sheets(sheet_).Cells(x, 1).Copy
'Sheets("Output").Cells(startrow, 2).PasteSpecial (xlPasteFormats)
'Application.CutCopyMode = False
12
задан DevilWAH 23 December 2011 в 21:12
поделиться