Excel VBA para mover datos de una tabla a otra en function del nombre de la columna

Creé un procedimiento que realiza un bucle en todas las columnas de encabezado de la tabla 1 y busco la misma columna de encabezado en la tabla 2 para actualizar las celdas de relveant en function del nombre de columna coincidente.

Este es el código para este procedimiento:

Do While i <= SourceTableColumnCount ColumnName = sourceTable.HeaderRowRange(i).Value On Error Resume Next DestColumnIndex = destTable.Range.Find(ColumnName, MatchCase:= True, SearchFormat:=False, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookAt:=xlWhole).Count If Err.Number <> 0 Then 'In case column name in source table is not found in destination table Else destTable.DataBodyRange(DestRowIndex + 1, DestColumnIndex).Value = sourceTable.DataBodyRange(r + 1, i).Value End If i = i + 1 Loop 

El problema es que DestColumnIndex siempre es 1. Aunque el nombre de la columna en la tabla de destino coincide con el nombre de la columna en la tabla fuente. Debería funcionar así:

1- Ir a la primera columna en la tabla 1 y get su valor 2- Ir a la tabla 2 y search el valor del paso 1 3- Para el resultado encontrado, get la range.column (Índice de esta columna) 4- Establecer el valor de la celda donde range (Fila, DestColumnIndex)

mi problema está en el paso 3, donde range.column siempre es 1, por lo que la salida del paso 4 siempre actualiza la celda donde el índice de la columna es 1.

Espero que el problema esté claro.

 Do While i <= SourceTableColumnCount ColumnName = sourceTable.HeaderRowRange(i).Value On Error Resume Next DestColumnIndex = destTable.Range.Find(ColumnName, MatchCase:=True, SearchFormat:=False, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookAt:=xlWhole).Column - destTable.Range.Column + 1 'why would you use .Count?, it is a single cell, its count will always be 1 If Err.Number <> 0 Then 'In case column name in source table is not found in destination table Else destTable.DataBodyRange(DestRowIndex + 1, DestColumnIndex).Value = sourceTable.DataBodyRange(r + 1, i).Value End If i = i + 1 Loop