La verdad que 500 ms es mucho tiempo para un delay si quieres tener algo a "tiempo real". Manejando directamente el puerto serie, yo creo que puedes conseguir muy buenos resultados. Minimiza esos delays.
Luego en excel, la forma de escribir en celdas es MUY importante. Lo mejor es ir guardando en un array e igualar el array a un rango. También no estar calculando todo el rato y actualizando (visualmente)....Todo esto en VBA.
Busca por Application.Calculation, Application.ScreenUpdating, uso de rangos,....
Te puedo asegurar que estas cosillas importan y mucho si estas manejando gran cantidad de datos a la hora de hacerlas efectivas para Excel.
Te puedes crear unas funciones en VBA para pasar array a rangos y viceversa. Vas recibiendo datos, metiendolos a un array y cada cierto tiempo actualizas el rango, los cálculos, screenupdating,...
Saludos,
Igor R.