Eliminar números repetidos en excel
Como puedo eliminar las celdas con números repetidos de 4 cifras en la hoja 1 y los pase a la hoja 2 ordenadamente en forma descendente desde 0000 a 9999 como la imagen
1 respuesta
[Hola
Yo te recomiendo lo siguiente:
- Coloca todo en una sola columna de una hoja cualquiera
- Aplica la herramienta "Quita duplicados" de la pestaña "Datos" (grupo "Herramientas de datos") de la Cinta de Opciones.
- A los datos únicos que te quedarán, aplícales la herramienta "Ordenar" de la misma pestaña (grupo "Ordenar y filtrar)
- Después de eso puedes hacer que se copie/pegue de 100 en 100 en cada columna con macros, ya con registros únicos y ordenados no creo que se te complique
Saludos]
Abraham Valencia
PD: Lo otro es hacerlo todo con macros usando "Arrays", bucles y utilizando el "método de la burbuja" para conseguirlo, pero te aseguro que más será el tiempo que tome pensar y programar cuando puedes hacerlo más rápido con las mismas herramientas de Excel que te he recomendado
Me gustaría con macros ya que no es que se peguen de 100 en 100 es que llegue al ultimo dígito de centena y siga en la otra columna
Ejemplo 0092 y sigue 0103
La idea es que cuando ya se halla eliminado los repetidos, ordenarlos en forma como la imagen; cuando cambie la centena seguirá a la siguiente columna los siguientes números ejemplo
Columna a columna b columna c
0097 0104 0203
0098 0107 0208
[Hola
Suponiendo que ya todos los registros únicos están en la columna "A", usando algo así no deberías tener problema:
Sub Prueba() Dim UltimaFila As Long Dim Celda As Range Dim nColumna As Integer Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row For Each Celda In Range("A1:A" & UltimaFila) Let nColumna = Int(Celda.Value / 100) + 2 Let UltimaFila = Cells(Rows.Count, nColumna).End(xlUp).Row + 1 Cells(UltimaFila, nColumna).Value = Celda.Value Next Celda End Sub
Comentas
Abraham Valencia
Primero un código que me elimine los números repetidos en la hoja 1 y los números que me queden los enviara ordenadamente como la imagen
¿Y por qué no haces lo que te recomendé con las propias herramientas de Excel?
Abraham Valencia
PD: Sabes que aquí nadie nos paga por ayudar ¿cierto?
Y de acuerdo al código si los datos únicos estuvieran en la hoja 1 y quisiera pasarlos a la hoja 2 como la imagen como se modificaría el código
Cuando se trabaja sobre hojas distintas, se hace referencia a ellas, es cuestión de agregarlo pero sobre todo, de entender lo que hace cada línea:
Sub Prueba() Dim UltimaFila As Long Dim Celda As Range Dim nColumna As Integer Let UltimaFila = Worksheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row For Each Celda In Worksheets("Hoja1").Range("A1:A" & UltimaFila) Let nColumna = Int(Celda.Value / 100) + 1 Let UltimaFila = Worksheets("Hoja2").Cells(Rows.Count, nColumna).End(xlUp).Row + 1 Worksheets("Hoja2").Cells(UltimaFila, nColumna).Value = Celda.Value Next Celda End Sub
Abraham Valencia
Se ejecuta muy bien maestro pero podremos agregarle que comience a partir de la primera celda ya que no tengo encabezados y la segunda condición seria que cuando se llegue a la centena 900 me de un espacio de una columna para comenzar en 1000
Al igual que todos por aquí, cuando ayudo me doy tiempos muy cortos dentro de los pocos minutos libres que tengo y por lo tanto, si escribo/hago una macro para ayudar a alguien, la hago de tal modo que justamente no me lleve más que unos cuantos minutos (a veces más si es fin de semana o si es algo realmente de mi interés/curiosidad por su dificultad) y entonces no necesariamente le pongo controles de error (propios o de VBA) o agrego líneas de código que me tomen más tiempo ya que, como siempre digo, para mí lo que hago son ejemplo para los demás, y si quieren usar VBA deben sobre todo entender lo que se les envía, no solo copiarlo/pegarlo.
En tu caso en el bucle "for" debes agregar un "If-Else" que verifique si la fila es la 1, y de ser así que no le sume ese 1 a la variable "UltimaFila". En el caso de las columnas pues igual otro "If" para que cuando la variable "nColumna" sea 10, 20, 30, etc., o sea cuando llega a 1000, 2000, 3000, etc., deje una columna vacía como pareces necesitar. Ah, claro, en eso último el dilema es que debe agregar código de tal modo que agregue esa columna solo la primera vez que encuentra esos número mencionados en la variable pero, justamente de eso se trata la programación, de pensar como hacer las cosas y convertirlas en código y eso, evidentemente, toma tiempo que yo no necesariamente tengo cuando ayudo a la gente.
Abraham Valencia
- Compartir respuesta