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