Macro que guarde los datos registrados de una hoja para consultarlos en el futuro bajo 2 criterios

Siguiendo con el ejemplo anterior, solicito una macro que me almacene los datos que dígito en la hoja "Registros" en una hoja llamada "BDFormulas" a partir de la columna "B" y fila 2 en adelante, pues la fila 1 contiene los encabezados de cada columna.

Por ejemplo, en la hoja "Registros" tengo los siguientes datos digitados (Los que están de color negro).

Como te puedes dar cuenta, están los datos del paciente y mas abajo empiezan los datos de cada medicamento que se le recetó. Para este ejemplo fueron 2, como te das cuenta el tercero está vacío, lo hice así a propósito con el fin de hacer una macro que guarde los datos de las celdas que si estén diligenciadas. Así como para este paciente son 2 medicamentos solamente, para otro paciente pueden ser 10 o más, y otro solo 1.

Me gustaria que me ayudaras con una macro que almacene estos datos en la hoja "BDFormulas" y una vez se hallan copiado allí, termina la macro. La idea es que copie los datos a partir de la columna "B" de la hoja "BDFormulas" dado a que la macro en la columna "A" registre la fecha en formato "dd-mmm-yy" del día que se registraron estos datos, por ejemplo si se registran hoy, la fecha que debe registrar en la columna "A" deberia ser: 02-sep-15.

1 Respuesta

Respuesta
1

Te dejo la macro que solicitas, se coloca en un módulo y se ejecuta con un botón, atajo de teclado o desde el mismo menú Macros (estos temas los tengo explicados en la sección Macros de mi sitio).

Revisa las referencias de fila y col porque se ve pequeño y poco claro.

Sub PaseRecetario()
'x Elsamatilde
Set hbd = Sheets("BDFormulas")
'fila libre en hoja BD
filx = hbd.Range("A" & Rows.Count).End(xlUp).Row + 1
'control de contenidos. Verificar antes del pase si se encuentran todos los datos oblitatorios.
'si todo está correcto se inicia el pase
hbd.Range("A" & filx) = Date
hbd.Range("B" & filx) = [E6]
hbd.Range("C" & filx) = [E8]
hbd.Range("D" & filx) = [E10]
hbd.Range("E" & filx) = [E12]
'la cantidad de medicamentos lo indica la col K
ini = 17
fini = Range("K" & Rows.Count).End(xlUp).Row
'la 1er col de destino es la 6 (F)
colx = 6
For x = ini To fini Step 4
    hbd.Cells(filx, colx) = Range("C" & x)  'col de texto
    colx = colx + 1
Next x
MsgBox "Fin del pase"
End Sub

Observa que comento en una línea que debieras realizar un control de contenidos, por ej, que no falte ningún dato del encabezado, etc. Si necesitas que te agregue esas instrucciones confirmame cuáles son campos obligatorios y cuáles no.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas