MS Excel 2003: Limpie la exportación de 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: Limpie la exportación de datos sin procesar

Este tutorial de Excel describe cómo escribir una macro para limpiar las exportaciones de datos sin procesar en Excel 2003 y versiones anteriores (con capturas de pantalla e instrucciones paso a paso).

P: En Microsoft Excel 2003/XP/2000/97, tengo una hoja de cálculo de Excel que contiene algunas exportaciones de datos sin procesar. Sin embargo, los datos no continúan en la misma fila, pasan a la fila siguiente. Cómo construir una macro para mirar la primera entrada “Palabra” en la columna A y moverla a una celda en la fila anterior.

Por ejemplo:

Si la celda A? Diga “TimberWeight”; no es necesario que haga nada.
Si la celda A? Diga “Información del contrato”, el resto de la fila (es decir, las celdas de la A a la H) debe moverse a la fila anterior, la celda M.
Si la celda A? Diga “posición”, el resto de la fila (es decir, las celdas de la A a la T) debe moverse a la fila anterior, la celda T.

Luego, las líneas en blanco deben eliminarse.

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 CleanupData. Puede ejecutar macros seleccionando Macros > Macros en el menú Herramientas. Luego resalte la macro llamada CleanupData 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 CleanupData()

   Dim LRow As Integer

   LRow = 1

   'Move through records until an empty cell is found in column A
   While IsEmpty(Range("A" & CStr(LRow)).Value) = False

      'If cell A? displays "Contract Information" then move the row to
      'cell M of the previous row and then delete the empty row
      If Range("A" & CStr(LRow)).Value = "Contract Information" Then
         'Move the row
         Range("A" & LRow & ":H" & LRow).Select
         Selection.Cut
         Range("M" & LRow - 1).Select
         ActiveSheet.Paste

         'Delete the empty row
         Rows(LRow & ":" & LRow).Select
         Selection.Delete Shift:=xlUp

         'Decrement counter since row was deleted
         LRow = LRow - 1

      'If cell A? displays "Location" then move the row to
      'cell T of the previous row and then delete the empty row
      ElseIf Range("A" & CStr(LRow)).Value = "Location" Then
         'Move the row
         Range("A" & LRow & ":T" & LRow).Select
         Selection.Cut
         Range("T" & LRow - 1).Select
         ActiveSheet.Paste

         'Delete the empty row
         Rows(LRow & ":" & LRow).Select
         Selection.Delete Shift:=xlUp

         'Decrement counter since row was deleted
         LRow = LRow - 1
      End If

      LRow = LRow + 1
   Wend

End Sub