Averiguar la referencia de celda que contiene un dato especifico

08/12/2006 - 22:33 por Miguel | Informe spam
Hola a todos, a ver si me podeis ayudar con este tema.

Necesito averiguar de alguna forma la referencia de una celda, que
pertenece a un rango, con un dato especifico. Por ejemplo, el rango
puede ser el siguiente:
A B C D E F G
1 1 2 3 4
2 5 6 7 8 9 10 11
3 12 13 14 15 16 17 18
4 19 20 21 22 23 24 25
5 26 27 28 29 30



La referencia de la celda que contiene el dato "7" es "C2". Entonces
quiero que esa referencia aparezca en la celda "AG21", puesto que en la
celda "AG20" tiene como dato a buscar el "7".
AA AB AC AD AE AF AG AH
20 1 2 3 4 5 6 7 8
21 C2
22
23
24



Muchas gracias a todos.

Miguel

Preguntas similare

Leer las respuestas

#16 Ivan
10/12/2006 - 03:46 | Informe spam
hola Hector Miguel, nuevamente gracias

prueba con una instruccion que 'evalue' funciones de hoja de calculo +/- como lo siguiente



mañana mismo me liare a hacer pruebas, aunque me temo que las
funciones de hoja de calculo son otra de mis (infinitas) asignaturas
pendientes, pero, como para todo, algun momento tiene que ser el
primero. Segun vaya viendo te comento.

existen variadas y diversas formas/alternativas/... de lograr 'cometidos' [obviamente, conociendo que/como/cuando/donde/...] :))



creo que a estas alturas ni yo mismo lo tengo del todo claro, pues cada
vez que me planteo 'cerrar el proyecto', no se como lo hago, pero
empiezo a complicarme la vida de nuevo y es casi como volver a empezar.

en cualquier caso espero poder ¿en breve? mandarte una muestra aunque
no este acabado del todo.

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#17 Miguel
10/12/2006 - 03:48 | Informe spam
Muchas gracias Hector. Efectivamente, estoy trabajando con un
calendario laboral, pero no me interesa las semanas ni reconocer el
dato de la celda como fecha ya que la cadencia de trabajo tiene varios
condicionantes. Me muevo por colores de celda, colores de borde de
celda y color de fuente. Tenia preparada una imagen ilustrativa para
pegarla aqui pero no puedo pegar nada (oye, he probado a pasarle la
lengua como a los sellos y nada...;-). Bueno, a lo que ibamos... que
las soluciones que me habeis ofrecido me sirven (apabullado estoy con
la repercusion de mi preguntita). Quiero plantearos otra pero lo hare
en un tema nuevo para que sea mas publico. Hasta ahora mismo...

Saludos

Miguel


Héctor Miguel ha escrito:


otra -posible- alternativa, ya que [segun parece]...
-> si estas 'graficando' un ejemplo del calendario de noviembre/2006 [iniciando en 'A1' en 7 columnas y 5/6 filas]...
y buscas la ubiacion del dia-fecha 7 [en 'AG20'] -> asumiendo que se trata del dato-fecha '7 de noviembre de 2006'

op1: usando la funcion num.de.semana del complemento de herramientas para analisis [ATP]...
[AG21] =direccion(num.de.semana(ag20)-num.de.semana(fecha(año(ag20),mes(ag20),0))+1,diasem(ag20),4)

op2: evitando el uso de la funcion num.de.semana...
[AG21] =direccion(truncar(((ag20-fecha(año(ag20),mes(ag20),0))+6)/7)+1,diasem(ag20),4)

-> solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
otras alternativas y sugerencias para trabajar con fechas y calendarios en la pagina de Chip Pearson...
Week Numbers In Excel: http://www.cpearson.com/excel/weeknum.htm

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#18 Ivan
11/12/2006 - 01:05 | Informe spam
hola de nuevo Hector Miguel, permiteme una (pen)ultima consulta

he estado probando tu propuesta, y por lo que veo, me da la impresion
de que Evaluate solo es efectiva sobre la hoja activa (o activando la
hoja de busqueda), al menos para el ej. propuesto. De momento lo he
solucionado usando WorksheetFunction, que parece ir muy bien.

la duda es:-> ¿existe alguna diferencia (en cuanto a rendimiento,
pej.) en el uso de ambas opciones.?

bueno, es una cuestion puramente informativa, porque al fin y al cabo,
como dijo alguien, que importan hoy en dia unos nanosegundos arriba o
abajo (salvo que puedan existir otros inconvenientes)

un saludo y hasta pronto
Ivan

PD:->codigo final (de momento), con una de las pruebas con evaluate
como comentario

Public Function BuscaFi(ByVal fhLibro As Long, _
ByVal hjBusca As String) As Long
On Error Resume Next
BuscaFi = WorksheetFunction.Match(fhLibro, Worksheets(hjBusca).[a:a],
0)
' BuscaFi = Evaluate("match(" & fhLibro & "," &
Worksheets(hjBusca).[a:a].Address & ",0)")
On Error GoTo 0
End Function
Respuesta Responder a este mensaje
#19 Héctor Miguel
11/12/2006 - 01:51 | Informe spam
hola, Ivan !

... me da la impresion de que Evaluate solo es efectiva sobre la hoja activa (o activando la hoja de busqueda)
al menos para el ej. propuesto. De momento lo he solucionado usando WorksheetFunction, que parece ir muy bien.
la duda es:-> existe alguna diferencia (en cuanto a rendimiento, pej.) en el uso de ambas opciones.?
bueno, es una cuestion puramente informativa, porque al fin y al cabo, como dijo alguien
que importan hoy en dia unos nanosegundos arriba o abajo (salvo que puedan existir otros inconvenientes)..



1) puedes 'completar' la funcion evaluate con el nombre de la hoja [en caso necesario] p.e.:
a) Fila = Evaluate("match(" & Busca & ",hoja1!a:a,0)")
b) Fila = Evaluate("match(" & Busca & "," & variable_nombre_hoja & "!a:a,0)")
c) Fila = Evaluate("match(" & Busca & "," & variable_objeto_hoja.Name & "!a:a,0)")
d) ???

2) mas que opinar acerca del rendimiento/velocidad/recursos/etc. de usar evaluate o funciones de hoja de calculo 'en directo'...
pongo a tu disposicion algunos otros puntos que [en algun momento] podrian llegar a tener sus 'asegunes'

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=aunque puedes usar funciones de hoja de calculo [como suproduct] desde vba...
la 'evaluacion' de formulas matriciales no tiene soporte en vba :-((
necesitas 'preguntarle' a excel [la aplicacion donde esta corriendo el vba] cual seria el resultado [me explico]
-> esta 'forma'... NO funciona:
miVariable = Application.WorksheetFunction.SumProduct((Range("123")=1)*(Range("ABC")="A"))
-> a menos que la cambies a:
miVariable = Evaluate("sumproduct((123=1)*(abc=""a""))")
Respuesta Responder a este mensaje
#20 Ivan
11/12/2006 - 02:43 | Informe spam
muchas gracias, Hector Miguel.

Creo que voy a tener que comprarme una materia gris externa (y no tan
de 2ª mano como la mia) para almacenar tanta informacion/ayuda

vuelvo a tomar buena nota, y espero ir poco a poco
comprendiendolo/comprobandolo

muchas gracias de nuevo

un saludo y hasta pronto
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida