Hoja de captura de datos en excel

Quisiera saber en excel cual es la forma de crear una hoja de captura de datos y que éstos se vayan acumulando en una hoja alterna. Entiendo que este proceso se puede hacer con macros.
Para tratar de ser más claro les comento que se trata de una encuesta que se realizó en varias entidades, para ello se distribuyeron formatos con seis preguntas.
Este asunto es algo complicado se trata de una captura en dos partes (pero deben ir en la misma hoja):
La primera parte es para capturar datos específicos de las entidades, (Entidad, contexto, modalidad, sostenimiento) y estos datos agruparán varios cuestionarios.
La segunda parte es para la captura de los resultados de cada uno de los cuestionarios
La idea es hacer una base de datos con el resultado de los cuestionarios, para poder analizarlos.
Respuesta
1
Para hacer una macro de 'copiado de datos' se necesita saber: de qué celda a qué celda irán a parar los datos.
Esta información la colocará en variables fila1, fila2 y col1, col2 para que puedas ajustar a tus hojas.
Tomaré como nombres de hoja: Encuesta y Base que es donde irás acumulando la información.
Lo primero es establecer cuál es la primer fila libre en hoja Base donde empezar a enviar la información.
Desde tu hoja Excel, presioná juntas Alt+F11 para entrar el Editor, insertá un módulo y allí copiá esta macro:
Sub copiando()
'establecer primer fila libre
fila2=sheets("Base").Range("A65536").End(xlup).Row+ 1
col2 = 1  'los datos se guardan a partir de la col A
sheets("Encuesta").Select
activesheet.cells(fila,col).copy destination:= Sheets("Base").cells(fila2,col2)
'repetir por cada dato a enviar, variando fila y col, e incrementando en 1 la variable col2
activesheet.cells(fila,col).copy destination:= Sheets("Base").cells(fila2,col2 + 1)
'otros datos a copiar
End Sub
Esta rutina se ejecuta por cada hoja Encuesta. Tendrás que trabajar un poco pero siguiendo el modelo explicado no tendrás dificultades. No me pidas que lo haga yo porque ese ya es tu trabajo.
Saludos
Elsa
* En mi sitio encontrarás más rutinas y ejemplos para descargar. También manuales para todos los niveles:
http://es.geocities.com/lacibelesdepunilla/manuales
Hola Elsa, te agradezco el apoyo que me has dado, pero no he podido o mejor dicho no he entendido del todo el macro que me hiciste favor de enviar. Creo que soy demasiado novato en esto.
Sin embargo, buscándole una solución a esta tarea que debo realizar, gravé un macro que es el siguiente:
Sub Macro1()
Selection.Copy
Sheets("De 1° a 3°").Select
Range("A3").Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A7:C7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("F3").Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A15:G15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("I3").Select
ActiveSheet.Paste
Sheets("Captura").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Pero me falta sólo un detalle: que la información que copio se pegue en la hoja "1° a 3°" y se acumule, y no que se sustituye como lo hace.
Agradezco de antemano tu apoyo.
Un fuerte abrazo
Carlos
Muy bien por usar la grabadora. Habrás visto que cada copiado es 'personal', tus referencias son únicas con respecto a otros usuarios con otros libros y celdas
Ahora te faltan las primeras instrucciones que te envié para obtener la fila donde deben ir tus datos, así que esta es la rutina ajustada. Leé los comentarios porque falta agregar 2 referencias (comentarios en mayúsculas)
Sub Macro1()
'establecer primer fila libre
fila2 = Sheets("De 1° a 3°").Range("A65536").End(xlUp).Row + 1

Sheets("Captura").Select
'FALTA SELECCIONAR LA PRIMER CELDA A COPIAR
Selection.Copy
Sheets("De 1° a 3°").Select
Range("A" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A7:C7").Select
'Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("F" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A15:G15").Select
'Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("I" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
'Application.CutCopyMode = False
'FALTA ESTABLECER QUÉ CELDAS SE LIMPIARÁN
Selection.ClearContents
End Sub
Con un poco más de tiempo probá con la sintaxis que te dejé para evitar tantas líneas:
Activesheet.range("A7:C7").Copy Destination:=Sheets("De 1º a 3º").Cells(fila2,6)
Y así con el resto de lineas a copiar.
Gracias Elsa
Lo intento y te comento, mil gracias.
Carlos
Estimada Elsa:
Ya quedó, eres una genio.
Mira que lograr que hiciera algo así, de cualquier forma voy a intentar con el primer macro que me enviaste.
Por fin quedó así:
Sub Macro4()
fila2 = Sheets("De 1° a 3°").Range("A65536").End(xlUp).Row + 1
Sheets("Captura").Select
firstcell = ("A3")
Selection.Copy
Sheets("De 1° a 3°").Select
Range("A" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A3:E3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("A" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A7:C7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("F" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A15:G15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("De 1° a 3°").Select
Range("I" & fila2).Select
ActiveSheet.Paste
Sheets("Captura").Select
Range("A15:G15").Select
Application.CutCopyMode = False
Range("A15:G15").ClearContents
Range("A3").Select
End Sub
Mil gracias
Carlos
Quiero decirte que soy de los más novato que te puedes imaginar para crear macros, y debo confesar que me ha costado un montón de trabajo entender un poco de la lógica que se sigue para dar esta instrucción a la máquina, pero con tu valiosa ayuda he avanzado bastante.
Insisto eres una genio.
Un abrazo
Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas