Inicio > Microsoft Excel > cadipas > BDEXTRAER ..... Matricial

BDEXTRAER ..... Matricial

Experto:
Usuario: Anónimo Fecha: 15/06/2009
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
05/06/2009
Usuario
No sé especificar los parametros para una busqueda en una Base de Datos de caracter matricila . No es un problema de corchetes .
Desearia que me ayudasen .
Deseo extraer de una Base de Datos con "fecha" , "Nombre"  e  "Importe" , TODOS los registros que cuimplan una condicion : una fecha .
BDEXTRAER extrae solo uno . Al operar con rangos y matricialmente .......... siempre me sale un error conforme EXCEL no sabe lo que estoy haciendo .
Solicito ayuda .
Gracias
05/06/2009
ferran58, experto respondiendo en Microsoft Excel
Experto
Lo de las matrices no domina paranada, pero con esta pequeña macro creo que te funcionara:
Notas al respecto: en negrita te he puesto los datos que tendrías que cambiar y poner los que te correspondan para tu hoja. En el ejemplo que yo me he fabricado, en la columna A esta la fecha, en la B el Nombre y en la C el importe
, en la celda J10, es en la que pongo el valor a buscar (es la fecha que buscara en la columna A y me coloca los datos en las columnas K:L
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "<span style="font-weight: bold;">$J$10</span>" Then
        If Range("<span style="font-weight: bold;">k10</span>") <> "" Then
            If Range("<span style="font-weight: bold;">k11</span>") = "" Then
                Range("<span style="font-weight: bold;">k10:l10</span>") = ""
            Else
                Range("<span style="font-weight: bold;">k10:l10</span>").Select
                Range(Selection, Selection.End(xlDown)) = ""
            End If
        End If
        f = 10
        With Range("<span style="font-weight: bold;">a:a</span>")
            Set c = .Find(Range("<span style="font-weight: bold;">j10</span>"), LookIn:=xlFormulas)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    Range("<span style="font-weight: bold;">k</span>" & f) = c.Offset(0, 1).Value
                    Range("<span style="font-weight: bold;">l</span>" & f) = c.Offset(0, 2).Value
                    f = f + 1
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
        End With
    End If
End Sub
si quieres puedes descargarte un fichero de ejemplo que he colgado en la siguiente direccion 
http://cid-3d609d87423f2eeb.skydrive.live.com/browse.aspx/P%c3%bablico
el nombre del fichero es EJEMPLO LOCALIZAR EN MATRIZ
Espero que te sirva.
06/06/2009
Usuario
Adjunto el fichero , pues la macro ....... no parece funcionar correctamente .
¿ Dónde fallo ..........?
Gracias
08/06/2009
ferran58, experto respondiendo en Microsoft Excel
Experto
No veo dende adjuntas el fichero, si quieres posteme tu direccion de correo y yo t envio la mia para inercambio de ficheros..
Saludos de CADIPAS
08/06/2009
Usuario
Gracias por las molestias
ferran58@yahoo.es
15/06/2009
Usuario
Excelente. Una fantástica solución.
Enlaces patrocinados