manera rápida de copiar formato en excel

Tengo dos bits de código. Primero, una copia estándar pegada de la celda A a la celda B

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

Puedo hacer casi lo mismo usando

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

Ahora este segundo método es mucho más rápido, evitando copiar al portapapeles y pegar nuevamente. Sin embargo, no se copia a través del formato como lo hace el primer método. La segunda versión es casi instantánea para copiar 500 líneas, mientras que el primer método agrega aproximadamente 5 segundos al tiempo. Y la versión final podría tener más de 5000 celdas.

Así que mi pregunta puede modificarse la segunda línea para incluir el formato de celda (principalmente el color de fuente) mientras se mantiene rápido.

Idealmente, me gustaría poder copiar los valores de las celdas en una matriz / lista junto con el formato de fuente para poder ordenarlos y realizar más operaciones antes de "pegarlos" nuevamente en la hoja de trabajo ...

Así que mi solución ideal sería algo como

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

es posible usar cadenas RTF en VBA o solo es posible en vb.net, etc.

Responde*

Solo para ver cómo mi método original y mi nuevo método de comparación, aquí están los resultados o antes y después de

Nuevo código = 65 ms

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

Código antiguo = 1296 mseg

'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

Respuestas a la pregunta(10)

Su respuesta a la pregunta