Hola, mi problema es el siguiente: Es posible si tengo Datos en las celdas (A5, B8, c32, e21, A23) que corresponden a un registro. Transferirlos a una base de datos en otra hoja del mismo libro, pero que se vayan ordenado (horizontalmente) Nombre Dirección Edad Tel A3 B8 C32 E21 Al cambiar los datos (registro nuevo) Se acomoden también horizontalmente abajo de los datos anteriores y así sucesivamente.
Gracias
Supongo que hay varias maneras de resolver el tema. Te propongo una sencilla. Supongo que la hoja con datos se llama "Hoja1" y que aquella donde querés generar los registros es la "Hoja2". En la fila 4 de la hoja2 están los encabezados.(Nombre Dirección). Al rango con estos datos (Ej A4:D4) lo llamamos "DB" (Insertar/Nombre/Definir) En la fila 1 de la hoja2 hay fórmulas que hacen referencias a los datos de la hoja1. Por ejemplo : En a1 =+Hoja1!A5 En b1 =+Hoja1!B8 En c1 =+Hoja1!C32 Y siguientes. Supongamos que al rango de fórmulas lo llamamos "Formulas". El procedimiento manual sería Ir al rango de "Formulas" (que tienen los valores dispersos en "Hoja1"), copiarlos y pegarlos "como valores" en el primer renglón (registro) disponible [ debajo de las leyendas (fila 4)] de la "Hoja2". La manera más práctica es poner un BOTÓN en la "hoja1" que lo haga por nosotros, al ejecutar la siguiente macro : (ALT+F11 para ir a VB e "Insertar/Modulo" para disponer de un Modulo donde pegar la macro) '**************** Option Explicit Sub AgregarRegistro() Dim H1 As String, H2 As String, BD As String, FORMULAS As String H1 = "Hoja1" ' nombre de la hoja con datos H2 = "Hoja2" ' nombre de la hoja donde se volcaran los registros BD = "BD" ' nombre del rango de la nueva Base de Datos FÓRMULAS = "FORMULAS" ' fórmulas en hoja2 que referencian las celdas dispersas de hoja1 Application.ScreenUpdating = False Sheets(H2).Select Sheets(H2).Range(FORMULAS).Copy Sheets(H2).Range(BD).range("a1").Select '*** POR SI ES PRIMER REGISTRO If IsEmpty(ActiveCell.Offset(1, 0).Value) Then ActiveCell.Offset(1, 0).Select Else '*** va a primer celda disponible ActiveCell.End(xlDown).Offset(1, 0).Select End If Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets(H2).Range("BD").Range("A1").Select Selection.CurrentRegion.Select Selection.Name = BD Range("A1").Select Sheets(H1).Select Application.ScreenUpdating = True End Sub '*************** Comentario : "Application.ScreenUpdating" evita la vision de los desplazamientos entre hojas, "tan feo". Podes usar las variables H1, H2, BD y FÓRMULAS, para poner los nombres que prefieras. Podes usar fórmulas del tipo BDCONTARA(bd, HOJA2! A4, cri) donde cri es un rango de 2 celdas "vacio", ej j1:j2) para controlar la cantidad de registros. Yo la puse en la Hoja1 para verificar el funcionamiento. Espero haber colaborado. Estoy a tu disposición por cualquier comentario o ampliación. Suerte.