ORDENAR DATOS, AÚN CON ALGUNAS CELDAS COMBINADAS
Publicado por Quico (106 intervenciones) el 11/02/2019 19:21:47
Lo se! Se que no tendrían que combinarse celdas, pero no tengo más remedio que tener celdas combinadas. La entrada de datos en diferentes periodos, hace que necesite algún sistema para ordenar los valores alfanuméricos.
Tengo columnas de la A a la M, con información variada en cada fila horizontal desde la fila 6 hasta dónde llegue (no suele llegar a la 100)
He creado 2 macros, una tiene como prioridad el orden en la columna B (Story) y otro macro que prioriza el orden de la columna C (Epic). Por supuesto, cuando ordena, mueve con su valor, toda la fila. (para que siempre permanezcan los datos de cada entrada horizontal)
Ahora bien, como algunas celdas son combinadas, hace un efecto muy extraño, digamos que como si se solaparan varios datos en una misma celda.
Estan son las 2 macros. Y para ver el Fx que digo, supongo que tendréis que entrar al excel que adjunto.
Sub OrdenarStory()
Range("B6:B100").Select
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add2 Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja1").Sort
.SetRange Range("B6:M100")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
---------------------------------------------------------------------------------
Sub OrdenarEpic()
Range("C6").Select
Range("C6:C100").Select
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add2 Key:=Range("C6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja1").Sort
.SetRange Range("B6:M100")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
¿Hay forma humana de indicarle a la macro que respete cuando encuentre una CELDA COMBINADA el orden?....y por supuesto el contenido de toda la fila.
Por ejemplo, una celda combinada en columna B (pongamos con valor 'VALOR-50') y que luego tenga 3 filas internas (6,7,8), ordena priorizando el valor 50 de la columna B, pero respetando las 3 filas que por ejemplo contiene (5,6,7)....De tal forma que respecto a B, el VALOR-50 queda ordenado despues de VALOR-49 y antes del VALOR-51 pero manteniendo sus 3 filas internas de A a M ¡No se si me explico! ...es dificil de explicarme, la verdad!
Gracias.
Tengo columnas de la A a la M, con información variada en cada fila horizontal desde la fila 6 hasta dónde llegue (no suele llegar a la 100)
He creado 2 macros, una tiene como prioridad el orden en la columna B (Story) y otro macro que prioriza el orden de la columna C (Epic). Por supuesto, cuando ordena, mueve con su valor, toda la fila. (para que siempre permanezcan los datos de cada entrada horizontal)
Ahora bien, como algunas celdas son combinadas, hace un efecto muy extraño, digamos que como si se solaparan varios datos en una misma celda.
Estan son las 2 macros. Y para ver el Fx que digo, supongo que tendréis que entrar al excel que adjunto.
Sub OrdenarStory()
Range("B6:B100").Select
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add2 Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja1").Sort
.SetRange Range("B6:M100")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
---------------------------------------------------------------------------------
Sub OrdenarEpic()
Range("C6").Select
Range("C6:C100").Select
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add2 Key:=Range("C6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Hoja1").Sort
.SetRange Range("B6:M100")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
¿Hay forma humana de indicarle a la macro que respete cuando encuentre una CELDA COMBINADA el orden?....y por supuesto el contenido de toda la fila.
Por ejemplo, una celda combinada en columna B (pongamos con valor 'VALOR-50') y que luego tenga 3 filas internas (6,7,8), ordena priorizando el valor 50 de la columna B, pero respetando las 3 filas que por ejemplo contiene (5,6,7)....De tal forma que respecto a B, el VALOR-50 queda ordenado despues de VALOR-49 y antes del VALOR-51 pero manteniendo sus 3 filas internas de A a M ¡No se si me explico! ...es dificil de explicarme, la verdad!
Gracias.
- MacroOrdenarDATOS.zip(134,9 KB)
Valora esta pregunta
0