Completar columna con texto al llenar con X otras columnas.

12/08/2012 - 12:16 por borce | Informe spam
¡ Hola !
Buenos días,

Llevo unos días rompiéndome la cabeza y revisando decenas de páginas (además de tirando de google todo lo que puedo) y no he sido capaz de adaptar las soluciones a mi caso concreto.

Verán, tengo un documento con el que trabajamos en Excel 2007, y entre otras muchas macros, estamos intentado sacar una que nos permita autocompletar una columna con el texto que encabeza otras columnas del mismo libro / misma hoja.

Croquis:

A - B - C - P - Q - R

Apellido Nombre Pais Telefono Email CONTROL
Perez - Paco - Andorra - X - "" - Telefono
De Cabeza - Dolores - Mongolia - "" - X - Email
Este Excel - Meda - Vaticano - X - X - Telefono/Email

Los guiones marcan el paso de una celda a otra. Los "" que figuran serían celdas vacías.

Lo que buscamos es que cada vez que se ingrese el valor "X" en la columnas correspondientes a Telefono o Email, nos complete en la columna de control con el texto que encabeza la columna donde hemos ingresado la X.

Espero haber sido suficientemente claro y que me podáis ayudar.

Gracias de ante mano, un saludo.


PD: Se que la función =SI() sería válida para este caso. pero por desgracia una de las macros que lleva este documento limpia todas las celdas del rango afectado a diario para evitar duplicidad de datos.

Noé

Preguntas similare

Leer las respuestas

#1 Emilio
12/08/2012 - 12:41 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!
Si te he entendido bien resulta muy simple, sin embargo un poco "lesivo"
para la eficiencia del libro:

Private Sub Worksheet_Change(ByVal Target As Range)
If LCase(Target.Value) = "x" Then Target.Value = Target.End(xlUp)
End Sub

eso vigilará todos los cambios en todas las celdas, ...

podrías limitar el rango a "vigilar" mediante intersect

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"borce" escribió en el mensaje de
noticias:

¡ Hola !
Buenos días,

Llevo unos días rompiéndome la cabeza y revisando decenas de
páginas (además de tirando de google todo lo que puedo) y no he
sido capaz de adaptar las soluciones a mi caso concreto.

Verán, tengo un documento con el que trabajamos en Excel 2007, y entre
otras muchas macros, estamos intentado sacar una que nos permita
autocompletar
una columna con el texto que encabeza otras columnas del mismo libro / misma
hoja.

Croquis:

A - B - C - P - Q - R

Apellido Nombre Pais Telefono Email CONTROL
Perez - Paco - Andorra - X - "" - Telefono
De Cabeza - Dolores - Mongolia - "" - X - Email
Este Excel - Meda - Vaticano - X - X - Telefono/Email

Los guiones marcan el paso de una celda a otra. Los "" que figuran
serían celdas vacías.

Lo que buscamos es que cada vez que se ingrese el valor "X" en la
columnas correspondientes a Telefono o Email, nos complete en la columna de
control con el texto que encabeza la columna donde hemos ingresado la X.

Espero haber sido suficientemente claro y que me podáis ayudar.

Gracias de ante mano, un saludo.


PD: Se que la función =SI() sería válida para este caso.
pero por desgracia una de las macros que lleva este documento limpia todas
las
celdas del rango afectado a diario para evitar duplicidad de datos.

Noé
Respuesta Responder a este mensaje
#2 Emilio
12/08/2012 - 13:18 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

en concreto así:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, ActiveSheet.Range("A1:F20")) Is Nothing Then
If LCase(Target.Value) = "x" Then Target.Value = Target.End(xlUp)
End If
End Sub
eso limitará el rango supervisado a A1:F20

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Emilio" escribió en el mensaje de
noticias:k0819d$liv$

¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!
Si te he entendido bien resulta muy simple, sin embargo un poco "lesivo"
para la eficiencia del libro:

Private Sub Worksheet_Change(ByVal Target As Range)
If LCase(Target.Value) = "x" Then Target.Value = Target.End(xlUp)
End Sub

eso vigilará todos los cambios en todas las celdas, ...

podrías limitar el rango a "vigilar" mediante intersect

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"borce" escribió en el mensaje de
noticias:

¡ Hola !
Buenos días,

Llevo unos días rompiéndome la cabeza y revisando decenas de
páginas (además de tirando de google todo lo que puedo) y no he
sido capaz de adaptar las soluciones a mi caso concreto.

Verán, tengo un documento con el que trabajamos en Excel 2007, y entre
otras muchas macros, estamos intentado sacar una que nos permita
autocompletar
una columna con el texto que encabeza otras columnas del mismo libro / misma
hoja.

Croquis:

A - B - C - P - Q - R

Apellido Nombre Pais Telefono Email CONTROL
Perez - Paco - Andorra - X - "" - Telefono
De Cabeza - Dolores - Mongolia - "" - X - Email
Este Excel - Meda - Vaticano - X - X - Telefono/Email

Los guiones marcan el paso de una celda a otra. Los "" que figuran
serían celdas vacías.

Lo que buscamos es que cada vez que se ingrese el valor "X" en la
columnas correspondientes a Telefono o Email, nos complete en la columna de
control con el texto que encabeza la columna donde hemos ingresado la X.

Espero haber sido suficientemente claro y que me podáis ayudar.

Gracias de ante mano, un saludo.


PD: Se que la función =SI() sería válida para este caso.
pero por desgracia una de las macros que lleva este documento limpia todas
las
celdas del rango afectado a diario para evitar duplicidad de datos.

Noé
Respuesta Responder a este mensaje
#3 borce
12/08/2012 - 15:01 | Informe spam
Emilio escribió el 12/08/2012 13:18 :
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

en concreto así:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, ActiveSheet.Range("A1:F20")) Is Nothing Then
If LCase(Target.Value) = "x" Then Target.Value = Target.End(xlUp)
End If
End Sub
eso limitará el rango supervisado a A1:F20

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Emilio" escribió en el mensaje de
noticias:k0819d$liv$

¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!
Si te he entendido bien resulta muy simple, sin embargo un poco
"lesivo"
para la eficiencia del libro:

Private Sub Worksheet_Change(ByVal Target As Range)
If LCase(Target.Value) = "x" Then Target.Value = Target.End(xlUp)
End Sub

eso vigilará todos los cambios en todas las celdas, ...

podrías limitar el rango a "vigilar" mediante intersect

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"borce" escribió en el mensaje de
noticias:

¡ Hola !
Buenos días,

Llevo unos días rompiéndome la cabeza y revisando decenas de
páginas (además de tirando de google todo lo que puedo) y no he
sido capaz de adaptar las soluciones a mi caso concreto.

Verán, tengo un documento con el que trabajamos en Excel 2007, y entre
otras muchas macros, estamos intentado sacar una que nos permita
autocompletar
una columna con el texto que encabeza otras columnas del mismo libro / misma
hoja.

Croquis:

A - B - C - P - Q - R

Apellido Nombre Pais Telefono Email CONTROL
Perez - Paco - Andorra - X - "" - Telefono
De Cabeza - Dolores - Mongolia - "" - X - Email
Este Excel - Meda - Vaticano - X - X - Telefono/Email

Los guiones marcan el paso de una celda a otra. Los "" que figuran
serían celdas vacías.

Lo que buscamos es que cada vez que se ingrese el valor "X" en la
columnas correspondientes a Telefono o Email, nos complete en la columna de
control con el texto que encabeza la columna donde hemos ingresado la X.

Espero haber sido suficientemente claro y que me podáis ayudar.

Gracias de ante mano, un saludo.


PD: Se que la función =SI() sería válida para este caso.
pero por desgracia una de las macros que lleva este documento limpia todas
las
celdas del rango afectado a diario para evitar duplicidad de datos.

Noé


Hola Emilio, ante todo muchas gracias por la rapidez en ayudarme.

Creo que no me he explicado bien.

Lo que necesitamos es más que controlar las celdas una macro que nos complete con información. De manera que si ponemos:
"X" en la celda F3, la macro escriba en la celda H3 "Telefonico"
"X" en la G3, la macro escriba en la celda H3 "Email"
"X" en ambas celdas, la macro escriba en la celda H3 "Telefonico/Email"

Y que lo efectúe para un rango delimitado de celdas que sería aproximadamente F3:G300

Evidentemente si puede realizarse para que se realice cada vez que haya un cambio de valores, sería de mucha ayuda, pero si va a dar problemas, y tiene que ser mediante un click de ratón, tampoco pasaría nada.

(Disculpa si no efectué la consulta de una manera más precisa en mi primer post)


De nuevo muchas gracias por la ayuda.

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