Como copiar una fila a otra hoja, dependiendo del valor de una celda

04/02/2004 - 10:21 por Anders | Informe spam
Hola,
Estoy utilizando excel para crear un mini-base de datos.

Trabajo con un documento de cinco hojas. La primera
incluye todos los datos, mientras los cuatro siguientes
contienen una parte de los datos.

En cada fila en la primera hoja, una de las celdas
contiene el valor 0,1,2 o 3. Cada fila tiene que aparecer
también en una de las cuatro siguientes hojas, dependiendo
si la celda en cuestión contiene el valor 0,1,2 o 3.

Además, el valor 0,1,2 o 3 puede ir cambiando, así que
expresa el estado de una activiad (0= no iniciado, 1=
iniciado, 2= terminado, 3= anulado). Entonces, p.ej. si en
la primera hoja hay que cambiar el estado de una actividad
(una fila) de 0 a 1, esta fila que ya se ha copiado
automaticamente a la segunda hoja, se tiene que moverse
ahora a la tercera hoja.

¿Existe una forma sencilla de lograr lo arriba mencionado?
Es una función, una fórmula, o una tercera cosa?

Gracias por las sugerencias

Anders

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
05/02/2004 - 08:47 | Informe spam
hola, Anders !

... documento de cinco hojas. La primera incluye todos los datos ... cuatro siguientes ... una parte ...
... cada fila en la primera hoja, una de las celdas contiene el valor 0,1,2 o 3.
Cada fila tiene que aparecer ... en una de las cuatro siguientes hojas ... valor 0,1,2 o 3.
Ademas, el valor 0,1,2 o 3 puede ir cambiando, así que ...
... si en la primer hoja hay que cambiar el estado de una ... fila de 0 a 1
... esta fila que ya se ha copiado automaticamente a la segunda hoja, tiene que moverse ... a la tercera hoja.
¿Existe una forma sencilla de lograr lo arriba mencionado? Es una funcion, una formula, o una tercera cosa?



[considerando que...] lo que necesitas hacer NO parece 'tan sencillo'... :))
[creo que...] solo queda... la 'tercera cosa' =>macros<= :((

para no tener que 'imaginar' las situaciones y operaciones que actualmente haces [y 'como' las haces]...
servira si proporcionas la siguiente informacion:
- ¿como se llaman las hojas?
- ¿cual es la celda [columna] que 'controla' el estado de...? =>y [de preferencia]... ¿cual es el rango?<- ¿'como' es que 'se cambia' el estado de esa fila? =>'manualmente'... 'por codigo'<- ¿hay algun 'identificador' UNICO que permita encontrar 'donde quedo' la fila [segun su 'estatus anterior']?
- ¿como se hace el pase 'automatico' actualmente? =>para no 'cruzar' codigos que pudieran 'interferirse'<- ¿como se 'agregan' [filas con] datos de operaciones nuevas? =>y como se 'eliminan' [si fuera el caso]<
[tengo la -mala?- 'costumbre' de imaginar situaciones que podrian 'entorpecer' el funcionamiento de las macros] :((
=> ¿te serviria si [por codigo] se usan filtros avanzados para hacer los pases 'automaticos' a cada hoja?
[la ventaja seria que los datos anteriores serian reemplazados con los nuevos]
- ya sea por una accion 'a voluntad' como una macro [p.e. asignada a un boton o a un atajo de teclado]
- o... antes de cerrar el libro [etc.]
=> o podrias usar 'autofiltros' [por cada 'estatus'] y pasar 'manualmente' a cada hoja los 'resultados' [...]

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Anders
17/02/2004 - 09:31 | Informe spam
Hola Hector
Acabo de volver de viaje, y no te he podido escribir hasta ahora. Gracias por tu respuesta - a ver si todavía vas mirando el tema (:-

Estoy trabajando en un departamento internacional de una empresa española. El calendario de actividades se utiliza para tener una vista global y control del avance de la mayoria de las actividades del departamento (p.ej. el lanzamiento de producto X en país Y). Donde trabajé antes, teníamos este calendario en un base de datos. Lo que quiero construir es una versión simplificada de aquel base de datos

Mira, las cinco hojas se titulan
- Activity Tabl
- Not initiate
- Initiate
- Complete
- Cancelled

La columna H en la primera hoja de cálculo contiene el valor 0,1,2, o 3 - según el estado de la actividad.
Cada fila representa una actividad (menos la primera que indica el titulo de la columna - la columna H se titula "Activity Status").

Manualmente se cambia el valor de las celdas en la columna H. Como punto de partida el valor es "0" ya que no se ha iniciado la actividad. Según uno va iniciando ("1"), completando ("2"), o cancelando ("3") una actividad - uno pone 1,2 o 3 en la celda correspondiente de la actividad en la fila H.

El rango de columnas es A-

El rango de filas - pues depende del número de actividades, pero me imagino que en un principio se meterán 100 actividades - y en seis meses habrán 300 actividades. Las actividades se agregan manualmente - es decir cada nueva actividad tendrá su fila, utilizando el rango A-N para describir varios parametros de la actividad (p.ej. la columna H describe el estado de la actividad, mientras la columna A indica el número de la actividad - 1,2,3,4,5, etc.

Sé que si no se logra construir este mini-base de datos con cinco hojas, lo que haré será o bien enseñar / recordar a los demás que tienen que acordarse de ir poniendo cada actividad en la hoja "Not initiated", "Initiated", etc. según vayan avanzando - o simplemente utilizar la primera hoja y autofiltro, y nada más. Una tercera oportunidad que no quiero sugerir / eligir es que yo haga de administrador del documento con las obligaciones que supondría..

Bueno, si todavía estas allí, y me puedes ayudar, pues muchas gracias

Si me explico mal, podría ser porque no soy español, o quizá no tiene nada que ver..

Un salud
Anders



hola, Anders

... documento de cinco hojas. La primera incluye todos los datos ... cuatro siguientes ... una parte ..
... cada fila en la primera hoja, una de las celdas contiene el valor 0,1,2 o 3
Cada fila tiene que aparecer ... en una de las cuatro siguientes hojas ... valor 0,1,2 o 3
Ademas, el valor 0,1,2 o 3 puede ir cambiando, así que ..
... si en la primer hoja hay que cambiar el estado de una ... fila de 0 a
... esta fila que ya se ha copiado automaticamente a la segunda hoja, tiene que moverse ... a la tercera hoja
¿Existe una forma sencilla de lograr lo arriba mencionado? Es una funcion, una formula, o una tercera cosa



[considerando que...] lo que necesitas hacer NO parece 'tan sencillo'... :)
[creo que...] solo queda... la 'tercera cosa' =>macros<= :(

para no tener que 'imaginar' las situaciones y operaciones que actualmente haces [y 'como' las haces]..
servira si proporcionas la siguiente informacion
- ¿como se llaman las hojas
- ¿cual es la celda [columna] que 'controla' el estado de...? =>y [de preferencia]... ¿cual es el rango?<
- ¿'como' es que 'se cambia' el estado de esa fila? =>'manualmente'... 'por codigo'<
- ¿hay algun 'identificador' UNICO que permita encontrar 'donde quedo' la fila [segun su 'estatus anterior']
- ¿como se hace el pase 'automatico' actualmente? =>para no 'cruzar' codigos que pudieran 'interferirse'<
- ¿como se 'agregan' [filas con] datos de operaciones nuevas? =>y como se 'eliminan' [si fuera el caso]<

[tengo la -mala?- 'costumbre' de imaginar situaciones que podrian 'entorpecer' el funcionamiento de las macros] :(
=> ¿te serviria si [por codigo] se usan filtros avanzados para hacer los pases 'automaticos' a cada hoja?
[la ventaja seria que los datos anteriores serian reemplazados con los nuevos]
- ya sea por una accion 'a voluntad' como una macro [p.e. asignada a un boton o a un atajo de teclado]
- o... antes de cerrar el libro [etc.]
=> o podrias usar 'autofiltros' [por cada 'estatus'] y pasar 'manualmente' a cada hoja los 'resultados' [...]

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#3 Héctor Miguel
18/02/2004 - 08:39 | Informe spam
hola, Anders !

... - a ver si todavia vas mirando el tema (:-o


=> pues... ¡ aqui estamos !!! ;-)

... las cinco hojas se titulan: - Activity Table - Not initiated - Initiated - Completed - Cancelled
... columna H en la primera ... contiene el valor 0,1,2, o 3 - segun el estado de la actividad.
Cada fila representa una actividad (menos la primera que indica el titulo de la columna ...).
Manualmente se cambia el valor de ... la columna H ... "0" ... no se ha iniciado ... "1" [...]
El rango de columnas es A-N
El rango de filas - pues depende del numero de actividades ... se agregan manualmente [...]
... si todavia estas alli, y me puedes ayudar ... Si me explico mal [...]



espero haber entendido 'cabalmente' :)
prueba con la siguiente macro 'completando' [o corrijiendo] previamente los siguientes 'supuestos':
1.- en la primer hoja [Activity Table] SOLO 'existen' los datos [de la base] en 'A1:N_x_fila'
=> si existen 'otros' datos... se puede 'adaptar' el codigo para que 'reconozca' SOLO la base de datos < la primer fila son los titulos y los datos se 'extienden' desde la fila 2 hasta ...?
2.- en las [4] hojas 'de control' por estatus...
'pones' un rango 'de criterios' [en sus rangos 'A1:A2'] como sigue:
a) en la celda 'A1' EL MISMO titulo que el titulo de la celda 'H1' de la hoja 'principal'
b) en la celda 'A2'... el 'valor del estatus' [segun cada hoja] => 'Not Initiated = 0... 'Initiated' = 1... [etc.]
3.- el codigo 'se encargara' de 'duplicar' los titulos A CADA HOJA en el rango 'A4:N4'
y... a partir de la fila 5 [en cada hoja 'de control'] 'filtrara' cada actividad [segun su estatus en la hoja 'principal']
=> toma nota de que SIEMPRE seran reemplazados los datos POR los nuevos 'estatus' de las actividades < [o sea... no tendras que 'preocuparte' por si se queda un dato 'anterior' en alguna hoja 'de control']
=> solo 'asegurarte' de que en la hoja 'principal'... cada estatus sea... 'el correcto' <= :))

¿comentas?
saludos,
hector.

en un modulo de codigo 'normal' ==Sub Filter_Activities()
Dim Data_Range As String, Status_Sheet As Worksheet
Application.ScreenUpdating = False
With Worksheets("Activity Table")
Data_Range = .UsedRange.Address
For Each Status_Sheet In Worksheets(Array("Not Initiated", "Initiated", "Completed", "Cancelled"))
.Range(Data_Range).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Status_Sheet.Range("a1:a2"), _
CopyToRange:=Status_Sheet.Range("a4:n4")
Next
End With
End Sub
Respuesta Responder a este mensaje
#4 Anders
25/02/2004 - 12:29 | Informe spam
Hola Héctor,
"A buenas horas" te escribo - muchas gracias por tu
respuesta - lo voy a mirar & probar, y ya te contactaré.
Un saludo
Anders

hola, Anders !

... - a ver si todavia vas mirando el tema (:-o


=> pues... ¡ aqui estamos !!! ;-)

... las cinco hojas se titulan: - Activity Table - Not




initiated - Initiated - Completed - Cancelled
... columna H en la primera ... contiene el valor




0,1,2, o 3 - segun el estado de la actividad.
Cada fila representa una actividad (menos la primera




que indica el titulo de la columna ...).
Manualmente se cambia el valor de ... la columna




H ... "0" ... no se ha iniciado ... "1" [...]
El rango de columnas es A-N
El rango de filas - pues depende del numero de




actividades ... se agregan manualmente [...]
... si todavia estas alli, y me puedes ayudar ... Si me




explico mal [...]

espero haber entendido 'cabalmente' :)
prueba con la siguiente macro 'completando' [o


corrijiendo] previamente los siguientes 'supuestos':
1.- en la primer hoja [Activity Table] SOLO 'existen' los


datos [de la base] en 'A1:N_x_fila'
=> si existen 'otros' datos... se puede 'adaptar' el


codigo para que 'reconozca' SOLO la base de datos <> la primer fila son los titulos y los datos
se 'extienden' desde la fila 2 hasta ...?
2.- en las [4] hojas 'de control' por estatus...
'pones' un rango 'de criterios' [en sus


rangos 'A1:A2'] como sigue:
a) en la celda 'A1' EL MISMO titulo que el titulo de


la celda 'H1' de la hoja 'principal'
b) en la celda 'A2'... el 'valor del estatus' [segun


cada hoja] => 'Not Initiated = 0... 'Initiated' = 1...
[etc.]
3.- el codigo 'se encargara' de 'duplicar' los titulos A


CADA HOJA en el rango 'A4:N4'
y... a partir de la fila 5 [en cada hoja 'de


control'] 'filtrara' cada actividad [segun su estatus en
la hoja 'principal']
=> toma nota de que SIEMPRE seran reemplazados los


datos POR los nuevos 'estatus' de las actividades <> [o sea... no tendras que 'preocuparte' por si se
queda un dato 'anterior' en alguna hoja 'de control']
=> solo 'asegurarte' de que en la


hoja 'principal'... cada estatus sea... 'el correcto'
<= :))

¿comentas?
saludos,
hector.

en un modulo de codigo 'normal' ==>Sub Filter_Activities()
Dim Data_Range As String, Status_Sheet As Worksheet
Application.ScreenUpdating = False
With Worksheets("Activity Table")
Data_Range = .UsedRange.Address
For Each Status_Sheet In Worksheets(Array("Not


Initiated", "Initiated", "Completed", "Cancelled"))
.Range(Data_Range).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Status_Sheet.Range("a1:a2"), _
CopyToRange:=Status_Sheet.Range("a4:n4")
Next
End With
End Sub


.

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