VBA - Búsqueda Find con retornos múltiples
Resuelto
Mouftie
Mensajes publicados
234
Estado
Miembro
-
Patrice33740 Mensajes publicados 8400 Fecha de registro Estado Miembro Última intervención -
Patrice33740 Mensajes publicados 8400 Fecha de registro Estado Miembro Última intervención -
Hola,
he visto con gran interés su artículo sobre los retornos múltiples:
https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
Sin embargo, me gustaría devolver la información de una celda, en lugar de la dirección de la celda encontrada.
No manejo bien las tablas virtuales; ¿cómo traducir Tb(i) (es decir, una referencia en forma $Col$Lg) en cells(1,tb(i))?
En otras palabras, ¿cómo recuperar los números de fila en Tb(i)?
Gracias por su ayuda.
he visto con gran interés su artículo sobre los retornos múltiples:
https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
Sin embargo, me gustaría devolver la información de una celda, en lugar de la dirección de la celda encontrada.
No manejo bien las tablas virtuales; ¿cómo traducir Tb(i) (es decir, una referencia en forma $Col$Lg) en cells(1,tb(i))?
En otras palabras, ¿cómo recuperar los números de fila en Tb(i)?
Gracias por su ayuda.
Enlaces relacionados:
- Contar el número de valores diferentes en una columna de EXCEL
- [Excel] Verificar existencia de celdas de la columna A en la columna C
- Copiar valor de una celda según otra celda
- En una fórmula: condición "entre" 2 valores
- verificar si un valor está en un rango
- Validación de datos mostrar siempre la primera opción
8 respuestas
Hola,
Como esto, adaptando FindRech según sea necesario:
--
Atentamente
Patrice
Como esto, adaptando FindRech según sea necesario:
Sub RechMulti() Dim R As Long, TB() Dim i As Integer, Rch As String Rch = 22 'por ejemplo With Sheets("Feuil1") .Columns(7).ClearContents ' para los resultados R = RechFind(Rch, .Range("B1:E500"), 2, TB()) If R > 0 Then .Range("G1") = R & " Ocurrencias encontradas para : " & Rch .Range("G2").Resize(R, 1) = Application.Transpose(TB) Else MsgBox "No encontrado", , "Búsqueda" End If End With End Sub Function RechFind(ByVal Cle$, ByVal Plage As Range, _ ByVal Col&, ByRef TBval()) As Long 'Devuelve todos los valores encontrados en la búsqueda 'Clave = valor buscado 'Rango = rango a recorrer. 'Col = columna que contiene los valores a devolver. 'TBval = Tabla que devuelve los valores de la columna Col. Dim Cherche, Ix As Long, Adr With Plage Set Cherche = .Find(Cle, , xlValues, xlWhole) If Not Cherche Is Nothing Then Adr = Cherche.Address Do ReDim Preserve TBval(Ix) TBval(Ix) = Plage.Parent.Cells(Cherche.Row, Col) Set Cherche = .FindNext(Cherche) Ix = Ix + 1 Loop While Not Cherche Is Nothing And Cherche.Address <> Adr End If End With 'número de ocurrencia(s) encontrada(s), Devuelve 0 si no hay ninguna ocurrencia RechFind = Ix Set Cherche = Nothing 'Libera la memoria ocupada por el objeto. End Function --
Atentamente
Patrice
Mouftie
Mensajes publicados
234
Estado
Miembro
17
Muchas gracias Patrice, está muy bien.