Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MS Excel 2003: Reorganizar datos al exportar datos sin procesar
Este tutorial de Excel describe cómo escribir una macro para reorganizar datos (con capturas de pantalla e instrucciones paso a paso) en una exportación de datos sin procesar en Excel 2003 y versiones anteriores.
P: En Microsoft Excel 2003/XP/2000/97, tengo una hoja de cálculo con algunas exportaciones de datos sin procesar. Sin embargo, los datos deben reorganizarse de la siguiente manera:
Si la celda M? muestra “Información del contrato”, copie y pegue el sistema operativo de la celda en la celda M en la misma fila
Si la celda K? dice “Ubicación”, corte y pegue las celdas K-AD en la celda T en la misma fila.Luego copie y pegue la celda KS de la fila anterior hasta K en esta fila
Copie el nombre de la categoría en la columna L reemplazando “cargar”
R: Veamos un ejemplo.
Descargue la hoja de cálculo de Excel (que se muestra a continuación)
En esta hoja de cálculo, creamos una macro llamada Reorganizar datos. Puede ejecutar macros seleccionando Macros > Macros en el menú Herramientas. Luego resalte la macro llamada Reorganizar datos y haga clic en el botón Ejecutar.
Después de que se ejecute la macro, la hoja de cálculo se verá así:
Puede presionar Alt+F11 para ver el código VBA.
codigo macro
El código de la macro se ve así:
Sub RearrangeData() Dim LRow As Integer Dim LCategory As String LRow = 1 LCategory = "" 'Move through records until an empty cell is found in column A While IsEmpty(Range("A" & CStr(LRow)).Value) = False 'If cell M? displays "Contract Information" then copy and paste 'cells O-S into cell M of the same row If Range("M" & CStr(LRow)).Value = "Contract Information" Then Range("O" & LRow & ":S" & LRow).Select Selection.Copy Range("M" & LRow).Select ActiveSheet.Paste End If 'If cell K? displays "Location" then cut and paste cells K-AD into 'cell T of the same row. Then copy and paste the previous row's 'cells K-S down to K into this row If Range("K" & CStr(LRow)).Value = "Location" Then 'Cut and paste cells K-AD into cell T of the same row Range("K" & LRow & ":AD" & LRow).Select Selection.Cut Range("T" & LRow).Select ActiveSheet.Paste 'Copy and paste the previous row's cells K-S down to K 'into this row Range("K" & LRow - 1 & ":S" & LRow - 1).Select Selection.Copy Range("K" & LRow).Select ActiveSheet.Paste End If 'Copy down the category name in Column L replacing "Loads" If Range("L" & CStr(LRow)).Value = "Loads" Then Range("L" & CStr(LRow)).Value = LCategory 'Next category name Else LCategory = Range("L" & CStr(LRow)).Value End If LRow = LRow + 1 Wend End Sub