Visual Basic para Aplicaciones - macro Busqueda y copiar datos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

macro Busqueda y copiar datos

Publicado por gonza (9 intervenciones) el 31/01/2019 20:01:11
hola buen día!
me podrían ayudar con la sig macro.

Tengo la hoja1 y hoja2 en excel.
En la hoja1 tengo un listado de idevento y nombre de personas.
En la hoja2 tengo un listado de ideventoFull, nombre de personas y idpersonas.

Lo que quiero hacer es comprar los datos por separado de la hoja1 y la hoja2:
* si el idevento.Hoja1=ideventoFull.Hoja2 Y el nombre.Hoja1=nombre.Hoja2, entonces que me copie el
idpersona.hoja2 en la celda resultado de la Hoja1.
* si el idevento.Hoja1=ideventoFull.Hoja2 Y el nombre.Hoja2 contiene en su texto como "NO NOMBRE", "SE
DESCONOCE" o "SD", entonces escribir en la celda resultado de la Hoja1 la letra "Z".
* En caso de no cumplirse ninguna de las anteriores poner en la celda resultado de la Hoja1 la palabra "checar".

Quiero hacer la comparacion mientras en la Hoja1 tenga datos en las celdas y que el barrido interno de la busqueda se haga mientras en la Hoja2 tenga datos las celdas.

En caso de cumplirse las dos primeras condiciones salirse del ciclo y continuar con el sig valor de la Hoja1 y continuar haciendo la comparacion con la Hoja2 hasta que la Hoja 1 no tenga datos en las celdas.

Adjunto la macro que hice, pero al ejecutarla no me hace nada, no genera ningun resultado.
Si me pueden indicar donde esta mi error o que se me pasó ponerle, se los agradezco.
Tmb adjunto el archivo con los datos que estoy trabajando.

saludos!!!
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

macro Busqueda y copiar datos

Publicado por Antoni Masana (498 intervenciones) el 01/02/2019 08:07:59
Esta es la macro corregida y ampliada.

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
Option Explicit
 
Sub buscar_guid_personas()
    Dim Fila_1 As Integer, Fila_2 As Integer
 
    ' ---&--- hacer el ciclo mientras en la hoja1 existan datos
 
    Sheets("Hoja1").Select
 
    Fila_1 = 2
    Do While Cells(Fila_1, 1) <> ""
        With Sheets("Hoja2")
 
            ' ---&--- hacer el ciclo mientras en la hoja2 existan datos
 
            Cells(Fila_1, 3).Value = "checar"
            Fila_2 = 2
            Do While .Cells(Fila_2, 1) <> ""
 
                ' --- checar si los ideventos y los nombres de ambas hojas sean iguales, =>
                '      pegar en hoja1 col3 el contenido de la hoja2 col3
 
                If Cells(Fila_1, 1).Value = .Cells(Fila_2, 1).Value And _
                   Cells(Fila_1, 2).Value = .Cells(Fila_2, 2).Value Then
 
                    Cells(Fila_1, 3).Value = .Cells(Fila_2, 3).Value
                    Exit Do
 
                 Else
                     ' --- comprar si es que los eventos son iguales y en en la hoja2 la col
                     '     nombre contiene "NO NOMBRE", "SE DESCONOCE", "SD", =>
                     '     escribir en la hoja1 col3 la letra "Z"
 
                     If Cells(Fila_1, 1).Value = .Cells(Fila_2, 1).Value And _
                       (.Cells(Fila_2, 2) Like "*NO NOMBRE*" Or _
                        .Cells(Fila_2, 2) Like "*SE DESCONOCE*" Or _
                        .Cells(Fila_2, 2) Like "*SD*") Then
 
                        Cells(Fila_1, 3).Value = "Z"
                        Exit Do
                     End If
                 End If
                 Fila_2 = Fila_2 + 1
             Loop
             Fila_1 = Fila_1 + 1
         End With
    Loop
    MsgBox "Fin"
End Sub

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

macro Busqueda y copiar datos

Publicado por gonza (9 intervenciones) el 21/02/2019 19:00:13
EXCELENTE!!!!!!!

Me funcionó a la perfección para los propósitos que quiero.

muchas gracias!!!! Excelente aporte.

saludos!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 13 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

macro Busqueda y copiar datos

Publicado por Martin Sacchi (2 intervenciones) el 03/04/2019 13:51:51
Estimados,
Buenas tardes, Mi nombre es Martín Sacchi, estoy armando un tablero de control para una obra en construcción y necesito ayuda para armar una macro para realizar lo siguiente.
Me sumo a este hilo, porque necesito algo muy similar, y no le puedo encontral la vuelta

A diario recibo partes operativos de una obra en construcción, parte de la información que recibo es Nombre, apellidoy horas dedicadas de cada uno de los presentes en la obra.

El tablero de control debería:

Función buscar:

A partir de la planilla origen (parte diario) buscar el nombre y apellido en el tablero de control.

Condicionales
Si el nombre y apellido que está en el parte diario, está en el tablero de control. que agregue información, por ejemplo Hs trabajadas en la columna siguiente.( Columna C)

Si el Nombre que está en el parte diario, no esta en el tablero de control. que agregue el nombre, apellido y horas trabajadas en columnas A, B y C respectivamente.

Esquema archivo parte diario
A B C
Nombre Apellido Hs


Esquema tablero de control
A B C
Nombre Apellido Hs(acumuladas)

espero haber sido claro,

Muchas gracias por la ayuda
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