Hola. Tengo una matriz m*n y necesito encontrar todos los valores distintos de cero y que me indique en que fila y columna se encuentra cada uno de ellos. Gracias
Creo que nadie te contesta porque no explicas de qué forma quieres que Excel te indique las filas y columnas... ¿Mediante una ventana de aviso tipo MSGBOX? ¿Mediante un par de columnas nuevas en la misma hoja? ¿Mediante una hoja nueva con dos columnas, una de Fila y otra de Columna? ¿Mediante un Libro Excel nuevo? Si precisas mejor tu problema tal vez yo mismo pueda ayudarte.
Si, tienes razón, no me explique bien. Lo que quiero es que me indique la posición de cada numero en dos columnas aparte. Probé con la función coincidir, pero me encontré que mi matriz tiene valores repetidos. A ver si me puedes ayudar en algo. Muchas gracias de antemano!
Te paso esta macro de más abajo, donde tendrás que cambiar los valores en negrita por los que te interesen para tu caso en concreto. Espero que te sirva. Si es así, recuerda finalizar la pregunta. Saludos Angel +++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub ACN_BuscaBlancos() 'Rango donde tienes la matriz de datos... Rango = "A1:Z99" 'Fila donde quieres que comience el resultado... FilaDestino = 2 'Columna donde quieres que aparezcan las columnas de las celdas encontradas... ColumnaDestino1 = "H" 'Columna donde quieres que aparezcan las filas de las celdas encontradas... ColumnaDestino2 = "I" Range(ColumnaDestino1 + ":" + ColumnaDestino2).Value = "" Range(Rango).Select For Each Celda In Selection.Cells With Celda If .Value <> "" And .Value <> 0 Then Fila = Mid(.Address, InStr(2, .Address, "$") + 1) Columna = Mid(.Address, InStr(.Address, "$") + 1, InStr(2, .Address, "$") - 2) Range(ColumnaDestino1 + Trim(Str(FilaDestino))).Value = Columna Range(ColumnaDestino2 + Trim(Str(FilaDestino))).Value = Fila FilaDestino = FilaDestino + 1 End If End With Next End Sub
¿Te sirvió de ayuda la macro que te pasé?.
Perdona por no contestar, iba a ponerme con ello ahora mismo. Luego te comento si me funciona, pero muchísimas gracias por todo.
La fórmula funciona perfectamente, yo no lo habría sacado. Muchísimas gracias. De todas formas tengo otra pequeña pregunta: como dije antes en mi matriz tengo diferentes números y algunos repetidos, a parte de los ceros. ¿Seria posible que ademas de su posición también me pusiese el numero en cuestión en otra columna? Por ejemplo, la matriz seria esta: A B C 1 0 25 0 2 12 0 12 Es decir, que el resultado sea, en una columna los números distintos de cero y luego su fila y columna correspondiente. Numero Columna Fila 25 B 1 12 A 2 12 C 2 No se si me estoy explicando bien. Si no es así, dime y intentare hacerlo mejor. Y perdona por las molestias! Gracias
Me alegro de que te sirviese. Te la copio a continuación con la modificación que dices. También le he puesto para que aparezcan unas cabeceras. Mira a ver si puedes finalizar la pregunta, por favor, para poder atender mejor al resto de gente. Gracias. Saludos Angel +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub ACN_BuscaBlancos() Rango = "B2:F22" FilaDestino = 2 ColumnaDestino1 = "I" ColumnaDestino2 = "J" ColumnaDestino3 = "H" Range(ColumnaDestino1 + ":" + ColumnaDestino2).Value = "" Range(ColumnaDestino1 + Trim(Str(FilaDestino))).Value = "Columna" Range(ColumnaDestino2 + Trim(Str(FilaDestino))).Value = "Fila" Range(ColumnaDestino3 + Trim(Str(FilaDestino))).Value = "Valor" FilaDestino = FilaDestino + 1 Range(Rango).Select For Each Celda In Selection.Cells With Celda If .Value <> "" And .Value <> 0 Then Fila = Mid(.Address, InStr(2, .Address, "$") + 1) Columna = Mid(.Address, InStr(.Address, "$") + 1, InStr(2, .Address, "$") - 2) Range(ColumnaDestino1 + Trim(Str(FilaDestino))).Value = Columna Range(ColumnaDestino2 + Trim(Str(FilaDestino))).Value = Fila Range(ColumnaDestino3 + Trim(Str(FilaDestino))).Value = .Value FilaDestino = FilaDestino + 1 End If End With Next Range("A1").Select End Sub