Obtener la posición de fila y columna de un valor determinado, presente en una tabla de datos con 13 filas y 20 columnas.

He utilizado las herramientas DIRECCIÓN y COINCIDIR pero solo me funciona si se trata de una columna formada por varias filas. ¿Pero cómo puedo hacerlo para una tabla con más columnas?

La idea es hacer una macro que me pida introducir un valor determinado y que presionando un boto me pueda dar la información de la posición donde se encuentra dicho valor o indicarme que no existe el elemento buscado.

2 Respuestas

Respuesta
1

H   o l a: Te anexo la macro

Sub BuscarValor()
'Por.Dante Amor
    dato = InputBox("Introduce el valor determinado", "BUSCAR VALOR")
    If dato = "" Then Exit Sub
    '
    Set r = Range("D4:W16")
    Set b = r.Find(dato, lookat:=xlWhole, LookIn:=xlValues)
    If Not b Is Nothing Then
        MsgBox "El dato se encuentra en la celda : " & b.Address(False, False)
    Else
        MsgBox "El dato no existe"
    End If
End Sub

Cambia "D4:W16", por el rango de celdas a buscar.

Si quieres que busque en toda la hoja entonces cambia la línea

Set r = Range("D4:W16")

Por 

Set r = Cells


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

Esta seria mi propuesta de solución:

Hoja1. Range("V1") '(en este lugar pondrias el valor que quieres buscar)

Nota: aunque dijiste que son 13 fila y 20 columnas lo hice de manera que pueda trabajar con más

Saludos no olvides finalizar

Private Sub CommandButton1_Click()
Dim fila, final, colum, cfinal As Integer
colum = 1
fila = 1
Do While Hoja1.Cells(fila, 1) <> Empty
    fila = fila + 1
Loop
final = fila - 1
Do While Hoja1.Cells(1, colum) <> Empty
    colum = colum + 1
Loop
cfinal = colum - 1
For colum = 1 To cfinal
    For fila = 1 To final
        If Hoja1.Range("V1") = Hoja1.Cells(fila, colum) Then
            Hoja1.Cells(fila, colum).Select
            MsgBox ("El valor se encuentra en la fila: ") & ActiveCell.Row & (" Columna: ") & ActiveCell.Column
            Exit For
        End If
    Next
Next
MsgBox ("Valor no encontrado"), vbCritical
End Sub

El la ultima parte corrige esto por favor

If Hoja1.Range("V1") <> ActiveCell.Value Then
MsgBox ("Valor no encontrado"), vbCritical
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas