Ordenar filas automáticamente en excel
Tengo una tabla que mas o menos para que me entiendan seria
Nombre- puntos- valor- negativo
Debajo de cada encabezado que seria algo como lo de arriba irían todos los datos y me gustaría que se ordenara automáticamente cada vez que se modifique los puntos siendo de mayor a menor, quiero que cada vez que cambie los puntos se mueva de lugar la fila correspondiente al completo
1 respuesta
Usa esta macro para que puedas ordenar de manera automática según vas escribiendo
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
With Range("A:B")
.Sort key1:=.Cells(1, 2), Header:=xlYes '.... aca indicas la columna para el orden que deseas
End With
End If
End Sub
lo he probado y me funciona pero me lo ordena de menor a mayor y me gustaría que fuese de mayor a menor
y otra cosa que me gustaría que hiciera es que los datos que se van a ordenar con esta macro son datos que se modifican automáticamente al meter unos datos en otra hoja con lo cual los datos se modifican me no se ordenan, solo se ordenan si yo cambio algo manualmente en dicha tabla
Lo de ordenar de mayor a menor ya lo he averiguado por otro lado solo me faltaría saber como hacer para que no tenga necesariamente que escribir en esas celdas para que se organice ya que dichas celdas se modifican automáticamente
Disculpa sino respondí a tiempo estuve algo ocupado, que bueno que ayas encontrado la primera solución, ahora consulta tiene 2 hojas una de ellas me imagino hoja2 en donde tienes tus datos y se ordenan de mayor a menor como deseas y en la hoja1 tiene una tabla dinámica de donde deseas que se refresque la información si lo que desea es refrescar la tabla dinámica usa esta linea.
Private Sub Worksheet_Activate()
ActiveSheet.PivotTables(“TablaDinámica1”).PivotCache.Refresh
End Sub
no te preocupes te lo agradezco igualmente, no se si me explique bien o es que yo creo que me has entendido mal, yo tengo dos hojas en una de ellas están los datos que yo quiero que se ordenen automáticamente y en otra hoja tengo una serie de datos que no es un formulario que cuando se cambian automáticamente me cambia los datos de mi primera hoja, entonces yo lo que quiero es que cuando yo en mi segunda hoja modifique los datos a la vez que me modifica los datos de la primera hoja (eso ya lo hace) pues que se ordene automaticamente
Disculpa nuevamente la demora estuve viendo tu caso y ojala que esta vez si pueda ayudarte, según entiendo deseas insertar datos en la hoja 2 y que se orden de mayor a menor y se actualicen en la hoja 1 en el mismo orden que la hoja 2 prácticamente que se ha una copia ya que la hoja 1 sera tu hoja de presentación bueno trata de esta manera como ya tienes en la hoja 2 la macro de orden de mayor a menor de forma automática, crea un modulo y coloca esta macro y seguidamente ingresa en la hoja 1 y llama a la macro de la siguiente manera. Tal vez demore unos segundos en actualizar pero es porque buscar los valores para refrescar los datos.
Private Sub Worksheet_Activate()
Call Macro1
End Sub
Sub Macro1()
'Parámetros para acelerar la macro
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Set h1 = Worksheets("rango")
Set H2 = Worksheets("hoja1")
filas = h1.Range("A2").CurrentRegion.Rows.Count * 3
filas2 = h1.Range("B2").CurrentRegion.Rows.Count * 3
With H2.Range("A2")
.Resize(filas, 1).Formula = "=OFFSET(rango!A$2,ROUNDDOWN((ROW(RANGO!A3)-3)/1,0),0)"
End With
With H2.Range("B2")
.Resize(filas2, 1).Formula = "=OFFSET(rango!B$2,ROUNDDOWN((ROW(RANGO!B3)-3)/1,0),0)"
End With
For fila = 1 To 650000
If Cells(fila, 1).Value = "0" Then
Rows(fila).Delete
fila = fila - 1
End If
Next fila
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub
que va tio soy muy inútil para esto de las macros, haber intentare explicarme lo mejor posible yo introduzco unos datos en la hoja 2, a la vez que yo introduzco esos datos en la hoja 2 se me modifica la hoja7 automáticamente pero son unos datos que no tienen nada que ver con los de la hoja2. entonces una vez que yo introduzco esos datos en la hoja2 lo que quiero es que en la hoja7 los nuevos datos que se crean se ordenen automáticamente pero sin tener que hacer nada mas ya que no se ordenan a no ser que yo modifique directamente los datos en la hoja7. bien dicho esto he de decir que soy un poco inútil en esto de las macros asi que te pediría por favor que me digas exactamente donde va cada cosa y si habiéndote dicho el numero de las hojas yo creo que la macro que me has enviado habrá que modificar algo. y no te preocupes por la tardanza se entiende que todo el mundo tiene cosas que hacer.
Buenos compañeros nadie nació siendo experto, todos empezamos consultando a otros expertos y así aprendemos te explico como hacerlo a ver si esta vez si funciona como deseas.
1. Primero inserta un modulo y coloca lo siguiente luego en la hoja 2 inserta un botón y darle asignar macro y le das en la opción que dice copiar con esto copias los datos de la hoja 2 a la ultima línea vacía de la hoja 7
Sub copiar()
'guardamos en variable la primer fila libre de la hoja7
libre = Sheets("Hoja7").Range("A65536").End(xlUp).Row + 1
'guardamos en variable la última fila ocupada de hoja2
finfila = ActiveSheet.Range("A65536").End(xlUp).Row
'copiamos rango
ActiveSheet.Range("A2:b" & finfila).Copy Destination:=Sheets("Hoja7").Range("A" & libre)
End Sub
Sub duplicados()
Dim rango As Range
Set rango = Range("A:B")
rango.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub
2. Luego vas a la hoja7 y coloca las siguientes lineas
Private Sub Worksheet_Activate()
Call duplicados '....... con esta linea eliminamos los datos repetidos para evitar duplicados
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then '... si le das clik a cualquier dato de la columna se ordena en auto
With Range("A:B")
.Sort key1:=.Cells(1, 2), order1:=xlDescending, Header:=xlYes
End With
End If
End Sub
Prueba esas líneas y me avisas.
de verdad que es que me pierdo un poco con tu explicación: 1. Primero inserta un modulo y coloca lo siguiente luego en la hoja 2 inserta un botón y darle asignar macro y le das en la opción que dice copiar con esto copias los datos de la hoja 2 a la ultima línea vacía de la hoja 7
no llego a comprenderlo por ejemplo el donde se inserta el botón, me dices coloca lo siguiente, lo de copiar los datos de la hoja 2 hasta lo ultimo de la hoja 7. son muchas cosas ahí una detrás de otra que no llego a entender, deberías de poner si no es mucha molestia paso por paso
aunque después de leerlo varias veces creo que lo entendí bien y lo he hecho todo tal como dices, el botón que me dices de crear entiendo que lo que hace una vez que inserte los datos después le doy al botón y debería de ordenarse los datos que quiero pero me sale un error y al darle a depurar esto es lo que me marca.
¿No se si será más fácil pero te lo digo por si acaso existe la posibilidad de lo siguiente? De que se ordenen los datos de la hoja 7 tal como ya teníamos de mayor a menor cuando en la hoja 2 se modifique algún dato en cualquier celda de la columna QUE, te digo esto por si fuese algo más sencillo de crear ya que los datos que me hacen modificar los datos de la hoja 7 siempre son los introducidos en la columna QUE de la hoja2, algo así como que dada vez que se modifique un dato en esa columna pues ordene la tabla de la hoja 7
Ya veo tu problema lo que pasa es que tus hojas tienen nombres en vez de colocar hoja 7 colocar "nombre de la hoja" de igual manera para la hoja 2, seria bueno que cuando solicites apoyo puedas brindar toda la información en base a tus datos de manera que se pueda ayudar con mayor exactitud, envíame tu excel que vienes trabajando a mi correo y me indicas cuales deseas que se te apoye al correo [email protected] no olvides valorar el apoyo para cerrar el caso
- Compartir respuesta