Tengo 2 tablas donde algunos nombres se repiten en ambas tablas, hacer que los nombres que no se repiten entren en una 3ra tabla

Tengo una Tabla A y una Tabla B, donde los nombres se repiten, como hacer para que los nombres de la Tabla A que no están repetidos en la Tabla B y se ingresen en una nueva Tabla C, además en la Tabla A se repiten nombres estos deben ingresar también en la Tabla C pero solo una vez. En caso de dar la respuesta en visual basic, por favor explicarlo bien dado que no tengo mucho conocimiento sobre este.

2 respuestas

Respuesta
Respuesta

Aquí tienes un ejemplo de cómo se podría implementar:

Sub CrearTablaC()
    ' Crear TablaC
    Dim TablaC As New DataTable()
    TablaC.Columns.Add("Nombre", GetType(String))
    ' Recorrer TablaA
    Dim TablaA As DataTable ' Supongamos que ya tienes la TablaA con los datos
    Dim TablaB As DataTable ' Supongamos que ya tienes la TablaB con los datos
    For Each filaA As DataRow In TablaA.Rows
        Dim nombre As String = filaA("Nombre").ToString()
        ' Verificar si el nombre está en TablaB
        Dim nombreEnTablaB As Boolean = False
        For Each filaB As DataRow In TablaB.Rows
            If filaB("Nombre").ToString() = nombre Then
                nombreEnTablaB = True
                Exit For
            End If
        Next
        ' Verificar si el nombre ya está en TablaC
        Dim nombreEnTablaC As Boolean = False
        For Each filaC As DataRow In TablaC.Rows
            If filaC("Nombre").ToString() = nombre Then
                nombreEnTablaC = True
                Exit For
            End If
        Next
        ' Agregar el nombre a TablaC si no está en TablaB ni en TablaC
        If Not nombreEnTablaB And Not nombreEnTablaC Then
            TablaC.Rows.Add(nombre)
        End If
    Next
    ' TablaC contiene los nombres que no se repiten
    ' Puedes hacer lo que necesites con TablaC, como mostrarla en un DataGridView o guardarla en una base de datos, etc.
End Sub

Gracias por la respuesta, pero como mencione no tengo mucho conocimiento de VBA, por ende le consulto, en el caso de que la Tabla A este en una hoja de excel (hoja1) y la Tabla B en otra (hoja2) y se requiere que la tabal C se genere en la segunda hoja (hoja2) de excel como se haría, además de como le hago para designar donde se genera la Tabla C.

Esper que función el código:

Sub CrearTablaC()
' Definir variables de hojas de Excel
Dim hojaA As Worksheet
Dim hojaB As Worksheet
Dim hojaC As Worksheet
' Especificar las hojas de Excel donde se encuentran los datos
Set hojaA = ThisWorkbook.Sheets("hoja1")
Set hojaB = ThisWorkbook.Sheets("hoja2")
Set hojaC = ThisWorkbook.Sheets("hoja2")
' Definir rango de datos en las hojas A y B
Dim rangoA As Range
Dim rangoB As Range
Dim celdaA As Range
Dim celdaB As Range
Set rangoA = hojaA.Range("A1:A" & hojaA.Cells(Rows.Count, 1).End(xlUp).Row)
Set rangoB = hojaB.Range("A1:A" & hojaB.Cells(Rows.Count, 1).End(xlUp).Row)
' Crear TablaC
Dim TablaC As ListObject
Set TablaC = hojaC.ListObjects.Add(xlSrcRange, rangoB, , xlYes)
TablaC.Name = "TablaC"
' Recorrer los nombres en la hoja A
For Each celdaA In rangoA
    Dim nombre As String
    nombre = celdaA.Value
    ' Verificar si el nombre está en la hoja B
    Dim encontrado As Boolean
    encontrado = False
    For Each celdaB In rangoB
        If celdaB.Value = nombre Then
            encontrado = True
            Exit For
        End If
    Next celdaB
    ' Verificar si el nombre ya está en TablaC
    Dim encontradoEnTablaC As Boolean
    encontradoEnTablaC = False
    For Each celda In TablaC.ListColumns(1).DataBodyRange
        If celda.Value = nombre Then
            encontradoEnTablaC = True
            Exit For
        End If
    Next celda
    ' Agregar el nombre a TablaC si no está en la hoja B ni en TablaC
    If Not encontrado And Not encontradoEnTablaC Then
        TablaC.ListRows.Add
        TablaC.ListColumns(1).Range.Cells(TablaC.ListRows.Count).Value = nombre
    End If
Next celdaA
' Se ha creado TablaC en la hoja2
End Sub

En este ejemplo, asumimos que las hojas de Excel se llaman "hoja1" y "hoja2", y que la columna donde se encuentran los nombres es la columna A. Asegúrate de ajustar los nombres de las hojas y los rangos de acuerdo a tu archivo de Excel.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas