Cómo programar macro para que copie y transponga registros bajo una condición.

Tengo una matriz con 2 hojas, en la primera (llamada BBDD) una Base de Datos, donde la prmera columna contiene nombres (que no se repiten, funcionan como llave primaria), el resto de las columnas solo tienen variables con sus respectivas celdas en blanco.

La segunda hoja (llamada registro) contiene un formulario donde se evalúan casos. El formulario consiste en seleccionar un nombre (seleccionados de una celda con lista desplegable) y posteriormente, se asignan puntajes para ese caso (nombre) en una serie de indicadores (filas).

Logré grabar una macro que copia cada uno de los puntajes asignados y los pega con transponer en la hoja BBDD, pero aún no logro hacer que la macro pegue esos datos en la fila cuyo nombre coincida con el nombre seleccionado en el formulario de registro.

2 respuestas

Respuesta
2

Puedes poner el código de tu macro

Y también un par de imágenes, una de la hoja "BBDD" y otra imagen de la hoja "registros"; procura que en las imágenes se vean las filas y las columnas de excel.

Como dije, hasta ahora tengo resuelta la parte de copiar y transponer los datos, lo que me falta es hacer que este proceso haga automáticamente la búsqueda del caso, y que ahí pegue los datos. Lo ilustraré con imágenes:

- Primero: En la hoja "Registro" tengo un formulario donde debo indicar el nombre y luego calificar 4 variables, para ingresarlas posteriormente a una base de datos.

- Segundo: en la hoja BBDD, tengo una matriz donde ya tengo identificados los casos que quiero evaluar, pero los campos donde van los puntajes de cada variable (V1...V4) están en blanco.

- Tercero: Para este propósito, en la hoja "Formulario" puse un botón con una macro que grabé que copia las evaluaciones registradas, pega transpuestos los valores en la hoja "BBDD" y luego borra los números y nombre del formulario, para poder repetir el proceso con otro nombre.

 Hasta acá todo bien, pero mi problema está en que no logro hacer que la macro, busque automáticamente cuál es el nombre de la matriz donde corresponde pegar las evaluaciones.

Mi idea es que pueda escribir cualquiera de los nombres que aparecen en la matriz, y que la macro haga coincidir automáticamente el nombre registrado con el nombre de la base de datos y que, si se cumple esa condición, la macro proceda a pegar las evaluaciones.

Te anexo la macro

Sub Copiar_Registro()
    Application.ScreenUpdating = False
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("BBDD")
    '
    nombre = h1.Range("D3").Value
    If nombre = "" Then
        MsgBox "Falta el nombre"
        Exit Sub
    End If
    '
    Set b = h2.Columns("A").Find(nombre, lookat:=xlWhole)
    If Not b Is Nothing Then
        h1.Range("D4:D7").Copy
        h2.Range("B" & b.Row).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        h1.Range("D3:D7").ClearContents
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
        MsgBox "Registro copiado"
    Else
        MsgBox "El nombre no existe en la base de datos"
    End If
End Sub

Respuesta
-1

Esto te puede aportar algo más

https://youtu.be/imOOYE9mlKM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas