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: pruebe cada valor en la columna A y copie los valores coincidentes en la nueva hoja de trabajo
Este tutorial de Excel explica cómo escribir una macro para probar cada valor en una columna y copiar el valor coincidente en una nueva hoja de cálculo en Excel 2003 y versiones anteriores (con capturas de pantalla e instrucciones paso a paso).
Pregunta: En Microsoft Excel 2003/XP/2000/97, ¿cómo escribo una macro de Excel que necesita comparar los datos en la columna A y copiar los valores coincidentes en una nueva hoja de cálculo?
Entonces, si hay 100 filas en la hoja de cálculo y las primeras 50 filas tienen los mismos datos en la columna A, pero A51 contiene valores diferentes y desea copiar los datos de A2 a A50 en la nueva hoja de cálculo.
Luego, la macro continuará comparando los valores en la columna A comenzando en la celda A51 hasta que se encuentre un valor diferente. Luego copia los datos en una nueva hoja de cálculo, y así sucesivamente… hasta que se evalúan todos los valores en la columna A.
Respuesta: Debería poder crear una macro para probar cada valor en la columna A y buscar diferencias.
Veamos un ejemplo.
Descargue la hoja de cálculo de Excel (que se muestra a continuación)
En nuestra hoja de cálculo, creamos un botón llamado “Copiar datos” en la tabla de datos. Cuando el usuario hace clic en este botón, se ejecutará una macro llamada CopyData. Esta macro analizará cada valor en la columna A para buscar diferentes valores.
Cuando se encuentra un valor diferente en la columna A de la tabla de datos, la macro copia los valores de las columnas A a D en el valor diferente y lo pega en una nueva tabla.
Entonces, en este ejemplo, copia todas las filas hasta llegar a los valores de Microsoft en la celda A8 (en la hoja de datos) y pega esos valores en una nueva hoja llamada “Tecnología en la red”.
Luego, la macro regresa a la columna A en la hoja de datos y continúa analizando los valores a partir de la celda A8.
Luego crea otra hoja llamada “Microsoft” y copia los datos de Microsoft en esta nueva hoja.
Cuando se complete la macro, aparecerá el cuadro de mensaje anterior.
Puede presionar Alt+F11 para ver el código VBA.
codigo macro
El código de la macro se ve así:
Sub CopyData() Dim LMainSheet As String Dim LRow As Integer Dim LContinue As Boolean Dim LColAMaster As String Dim LColATest As String 'Retrieve name of sheet that contains the data LMainSheet = ActiveSheet.Name 'Initialize variables LContinue = True LRow = 2 'Start comparing with cell A2 LColAMaster = "A2" 'Loop through all column A values until a blank cell is found While LContinue = True LRow = LRow + 1 LColATest = "A" & CStr(LRow) 'Found a blank cell, do not continue If Len(Range(LColATest).Value) = 0 Then LContinue = False End If 'Found occurrence that did not match, copy data to new sheet If Range(LColAMaster).Value <> Range(LColATest).Value Then 'Copy headings Range("A1:D1").Select Selection.Copy 'Add new sheet and paste headings into new sheet Sheets.Add.Name = Range(LColAMaster).Value ActiveSheet.Paste Range("A1").Select 'Copy data from columns A - D Sheets(LMainSheet).Select Range(LColAMaster & ":D" & CStr(LRow - 1)).Select Selection.Copy 'Paste results Sheets(Range(LColAMaster).Value).Select Range("A2").Select ActiveSheet.Paste Range("A1").Select 'Go back to Main sheet and continue where left off Sheets(LMainSheet).Select LColAMaster = "A" & CStr(LRow) End If Wend Range("A1").Select Application.CutCopyMode = False MsgBox "Copy has completed." End Sub