Duda con excel

StkR

Hola, como se que aquí hay unas cuantas personas que manejan bien de excel, abro hilo a ver si alguien me echa un cable. Lo que quiero no es complicadísimo, pero estoy algo saturado y no caigo en cómo hacerlo "facil":

  • Tengo una lista (A) con unas 7.000 filas. Estas contienen una referencia cada una, individual y única.
  • Tengo otra lista (B) con unas 1.300 filas, igual a la anterior.

Se supone que toda la lista B está contenida en la A, y tengo que eliminar las referencias repetidas que encuentre, tanto de la A, como de la B. En resumen, tendría que borrar las 1.300 filas de la lista B de la lista A, y quedar esta última con unas 5.700 filas.

He pensado en lo de "borrar duplicados", pero claro, me borrariía el duplicado solo (creo), y yo lo que quiero es borrar el duplicado y el original.

Saludos y gracias. También se admite algún trolleo si tiene gracia.

B

Yo me crearía una columna y la rellenaría con un BUSCARV si la encuentra en la otra, así puedes detectar fácil cuáles existen en la otra

1 1 respuesta
SupermaN_CK

ChatGPT dice lo siguiente.

Puedes utilizar un conjunto (set) para eliminar las referencias repetidas de ambas listas. Un conjunto es una colección de elementos únicos, por lo que al convertir ambas listas a conjuntos y luego volver a convertir el conjunto resultante a una lista, obtendrás una lista sin duplicados.

Para hacerlo, primero puedes convertir ambas listas a conjuntos con la función set(). Luego, puedes utilizar la función difference() del módulo sets de Python para obtener la diferencia entre los dos conjuntos. La diferencia entre dos conjuntos es el conjunto de elementos que están presentes en el primer conjunto pero no en el segundo.

A continuación se muestra un ejemplo de cómo podrías hacerlo:

import sets

# Convertir las listas a conjuntos
set_a = set(lista_a)
set_b = set(lista_b)

# Calcular la diferencia entre los conjuntos
difference = sets.difference(set_a, set_b)

# Convertir el conjunto resultante de nuevo a una lista
result = list(difference)

Con esto obtendrás una lista result que contiene las referencias únicas de la lista A que no están presentes en la lista B.

Pd: se me olvidó decirle que era de Excel xD.

2 1 respuesta
Bachoqueto

#1 Para eliminar las filas repetidas de ambas listas, puedes utilizar la función de Excel BUSCARV (que significa "buscar valor" en español). Esta función te permite buscar un valor específico en un rango de celdas y te devuelve el valor de otra celda en ese mismo rango, si se encuentra.

Por ejemplo, si quieres buscar la referencia "XYZ" en la lista A y quieres obtener el valor de la columna B de la misma fila en la que se encuentra "XYZ", puedes utilizar la siguiente fórmula:

=BUSCARV("XYZ",A:A,B:B)

En este caso, "XYZ" es el valor que estás buscando, A:A es el rango de celdas donde quieres buscar "XYZ" y B:B es el rango de celdas donde quieres obtener el valor correspondiente.

Para eliminar las filas repetidas, puedes utilizar la fórmula BUSCARV para buscar cada valor de la lista B en la lista A. Si se encuentra, puedes eliminar la fila correspondiente de la lista A utilizando la función de Excel BORRAR.

Aquí tienes un ejemplo de cómo podrías hacerlo utilizando una macro de Excel:

Abre la pestaña "Desarrollador" en la cinta de opciones de Excel y haz clic en "Insertar" y luego en "Módulo".
Copia y pega el siguiente código en el módulo que acabas de crear:

Sub EliminarFilasRepetidas()
  Dim i As Integer, j As Integer
  Dim valor As String

  ' Recorre cada fila de la lista B
  For i = 1 To 1300
    valor = Worksheets("Hoja1").Cells(i, 1).Value
    ' Busca el valor en la lista A
    j = WorksheetFunction.Match(valor, Worksheets("Hoja1").Range("A:A"), 0)
    ' Si se encuentra, elimina la fila correspondiente de la lista A
    If Not IsError(j) Then
      Worksheets("Hoja1").Rows(j).Delete
    End If
  Next i
End Sub

Haz clic en "Ejecutar macro" y selecciona "EliminarFilasRepetidas" para ejecutar la macro. Esto eliminará las filas repetidas de ambas listas y dejará la lista A con unas 5.700 filas.
Espero que esto te ayude a resolver tu problema. Si tienes alguna otra pregunta o necesitas más ayuda, no dudes en hacerla.

2
StkR

#2 sí, pero eso me llevaría solamente a encontrarlas, y tendría que ponerme a borrar a mano, a no ser que se me escape algo. De verdad, estoy espeso hoy.
#3 otra vez ChatGPT salvando el día. Voy a trastear un poco y a hacer pruebas con 2 listas cortas a ver si cuadra. Gracias.

1 respuesta
B

.

3
Kike_Knoxvil

Yo te puedo hacer una macro mas general por si quieres reutilizarla. Solo tengo que saber si las listas están en diferentes hojas (o incluso si están en diferentes libros) y si el valor a buscar de la lista A (que supongo que es la hoja 1) está en una misma columna o está repartido por toda la hoja

1 respuesta
TRippY

Pegas la B en la A y eliminar duplicados, es ls forma cutre q yo usaba

Ah q pides otra cosa xD tb vale entonces ponerle una condición de si repite cambiar color y luego ordenas por los q tengan color distinto, así te saldrán arriba los repetidos

1 respuesta
StkR

#7 hombre si me haces eso te lo agradecería mucho, la verdad xDD. Las listas están en diferentes libros, pero tengo que ir pegándolas al libro origen donde está la lista A porque me lo han pasado en otro formato, de hecho ya tengo casi todas pegadas, por lo que voy a trabajar en una sola hoja de un mismo libro. El valor a buscar de la lista A está en una misma columna, sí, columna B para ser concreto, por si eso ayuda a la hora de crearlo. Mi idea es hacer una hoja con las 7.000 referencias de la lista A, e ir añadiendo en columnas adyacentes los demás listados que, en teoría, están contenidos en la lista A.

#8 pero eso te borra ambos o solamente 1 de los duplicados? porque yo tengo que borrar ambos.

B

Había una fórmula que te sacaba las repetidas. Has mirado si en condicionantes sacas el dato?.

1 respuesta
StkR

#10 no entiendo, hablas de formato condicional?

1 respuesta
BShP

#1 7000 décimos te has comprado? Madre mía las cabezas...

B

#11 Sí, si lo has podido sacar con eso. He mirado un poco a ver si doy con la fórmula que te digo, a ver si la saco y si serviría.

1 respuesta
StkR

#13 es lo primero que he probado, pero claro, marca los duplicados y ya. El problema es que al ser 7k en un listado y 1,3k en otro, hay que ponerse a buscar no solo el marcado en la columna 1, si no que entonces tienes que buscar a mano en la columna 2 o bien con el filtro, pero 1 a 1. He probado a ordenarlos pero tampoco me funciona. De todas formas, un user se ha ofrecido amablemente a ayudarme por privado. Muchas gracias a todos por la ayuda!

1

Usuarios habituales