MS Excel 2003: Reorganizar datos al exportar datos sin procesar

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
(Visited 5 times, 1 visits today)