XSL - macro

 
Vista:

macro

Publicado por Saul (1 intervención) el 08/04/2010 21:22:53
Tengo este macro.
y lo que pretendo es buscar en una lista de datos y ponerlos en otro.
• En celdas C5:C12 tenemos la lista en que buscar (celdas D5:D12 también pertenecen a la matriz.
• En celda G2 introducimos el criterio.
• En celdas G5:H5 el programa pondrá la lista "filtrada", allí no tienes que introducir nada.

Por favor ayuda.. porque no funciona pero no se porque no ..?? esta hecho en office 2003

Sub Buscar_Texto_En_Lista()
'dimensiones
Dim lngUltimaFila As Long
Dim strObjetoBuscar As String
Dim lngResultado As Long
Dim lngColumna As Long, lngFila As Long
Dim lngPegarColumna As Long, lngPegarFila As Long
Dim x As Integer, n As Integer
'quitar resultados anteriores
Range("G5:H4000").ClearContents
'columna + fila donde empezar/terminar búsqueda
lngColumna = 2
lngFila = 5
lngUltimaFila = Columns(lngColumna).Range("A65536").End(xlUp).Row
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 6
lngPegarFila = 5
'objeto a buscar
strObjetoBuscar = Range("G2").Text
If strObjetoBuscar = "" Then GoTo 99
'minúsculas
strObjetoBuscar = LCase(strObjetoBuscar)
'bucle: realizar búsqueda
For n = lngFila To lngUltimaFila
'evaluación
lngResultado = InStr(1, Cells(n, 3),strObjetoBuscar, vbTextCompare)
'copiar/pegar
If lngResultado> 0 Then
Range(Cells(n, 2), Cells(n, 4)).Copy
Range( _
Cells(lngPegarFila, lngPegarColumna), _
Cells(lngPegarFila, lngPegarColumna + 2)) _
.Select
ActiveSheet.Paste
lngPegarFila = lngPegarFila + 1
End If
Next n
'aparcar
Application.CutCopyMode = False
Range("G2").Select
99:
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Macro para buscar y filtrar datos en una lista

Publicado por Alejandro (227 intervenciones) el 07/07/2023 00:07:44
La solución propuesta para este problema consiste en utilizar un macro en VBA para buscar y filtrar datos en una lista. Aquí tienes el código del macro y los pasos a seguir:

1. Abre el editor de Visual Basic for Applications (VBA) en Excel presionando ALT + F11.

2. Inserta un nuevo módulo desde el menú "Insertar" -> "Módulo".

3. Copia y pega el código del macro en el nuevo módulo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub Buscar_Texto_En_Lista()
    'dimensiones'
    Dim lngUltimaFila As Long
    Dim strObjetoBuscar As String
    Dim lngResultado As Long
    Dim lngColumna As Long, lngFila As Long
    Dim lngPegarColumna As Long, lngPegarFila As Long
    Dim x As Integer, n As Integer
 
    'quitar resultados anteriores'
    Range("G5:H4000").ClearContents
 
    'columna + fila donde empezar/terminar búsqueda'
    lngColumna = 2
    lngFila = 5
    lngUltimaFila = Columns(lngColumna).Range("A65536").End(xlUp).Row
 
    'columna + fila donde empezar a pegar resultados'
    lngPegarColumna = 6
    lngPegarFila = 5
 
    'objeto a buscar'
    strObjetoBuscar = Range("G2").Text
 
    If strObjetoBuscar = "" Then GoTo 99
 
    'minúsculas'
    strObjetoBuscar = LCase(strObjetoBuscar)
 
    'bucle: realizar búsqueda'
    For n = lngFila To lngUltimaFila
        'evaluación'
        lngResultado = InStr(1, Cells(n, 3), strObjetoBuscar, vbTextCompare)
 
        'copiar/pegar'
        If lngResultado > 0 Then
            Range(Cells(n, 2), Cells(n, 4)).Copy
            Range(Cells(lngPegarFila, lngPegarColumna), Cells(lngPegarFila, lngPegarColumna + 2)).Select
            ActiveSheet.Paste
            lngPegarFila = lngPegarFila + 1
        End If
    Next n
 
    'aparcar'
    Application.CutCopyMode = False
    Range("G2").Select
 
99:
End Sub

4. Cierra el editor de VBA y guarda el archivo con la extensión .xlsm para habilitar el uso de macros.

5. Ahora puedes ejecutar el macro seleccionando "Herramientas" -> "Macro" -> "Macros" y seleccionando el macro "Buscar_Texto_En_Lista". También puedes asignar el macro a un botón o a un atajo de teclado para facilitar su ejecución.

Al ejecutar el macro, buscará el texto ingresado en la celda G2 en la lista especificada (celdas C5:C12). Los resultados filtrados se mostrarán en las celdas G5:H5 en adelante.

Recuerda ajustar las referencias de celdas y rangos según tus necesidades específicas. También ten en cuenta que este código es para Office 2003 y puede requerir modificaciones si estás utilizando una versión más reciente de Excel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar