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

#11 Héctor Miguel
09/12/2006 - 04:55 | Informe spam
hola, Miguel !

Necesito averiguar de alguna forma la referencia de una celda, que pertenece a un rango, con un dato especifico...



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
#12 Ivan
09/12/2006 - 22:21 | Informe spam
hola de nuevo,

he estado haciendo pruebas con la funcion, y la unica forma en que he
conseguido que me sirva para el caso descrito ha sido cambiando los
formatos antes de buscar y volviendolos a poner despues ->

Sub textMiRef()
Dim result As String, rng As Range
With Hoja1
Set rng = .Range("a1:a" & .[a65536].End(xlUp).Row)
End With
rng.NumberFormat = "0"
result = miRef(rng, 100)
Debug.Print result
rng.NumberFormat = "0000"
Set rng = Nothing
End Sub

¿no es posible la busqueda con Find de numeros formateados? Si
puedes/podeis aclararmelo me vendria muy bien.

En cualquier caso muchas gracias, aunque tenga que usar esta forma creo
que tambien me va a venir de perlas.

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#13 Héctor Miguel
10/12/2006 - 00:28 | Informe spam
hola, Ivan ! [y en tanto regresa KL]...

he estado haciendo pruebas con la funcion, y la unica forma en que he conseguido que me sirva para el caso descrito
ha sido cambiando los formatos antes de buscar y volviendolos a poner despues [...]
no es posible la busqueda con Find de numeros formateados? Si puedes/podeis aclararmelo me vendria muy bien.
En cualquier caso muchas gracias, aunque tenga que usar esta forma creo que tambien me va a venir de perlas.



1) [segun la ayuda de vba-excel] el uso del metodo tiene mas y variadas formas/combinaciones/... de argumentos [p.e.]
.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)
los valores de LookIn, LookAt, SearchOrder, MatchCase y MatchByte se guardan cada vez que se usa este metodo

2) para el argumento del 'What' [asumo que -por omision-] busca 'principalmente' cadenas de texto
[sobre todo si se combina con 'LookIn/LookAt' establecidos en 'xlValues' y 'xlWhole']

3) o sea, para el caso expuesto de numeros con formato de "0000", si se busca '100', la funcion estara encontrando... NADA :-(
a menos que cambies el metodo .Find a:
-> miRef = Rango.Find(Valor, Rango(1, 1), xlValues, xlPart).Address(0, 0)
PERO... encontraria primero [p.e.] 1000 si este se encontrara antes que 0100 :-((

4) otra -posible- alternativa para evitar el des/re/formato del rango donde se busca, pudiera ser buscar en formulas [p.e.]
-> miRef = Rango.Find(Valor, Rango(1, 1), xlFormulas, xlWhole).Address(0, 0)

5) [en resumen]... dependiendo de 'que' necesites buscar/encontrar... habra que 'combinar' las variantes de los argumentos :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#14 Ivan
10/12/2006 - 01:49 | Informe spam
hola Hector Miguel (y KL, si andas por ahi), muchas gracias por tu
ayuda

la opcion 4, con xlFormulas, parece funcionar bien sin recurrir a
des/reformatear. Resuelto esto, te comento un poco sobre los otros
puntos de tu respuesta.

5) [en resumen]... dependiendo de 'que' necesites buscar/encontrar...



el motivo en este caso seria buscar un registro partiendo de un numero
de ficha concreto (unico, aunque puede no estar ordenado y faltar
valores intermedios) que se encuentra en la columna A.. En la mayoria
de los casos lo que me interesa es el nº de fila, bien para copiar el
registro en otra hoja, bien para eliminarlo, o cargarlo en un
formulario, o simplemente saber si existe, o

todas estas acciones las realizo actualmente razonablemente bien, pero
en la mayoria de los casos recurriendo a bucles. Ya habia visto en
otras ocasiones en el foro el uso de Find, pero nunca le habia metido
mano, y al ver la propuesta de KL, me ha parecido interesante probar,
aunque solo fuese por adelgazar un poco algunos codigos, aparte que
supongo que tambien debe de ser mas rapido

2) para el argumento del 'What' [asumo que -por omision-] busca 'principalmente' cadenas de texto
[sobre todo si se combina con 'LookIn/LookAt' establecidos en 'xlValues' y 'xlWhole']



no acabo de entender (con las explicaciones de la ayuda) el uso/fin de
algunos de los argumentos de Find. Precisamente, los que mencionas me
parecian (desde mi ignorancia) los mas adecuados. Supongo que es
cuestion de practica... y algo mas

bueno, voy a seguir tanteando un poco tus propuestas, por
practicar/aprender (verdadero fin ultimo de todo esto), pero parece que
la 4ª va muy bien.

muchas gracias de nuevo

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#15 Héctor Miguel
10/12/2006 - 02:55 | Informe spam
hola, Ivan !

si el dato que buscas es siempre unico y solo necesitas saber [si existe] en cual fila se encuentra
[y hablando de adelgazamiento/rapidez/bucles si-no/etc.]
prueba con una instruccion que 'evalue' funciones de hoja de calculo +/- como lo siguiente:

Sub En_cual_fila()
Dim Busca As Integer, Fila As Integer
Busca = 123
' por si buscas un dato que NO existe... '
On Error Resume Next
Fila = Evaluate("match(" & Busca & ",a:a,0)")
On Error GoTo 0
MsgBox Busca & IIf(Fila > 0, " se encuentra en la fila " & Fila, " NO se encuentra")
End Sub

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

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
el motivo en este caso seria buscar un registro partiendo de un numero de ficha concreto
(unico, aunque puede no estar ordenado y faltar intermedios) que se encuentra en la columna A.
En la mayoria de los casos lo que me interesa es el nº de fila
bien para copiar el registro en otra hoja, bien para eliminarlo, o cargarlo en un formulario, o simplemente saber si existe, o
todas estas acciones las realizo actualmente razonablemente bien, pero en la mayoria de los casos recurriendo a bucles.
Ya habia visto en otras ocasiones en el foro el uso de Find, pero nunca le habia metido mano
y al ver la propuesta de KL, me ha parecido interesante probar, aunque solo fuese por adelgazar un poco algunos codigos
aparte que supongo que tambien debe de ser mas rapido...
no acabo de entender (con las explicaciones de la ayuda) el uso/fin de algunos de los argumentos de Find.
Precisamente, los que mencionas me parecian... los mas adecuados.
Supongo que es cuestion de practica... y algo mas [...]
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida