copiar filas según criterio

19/11/2007 - 20:29 por draiko | Informe spam
Hola otra vez,

Estoy buscando una forma de copiar y pegar una fila ( no toda sino un
parte de la misma) de acuerdo a un valor maximo.



Explico de manera mas detallada mi necesidad.


tengo una tabla con varios datos de ventas. En la columna BA tengo los
totales por tienda y deseo buscar el valor maximo de estos totales
de cada tienda ( en el rango BA11:BA22 esta la primera tienda) , una
vez encontrado el valor maximo deseo que se copie la fila pero solo
los datos de la columna AA y AZ de esa fila.


Espero me puedan ayudar.

Saludos

Preguntas similare

Leer las respuestas

#6 draiko
20/11/2007 - 15:35 | Informe spam
On 19 nov, 18:57, Ivan wrote:
hola de nuevo,

olvidate de mis otras respuestas (creo que las voy a quitar) y si
quieres prueba esta macro a ver que tal

'pegalo en un modulo normal
'
Sub MaxVentas_3()
Dim n As Byte, ini As Byte, maximo As Double, Celda As Range
ini = 11
For n = 1 To 10
maximo = Application.max(Range("ba" & ini & ":ba" & ini + 11))
Set Celda = Range("ba" & ini & ":ba" & ini + 11).Find(maximo, _
Range("ba" & ini), xlFormulas, xlWhole)
Range("aa" & Celda.Row & ",az" & Celda.Row).Copy _
Range("ca" & n + 1)
ini = ini + 12
Next
Set Celda = Nothing
End Sub

un saludo
ivan



Hola ivan gracias por tu ayuda e interes, el ejemplo al ejecutarlo
presenta un problema me indica que no se ha definido la variable del
objeto with. adjunto la procion del codigo que se pone en modo de
depuración.

Range("aa" & Celda.Row & ",az" & Celda.Row).Copy Range("ca" & n +
1)

saludos.
Respuesta Responder a este mensaje
#7 Ivan
20/11/2007 - 17:15 | Informe spam
hola,

Hola ivan gracias por tu ayuda e interes, el ejemplo al ejecutarlo
presenta un problema me indica que no se ha definido la variable del
objeto with. adjunto la procion del codigo que se pone en modo de
depuración.
Range("aa" & Celda.Row & ",az" & Celda.Row).Copy Range("ca" & n +
1)



creo que el problema viene de que los totales de las tiendas de la
columna BA los debes de obtener con formulas.

si es asi, te ruego me disculpes pues me di cuenta tras enviar el
mensaje, y, la verdad, pror mas que he intentado solucionarlo
(cambiando pej. xlFormulas por xlValues, que es lo que pensaba) no lo
he conseguido.

de todas formas esperemos que si es este el motivo y alguien que sepa
como arreglarlo esta leyendo esto, nos eche un cable y nos de una
solucion (aparte de si quiere otra opcion mejor)

bueno, lo dicho (sorry) y de todas formas, si alguien no nos da la
solucion antes, esta noche seguire insistiendo

de todas formas, si no tuvieras formulas en la columna Ba, a mi con
valores me funciona perfectamente, (si quieres haz una prueba por
curiosidad pegando solo formatos de origen y valores en otro libro/
hoja y ejecutando la macro sobre esta hoja.

con lo que veas si quieres comentas

un saludo y a ver si alguien se anima a aclarar el tema de las
formulas y find
Ivan
Respuesta Responder a este mensaje
#8 draiko
20/11/2007 - 20:15 | Informe spam
On 20 nov, 11:15, Ivan wrote:
hola,

> Hola ivan gracias por tu ayuda e interes, el ejemplo al ejecutarlo
> presenta un problema me indica que no se ha definido la variable del
> objeto with. adjunto la procion del codigo que se pone en modo de
> depuración.
> Range("aa" & Celda.Row & ",az" & Celda.Row).Copy Range("ca" & n +
> 1)

creo que el problema viene de que los totales de las tiendas de la
columna BA los debes de obtener con formulas.

si es asi, te ruego me disculpes pues me di cuenta tras enviar el
mensaje, y, la verdad, pror mas que he intentado solucionarlo
(cambiando pej. xlFormulas por xlValues, que es lo que pensaba) no lo
he conseguido.

de todas formas esperemos que si es este el motivo y alguien que sepa
como arreglarlo esta leyendo esto, nos eche un cable y nos de una
solucion (aparte de si quiere otra opcion mejor)

bueno, lo dicho (sorry) y de todas formas, si alguien no nos da la
solucion antes, esta noche seguire insistiendo

de todas formas, si no tuvieras formulas en la columna Ba, a mi con
valores me funciona perfectamente, (si quieres haz una prueba por
curiosidad pegando solo formatos de origen y valores en otro libro/
hoja y ejecutando la macro sobre esta hoja.

con lo que veas si quieres comentas

un saludo y a ver si alguien se anima a aclarar el tema de las
formulas y find
Ivan



Ivan

Gracias por tu aporte, cambie las formulas por valores pero me sigue
sliendo el mismo error, voy a ver que le pasa al codigo y te aviso.

saludos
Respuesta Responder a este mensaje
#9 Ivan
20/11/2007 - 22:19 | Informe spam
, cambie las formulas por valores pero me sigue
sliendo el mismo error, voy a ver que le pasa al codigo y te aviso.



hola de nuevo,

a la espera de alguien que nos eche un cable con lo de las formulas, y
mas que nada por curiosidad (pues para tu caso hay otrs muchas formas
y si nadie se anima antes ahora lo miro) con valores a mi me funciona
sin problemas (con xlFormulas como parametro en find).

si quieres echale un ojo a los caracteres de continuacion de linea (1
espacio + guion bajo al final de algunas lineas) pues a veces se
pierden entre los editores del foro y el de vba.

por otro lado en la instruccion que te da el error, aunque parece que
esta bien y de hecho ese no es el error que te da, si la pones en una
sola linea debe llevar un espacio justo despues del copy (solo por si
acaso)

ya te digo, comprueba que la macro te ha quedado tal y como se ve en
el foro (al menos yo la veo bien en google foros)

por ultimo ¿tienes datos en las 120 filas? no estoy seguro de hasta
donde afectara (pensaba que aun no habiendolos te buscaria el 1er cero
y si se inicializaria la variable celda, pero empiezo a dudarlo [luego
lo pruebo])

a ver si hay suerte un saludo
Ivan
Respuesta Responder a este mensaje
#10 Ivan
21/11/2007 - 02:16 | Informe spam
hola de nuevo,

si quieres prueba esta funcion que aparte de evitar el dichoso find es
bastante mas sencilla (sobre todo por que se trata de rangos fijos que
conoces y con pocas celdas) Seguro que se puede hacer con formulas de
hoja pero yo no las controlo, al menos no para generalizarlas para
odos los rangos y tendria que ir uno a uno variando los parametros y
no solo el rango (aunque, para mi pobre consuelo, casi lo consigo,
pero el casi .)

pegala en un modulo normal y usala en los rangos de destino como una
normal
Pej. en la celda donde quieres el contenido de la columna AA (columna
nº27) pones esta formula '=DesRefMax(ba11:ba22;27)' y en la que
quieres lo de AZ cambias el 27 por 52. y asi para las 10 celdas
restantes (puedes seleccionar el rango como con una funcion de hoja)

Public Function DesRefMax(rango As Range, col As Byte) As Range
Dim celda As Range
For Each celda In rango
If celda.Value = Application.max(rango) Then _
Set DesRefMax = Cells(celda.Row, col): Exit Function
Next
End Function

espero te ayude y si quieres comentas

un saludo
Ivan

PD: si alguien sabe como evitar el problema de las formulas y find
sera bienvenido.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida