Escribir en una celda referenciada en otra.

21/12/2005 - 12:58 por CarlosOrtega | Informe spam
Hola,

Por favor, ¿ cómo podría hacer esto ?.
Tengo en A1 el valor 5.
Escribir en la celda B5 un texto cualquiera, por ejemplo "X".

La idea es que si en A1 se escribe 10, sea en la celda B10 donde se
escribiría "X".

Gracias.
Carlos.

Preguntas similare

Leer las respuestas

#6 CarlosOrtega
21/12/2005 - 14:51 | Informe spam
Hola KL,

Muchas Gracias !.

Carlos.

"KL" escribió:

Hola Carlos,

> Pero, ¿ habría alguna solución sin incluir en el rango [B1:B20] esta fórmula

Si, claro - lo unico es que habria que recurrir a macros. Prueba hacer lo siguiente:

1) Haz clic-derecho sobre el nombre de la hoja en cuestion (en una de las pestañas de la parte de abajo de la ventana de Excel).
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, en la ventana mas grande a la derecha pega el codigo que te pongo a continuacion:

'--
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
On Error Resume Next
[B:B].ClearContents: Cells([A1], "B") = "X"
End Sub
'--

4) Ahora pulsa Alt+F11 para volver a la hoja.
5) Prueba cambiar el valor de la celda [A1]

Saludos,
KL


Respuesta Responder a este mensaje
#7 Gabriel Raigosa
21/12/2005 - 15:22 | Informe spam
Saludos:

Se me ocurrió hacer esto

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Range("B:B").Select
Selection.ClearContents
columna = 2
fila = Range("a1").Value
Cells(fila, columna) = "x"
Range("a1").Select
End Sub

Lo coloca en la hoja en la cual desea cambiar la celda A1
y que ese cambio ponga una "X" en la fila anotada.

Se debe validar la celda A1, para que solo reciba numeros
enteros entre 1 y 65536

Gabriel Raigosa
Medellín - Colombia

"CarlosOrtega" escribió en el
mensaje news:
Hola,

Por favor, ¿ cómo podría hacer esto ?.
Tengo en A1 el valor 5.
Escribir en la celda B5 un texto cualquiera, por ejemplo "X".

La idea es que si en A1 se escribe 10, sea en la celda B10 donde se
escribiría "X".

Gracias.
Carlos.
Respuesta Responder a este mensaje
#8 KL
21/12/2005 - 16:09 | Informe spam
Hola Gabriel,

Si interesa mi punto de vista :-) aqui te lo expongo.

A mi ver el codigo que propones tiene varias oportunidades de optimizacion:
1) Se selecciona el rango [B:B] lo cual es innecesraio y ademas requiere de Application.ScreenUpdating = False
2) Se selecciona la celda [A1] al final lo cual ademas de lo mencionado en el punto 2 es un poco intrusivo - que tal si el usuario
quisiera que la seleccion permaneciera en donde la habia dejado?
3) La validacion no es imprescindible si pones la instruccion On Error Resume Next
4) La declaracion de las vriables fila y columna es un paso redundante y hace el codigo ineficiente
5) Posiblemente numero 1 de esta lista: El codigo se ejecuta a diestro y siniestro cada vez que recalcule cualquier (!) cosa en la
hoja independientemente de si ha variado el valor de [A1] o no. La solucion con Worksheet_Calculate() solo podria ser justificada si
el valor de la celda [A1] proviniera de una formula (que si es posible).

Suponiendo que es cierto que el valor de la celda [A1] proviene de una formula, la siguienete podria ser la version optimizada:

Private Sub Worksheet_Calculate()
On error Resume Next
Range("B:B").ClearContents
Cells(Range("a1"), 2) = "x"
End Sub

o sacrificando un poco de "performance" a favor de la brevedad:

Private Sub Worksheet_Calculate()
On error Resume Next: [B:B].ClearContents: Cells([A1], 2) = "x"
End Sub



Saludos,
KL





"Gabriel Raigosa" wrote in message news:
Saludos:

Se me ocurrió hacer esto

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Range("B:B").Select
Selection.ClearContents
columna = 2
fila = Range("a1").Value
Cells(fila, columna) = "x"
Range("a1").Select
End Sub

Lo coloca en la hoja en la cual desea cambiar la celda A1
y que ese cambio ponga una "X" en la fila anotada.

Se debe validar la celda A1, para que solo reciba numeros
enteros entre 1 y 65536

Gabriel Raigosa
Medellín - Colombia

"CarlosOrtega" escribió en el mensaje
news:
Hola,

Por favor, ¿ cómo podría hacer esto ?.
Tengo en A1 el valor 5.
Escribir en la celda B5 un texto cualquiera, por ejemplo "X".

La idea es que si en A1 se escribe 10, sea en la celda B10 donde se
escribiría "X".

Gracias.
Carlos.




Respuesta Responder a este mensaje
#9 Gabriel Raigosa
21/12/2005 - 16:25 | Informe spam
Saludos:

Agradezco muchisimo tus comentarios, pues mi fuerte no el la programacion
con el VBA para Excel, estoy tratando de mejorar en ese tema, como decial
alguien en un post anterior, la idea es ser Experto, no creo que en poco
tiempo, ni tampoco al menor costo.

He estado revisando los post que hay en este foro desde el mes de octubre,
muchisimos mas de 3.000.

Y he pensado que la mejor forma de ser experto, claro no an poco tiempo ni
tampoco a bajo costo, es entender cada una de las inquietudes que aca
aparecen.

Hay alguna que estan mas viejas que un periodico de ayer, pero igual las
estoy revisando, e independiende que la persona las vuelva a ver, intentare
responder algunas de ellas y dar mi opinion, asi sea mi solucion la
equivocada o la menos optima. Simpre habra alguien que quiera dar su opinion
sobre el tema y esa sera la forma de aprender.

Otra cosa tengo acceso a internet telefonico, por lo que muchas veces habra
una respuesta antes de la mia.

Pero en resumen, esto es un foro y el foro es para intercambiar ideas, y
compartir experiencias y mientras mas opiniones se intercambien es mas
valioso.

Seguire por aca y espero mejorar mucho mas en el manejo del Excel. Asi es
que con buenos o no tan buenos aportes espero mejorar en este tema (algunos
anos tal vez)

Suerte, TKS y gracias por tus aportes y correciones que para mi son muy
valiosos y bien recibidos.

Gabriel Raigosa
Medellin - Colombia

"KL" escribio en el mensaje
news:
Hola Gabriel,

Si interesa mi punto de vista :-) aqui te lo expongo.

A mi ver el codigo que propones tiene varias oportunidades de
optimizacion:
1) Se selecciona el rango [B:B] lo cual es innecesraio y ademas requiere
de Application.ScreenUpdating = False
2) Se selecciona la celda [A1] al final lo cual ademas de lo mencionado en
el punto 2 es un poco intrusivo - que tal si el usuario quisiera que la
seleccion permaneciera en donde la habia dejado?
3) La validacion no es imprescindible si pones la instruccion On Error
Resume Next
4) La declaracion de las vriables fila y columna es un paso redundante y
hace el codigo ineficiente
5) Posiblemente numero 1 de esta lista: El codigo se ejecuta a diestro y
siniestro cada vez que recalcule cualquier (!) cosa en la hoja
independientemente de si ha variado el valor de [A1] o no. La solucion con
Worksheet_Calculate() solo podria ser justificada si el valor de la celda
[A1] proviniera de una formula (que si es posible).

Suponiendo que es cierto que el valor de la celda [A1] proviene de una
formula, la siguienete podria ser la version optimizada:

Private Sub Worksheet_Calculate()
On error Resume Next
Range("B:B").ClearContents
Cells(Range("a1"), 2) = "x"
End Sub

o sacrificando un poco de "performance" a favor de la brevedad:

Private Sub Worksheet_Calculate()
On error Resume Next: [B:B].ClearContents: Cells([A1], 2) = "x"
End Sub



Saludos,
KL





"Gabriel Raigosa" wrote in message
news:
Saludos:

Se me ocurrió hacer esto

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Range("B:B").Select
Selection.ClearContents
columna = 2
fila = Range("a1").Value
Cells(fila, columna) = "x"
Range("a1").Select
End Sub

Lo coloca en la hoja en la cual desea cambiar la celda A1
y que ese cambio ponga una "X" en la fila anotada.

Se debe validar la celda A1, para que solo reciba numeros
enteros entre 1 y 65536

Gabriel Raigosa
Medellín - Colombia

"CarlosOrtega" escribió en el
mensaje news:
Hola,

Por favor, ¿ cómo podría hacer esto ?.
Tengo en A1 el valor 5.
Escribir en la celda B5 un texto cualquiera, por ejemplo "X".

La idea es que si en A1 se escribe 10, sea en la celda B10 donde se
escribiría "X".

Gracias.
Carlos.







Respuesta Responder a este mensaje
#10 KL
21/12/2005 - 16:47 | Informe spam
Hola Gabriel,

Se que mis respuestas resultan un poco secas y a veces un pelin "pushy" (lease agreasivas) pero [casi] nunca es la intencion. La
causa es mas bien la falta de tiempo (casi siempre tengo que escribir a toda pastilla) y el hecho de que el castellano no sea mi
lengua materna.

...decia alguien en un post anterior, la idea es ser Experto, no creo que en poco tiempo, ni tampoco al menor costo.



Yo eso de experto no se ni como atacarlo, ya que es un concepto super subjetivo. Cada uno de nosotros probablemente tiene a alguien
por experto y posiblemente haya alguien que nos tenga por expertos a nosotros. Es decir tambien es relativo.

Y he pensado que la mejor forma de ser experto, claro no an poco tiempo ni tampoco a bajo costo, es entender cada una de las
inquietudes que aca aparecen.



Estoy totalmente de acuerdo en que la forma mas rapida y segura de aprender es participando en este y otros grupos tanto
respondiendo como preguntando.

Simpre habra alguien que quiera dar su opinion sobre el tema y esa sera la forma de aprender.



Nunca mejor dicho.

Otra cosa tengo acceso a internet telefonico, por lo que muchas veces habra una respuesta antes de la mia.



No importa si llegas mas tarde, lo importante es que anada algo tu respuesta. Muchas veces pasa bastante tiempo hasta que aparezca
la solucion buscada.

Pero en resumen, esto es un foro y el foro es para intercambiar ideas, y compartir experiencias y mientras mas opiniones se
intercambien es mas valioso.



Claro que si.

Seguire por aca y espero mejorar mucho mas en el manejo del Excel. Asi es que con buenos o no tan buenos aportes espero mejorar en
este tema (algunos anos tal vez)



Eso! Sigue enganchado. Creo que todos estamos aqui para mejorar. Por cierto, al final si "el aporte es bueno o no tan bueno" esto lo
decide uno para si mismo y el receptor, digo yo?

Un abrazo y Felices Fiestas,
KL
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida