Referenciar una celda

08/09/2007 - 19:38 por Ramon | Informe spam
Hola
Casi no se nada de Excel y no se si lo que quiero se puede hacer, ya me
direis

Quiero que una celda adquiera el valor de la misma celda de la hoja anterior
y de la fila inferior, pero referenciarla de forma relativa, de forma que si
copio la hoja en otra nueva siga haciendo lo mismo, por ejemplo , la celda
C4 de la hoja actual adquiere el valor de la celda C5 de la hoja anterior
No se si me he explicado bien
Gracias
Ramon

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
10/09/2007 - 01:14 | Informe spam
hola, Ivan !

1) > DeLaHojaAnterior = IIf(Len(.Text), .Text, "")

aunque supongo que es otro uso de 0 =falso / <> 0 = verdadero, en este caso no acabo de ver el funcionamiento
cual es la 'paja mental' que se hace excel en este caso para asignar el .text a 'verdadero' y no a 'falso'?
o es que con iif (y supongo que con el si de hoja) el simple hecho de asignar vedadero/falso en si mismos al 1er argumento es suficiente?



[creo que] la explicacion de la funcion en la ayuda en linea de vba sera mas *explicita* que cualquier otro comentario :))
"IIf (Funcion)"
"Devuelve uno de entre dos valores, dependiendo de la evaluacion de una expresion."
"Sintaxis"
"IIf(expr, truepart, falsepart)"

2) > y... espero que no pienses *abusar* con el uso de funciones personalizadas de este tipo :))

aunque no tengo intencion de abusar (inicialmente ni siquiera de usar fuera de algun experimento para aprender)
cual es el riesgo en [el posible abuso de] este tipo de funciones



[basicamente] al haber *volatilizado* la funcion [por si no tuviera el modelo formulas que obliguen al refresco de las formulas]
si se utiliza *abusivamente* este tipo de funciones, en cada re/calculo del modelo tendras muchas/demasiadas/... celdas...
con una funcion *refrescando* el valor que devuelven en cada una de esas muchas/demasiadas/... celdas :-((

saludos,
hector.
Respuesta Responder a este mensaje
#7 Ivan
10/09/2007 - 01:41 | Informe spam
[creo que] la explicacion de la funcion en la ayuda en linea de vba sera mas *explicita* que cualquier otro comentario :))



hola Hector, como siempre, muchas gracias

entre el cansancio y el 'espesor' creo que el que se ha hecho la paja
mental he sido yo.

aunque [+/-] la sintaxis la sabia (o precisamente por ello) no se me
ha ocurrido mirar la ayuda, y la verdad es que [creo que} deja
bastante claro que efectivamente valdria con que la expresion sea
'textualmente' (al fin y al cabo creo que eso es lo que es 0/<>0)
'verdadero/falso'. Pues de otra forma (y este ha sido mi 'retruecano'
mental) tan cierto es que Len(tal) es igual a 0 como que es igual a
1000 , pej.

bueno en cualquier caso creo que este uso de iif combinado con len me
va a venir muy bien para unas practicas que estoy realizando, ...

muchas gracias de nuevo y un saludo
Ivan
Respuesta Responder a este mensaje
#8 Ramon
10/09/2007 - 11:20 | Informe spam
Hola Hector
He copiado la funcion tal como la expones , con el nombre
DeLaHojaAnterior1(), y no funciona, supongo que algo estare haciendo mal, en
la celda aparece " =DeLaHojaAnterior1() " , pero no el valor que deberia
devolver
Gracias de nuevo y saludos
Ramon

"Héctor Miguel" escribió en el mensaje
news:
hola, Ramon !

... funciona... solo hay una cosa que tampoco se como evitar... si es
posible... conseguir
... en celdas en las que en la hoja anterior no hay nada... donde esta la
llamada a la funcion me pone un "0"
ademas son celdas que normalmente contienen texto o nada...



modifica el codigo de la funcion +/- a lo siguiente:

Function DeLaHojaAnterior() As String
Application.Volatile True
With Application.Caller
With .Parent.Parent.Worksheets(.Parent.Index - 1) _
.Range(.Address).Offset(1)
DeLaHojaAnterior = IIf(Len(.Text), .Text, "")
End With
End With
End Function

saludos,
hector.

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