Buscar un valor en una matriz n*m y devolver sus coordenadas.

13/12/2004 - 14:06 por Luis Garcia | Informe spam
Hola a todos:

Tengo una matriz (n*m) de valores enteros, y quiero buscar un valor y que me
devuelva la posicion en la matriz donde se encuentra la primera vez, tanto
fila como columna. Los valores no están ordenados por ningún criterio.

He llegado a intentarlo con formulas matriciales, las cuales he conseguido
empezar a entender, pero no consigo salirme de esta. Un ejemplo de lo que
quiero seria:

Rango (A3:L100) = Aleatorio.Entre(1;100)
Celda (B1) = 51

(D1) = Fila donde se encuentra la primera aparicion del valor (51)
(E1) = Columnas donde se encuentra la primera aparicion del valor (51)

Ya seria 'la ostia' :-) poder poner en la celda (C1) la 'n-esima' aparicion
del valor que se desea, es decir:

Si C1 = 1 => primera aparicion
Si C1 = 2 => seguna aparicion ... etc...

Muchas gracias por anticipado.

Saludos
 

Leer las respuestas

#1 Fernando Arroyo
13/12/2004 - 16:23 | Informe spam
Una posibilidad (todas las fórmulas, matriciales):

- para la última fila con el valor 51:

=K.ESIMO.MAYOR((A3:L100Q)*FILA(A3:L100);1)

- para el número de la última columna con el valor 51:

=K.ESIMO.MAYOR((A3:L100Q)*COLUMNA(A3:L100);1)

- para la letra de la última columna:

ÊRACTER(64+K.ESIMO.MAYOR((A3:L100Q)*COLUMNA(A3:L100);1))

- para la primera fila:

=K.ESIMO.MAYOR((A3:L100Q)*COLUMNA(A3:L100);1)

- para el número de la primera columna:

=K.ESIMO.MENOR(SI((A3:L100Q);COLUMNA(A3:L100));1)

- para la letra de la primera columna:

ÊRACTER(64+K.ESIMO.MENOR(SI((A3:L100Q);COLUMNA(A3:L100));1))



Si cambias la posición a devolver por las funciones K.ESIMO obtendrás las filas o columnas siguientes o anteriores, pero ten en cuenta que si 51 se encuentra más de una vez en la misma fila o columna, K.ESIMO devolverá tantas veces dicha fila o columna como apariciones de 51 haya.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Luis Garcia" escribió en el mensaje news:
Hola a todos:

Tengo una matriz (n*m) de valores enteros, y quiero buscar un valor y que me
devuelva la posicion en la matriz donde se encuentra la primera vez, tanto
fila como columna. Los valores no están ordenados por ningún criterio.

He llegado a intentarlo con formulas matriciales, las cuales he conseguido
empezar a entender, pero no consigo salirme de esta. Un ejemplo de lo que
quiero seria:

Rango (A3:L100) = Aleatorio.Entre(1;100)
Celda (B1) = 51

(D1) = Fila donde se encuentra la primera aparicion del valor (51)
(E1) = Columnas donde se encuentra la primera aparicion del valor (51)

Ya seria 'la ostia' :-) poder poner en la celda (C1) la 'n-esima' aparicion
del valor que se desea, es decir:

Si C1 = 1 => primera aparicion
Si C1 = 2 => seguna aparicion ... etc...

Muchas gracias por anticipado.

Saludos


Preguntas similares