быстрый способ скопировать форматирование в 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)
Теперь этот второй метод намного быстрее, избегая копирования в буфер обмена и вставки снова. Однако он не копирует форматирование, как первый метод. Вторая версия почти мгновенно копирует 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 и т. д.
Ответ*
Просто чтобы увидеть, как мой метод origianl и новый метод сравниваются, вот результаты или до и после
Новый код = 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