Formatear y ordenar valores de una columna con una macro (ex2007)

12/12/2007 - 08:42 por Teletreks | Informe spam
Saludos a todos, el problema que tengo es el siguiente:

Tengo un rango con determinadas columnas, una de las cuales es la columa
"Abs" en el que se genera el valor absoluto de una serie de movimientos.

La idea es que mediante una macro se seleccione esta columna (hasta donde
alcancen los datos; el número de filas es variable) y le aplique el formato
condicional siguiente:

Formato condicional> Nueva regla de formato> Aplicar formato únicamente a
valores únicos o duplicados: dar formato a los duplicados con el color
amarillo.

Despúes debería ordenar esta columna con la opción del autofiltro (opción
que ya está activada): Ordenar por color de celda, dejando los de color
amarillo en la parte superiio de la columna.

Espero no causar demasiadas molestias.

Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/12/2007 - 00:43 | Informe spam
hola, (...) ???

Tengo un rango con determinadas columnas, una de las cuales es la columa "Abs"
en el que se genera el valor absoluto de una serie de movimientos.
La idea es que mediante una macro se seleccione esta columna (hasta donde alcancen los datos; el numero de filas es variable)
y le aplique el formato condicional siguiente:
Formato condicional> Nueva regla de formato> Aplicar formato unicamente a valores unicos o duplicados:
dar formato a los duplicados con el color amarillo.
Despyes deberia ordenar esta columna con la opcion del autofiltro (opcion que ya esta activada):
Ordenar por color de celda, dejando los de color amarillo en la parte superiio de la columna.



si suponemos que la columna "Abs" esta en la columna "E" y que los datos inician en la fila 2 (no incluye el titulo) -???-
prueba con algo +/- como lo siguiente y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub FormatoOrdenado()
Dim RangoSort As String
With Range(Range("e2"), Range("e2").End(xlDown))
RangoSort = .Offset(-1).Resize(.Rows.Count + 1).Address
.FormatConditions.AddUniqueValues
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
.DupeUnique = xlDuplicate
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
.StopIfTrue = False
End With
.Parent.Sort.SortFields.Clear
.Parent.Sort.SortFields.Add(Range(.Address), _
xlSortOnCellColor, xlAscending, , xlSortNormal) _
.SortOnValue.Color = RGB(255, 255, 0)
With .Parent.Sort
.SetRange Range(RangoSort)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
Respuesta Responder a este mensaje
#2 Teletreks
14/12/2007 - 13:37 | Informe spam
Hola Hector, encantado de saludarte otra vez.

Verás, la primera parte de la macro funciona a la perfección, per luego no
me los ordena... no se si estoy haciendo algo mal?

Lo único que he cambiado ha sido la columna, que en mi caso es "p", seguro
que en algo me equivoco, en todo caso gracias.

Saludos

"Héctor Miguel" escribió:

hola, (...) ???

> Tengo un rango con determinadas columnas, una de las cuales es la columa "Abs"
> en el que se genera el valor absoluto de una serie de movimientos.
> La idea es que mediante una macro se seleccione esta columna (hasta donde alcancen los datos; el numero de filas es variable)
> y le aplique el formato condicional siguiente:
> Formato condicional> Nueva regla de formato> Aplicar formato unicamente a valores unicos o duplicados:
> dar formato a los duplicados con el color amarillo.
> Despyes deberia ordenar esta columna con la opcion del autofiltro (opcion que ya esta activada):
> Ordenar por color de celda, dejando los de color amarillo en la parte superiio de la columna.

si suponemos que la columna "Abs" esta en la columna "E" y que los datos inician en la fila 2 (no incluye el titulo) -???-
prueba con algo +/- como lo siguiente y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub FormatoOrdenado()
Dim RangoSort As String
With Range(Range("e2"), Range("e2").End(xlDown))
RangoSort = .Offset(-1).Resize(.Rows.Count + 1).Address
.FormatConditions.AddUniqueValues
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
.DupeUnique = xlDuplicate
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
.StopIfTrue = False
End With
.Parent.Sort.SortFields.Clear
.Parent.Sort.SortFields.Add(Range(.Address), _
xlSortOnCellColor, xlAscending, , xlSortNormal) _
.SortOnValue.Color = RGB(255, 255, 0)
With .Parent.Sort
.SetRange Range(RangoSort)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub



Respuesta Responder a este mensaje
#3 Héctor Miguel
14/12/2007 - 18:52 | Informe spam
hola, (...) ???

... la primera parte de la macro funciona... per luego no me los ordena... no se si estoy haciendo algo mal?
Lo unico que he cambiado ha sido la columna, que en mi caso es "p", seguro que en algo me equivoco, en todo caso gracias.



solo "dejaste a medias la consulta"... (no indicaste que tambien querias ordenar los valores, solo por el color) -?-
si este es el caso, solo necesitas agregar el nuevo criterio de ordenacion (ahora para los valores) en ascendente ?

prueba con la siguiente modificacion (rango inicial y el segundo criterio) y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub FormatoOrdenado()
Dim RangoSort As String
With Range(Range("p2"), Range("p2").End(xlDown))
RangoSort = .Offset(-1).Resize(.Rows.Count + 1).Address
.FormatConditions.AddUniqueValues
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
.DupeUnique = xlDuplicate
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
.StopIfTrue = False
End With
.Parent.Sort.SortFields.Clear
.Parent.Sort.SortFields.Add(Range(.Address), _
xlSortOnCellColor, xlAscending, , xlSortNormal) _
.SortOnValue.Color = RGB(255, 255, 0)
.Parent.Sort.SortFields.Add Key:=Range(.Address), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Parent.Sort
.SetRange Range(RangoSort)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

__ las consultas anteriores __
> Tengo un rango con determinadas columnas, una de las cuales es la columa "Abs"
> en el que se genera el valor absoluto de una serie de movimientos.
> La idea es que mediante una macro se seleccione esta columna (hasta donde alcancen los datos; el numero de filas es variable)
> y le aplique el formato condicional siguiente:
> Formato condicional> Nueva regla de formato> Aplicar formato unicamente a valores unicos o duplicados:
> dar formato a los duplicados con el color amarillo.
> Despyes deberia ordenar esta columna con la opcion del autofiltro (opcion que ya esta activada):
> Ordenar por color de celda, dejando los de color amarillo en la parte superiio de la columna.

si suponemos que la columna "Abs" esta en la columna "E" y que los datos inician en la fila 2 (no incluye el titulo) -???-
prueba con algo +/- como lo siguiente y...
si cualquier duda (o informacion adicional)... comentas ?
Respuesta Responder a este mensaje
#4 Teletreks
17/12/2007 - 08:34 | Informe spam
Hola Hector, que tal?

Lo siento, pero no lo veo, he copiado tu macro y sigue sin ordenar por
colores¿¿??¿ me da la impresión que me estoy equivocando en algo.

Gracias por tu interés.

Saludos


"Héctor Miguel" escribió:

hola, (...) ???

> ... la primera parte de la macro funciona... per luego no me los ordena... no se si estoy haciendo algo mal?
> Lo unico que he cambiado ha sido la columna, que en mi caso es "p", seguro que en algo me equivoco, en todo caso gracias.

solo "dejaste a medias la consulta"... (no indicaste que tambien querias ordenar los valores, solo por el color) -?-
si este es el caso, solo necesitas agregar el nuevo criterio de ordenacion (ahora para los valores) en ascendente ?

prueba con la siguiente modificacion (rango inicial y el segundo criterio) y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub FormatoOrdenado()
Dim RangoSort As String
With Range(Range("p2"), Range("p2").End(xlDown))
RangoSort = .Offset(-1).Resize(.Rows.Count + 1).Address
.FormatConditions.AddUniqueValues
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
.DupeUnique = xlDuplicate
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
.StopIfTrue = False
End With
.Parent.Sort.SortFields.Clear
.Parent.Sort.SortFields.Add(Range(.Address), _
xlSortOnCellColor, xlAscending, , xlSortNormal) _
.SortOnValue.Color = RGB(255, 255, 0)
.Parent.Sort.SortFields.Add Key:=Range(.Address), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Parent.Sort
.SetRange Range(RangoSort)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

__ las consultas anteriores __
>> > Tengo un rango con determinadas columnas, una de las cuales es la columa "Abs"
>> > en el que se genera el valor absoluto de una serie de movimientos.
>> > La idea es que mediante una macro se seleccione esta columna (hasta donde alcancen los datos; el numero de filas es variable)
>> > y le aplique el formato condicional siguiente:
>> > Formato condicional> Nueva regla de formato> Aplicar formato unicamente a valores unicos o duplicados:
>> > dar formato a los duplicados con el color amarillo.
>> > Despyes deberia ordenar esta columna con la opcion del autofiltro (opcion que ya esta activada):
>> > Ordenar por color de celda, dejando los de color amarillo en la parte superiio de la columna.
>>
>> si suponemos que la columna "Abs" esta en la columna "E" y que los datos inician en la fila 2 (no incluye el titulo) -???-
>> prueba con algo +/- como lo siguiente y...
>> si cualquier duda (o informacion adicional)... comentas ?



Respuesta Responder a este mensaje
#5 Héctor Miguel
18/12/2007 - 02:52 | Informe spam
hola, (...) ?

Lo siento, pero no lo veo, he copiado tu macro y sigue sin ordenar por colores
me da la impresion que me estoy equivocando en algo...



(me da la impresion de que soy yo quien esta suponiendo/asumiendo/... cosas distintas de la realidad) -???-

podrias comenzar por exponer cuales son las "determinadas columnas" de tu consulta inicial ?
y en cual de ellas tienes el titulo de "Abs" (y el tipo de datos y/o formulas que usas en cada columna) ?
(y cualquier otro detalle que no hubiera salido aun "a la luz", o sea, de los que se van quedando "en el tintero") :))

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida