MS Excel 2003: pruebe cada valor en la columna A y copie los valores coincidentes en la nueva hoja de trabajo

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