convertir fórmulas en macros

13/01/2010 - 14:46 por Coloma Fernandez | Informe spam
Hola,
Soy nueva en el foro y me parece muy interesante lo que escribis.
Tengo una preguntita para vosotros, no sin antes indicaros que soy
PRINCIPIANTA
y que muchas de vuestras respuestas me suenan un poquito a chino!
Primero intento explicarme.
Tengo un archivo de excel con dos hojas. Una de las cuales es un formato
tipo columnas que mis clientes rellenan. La otra está oculta y copia datos
de la primera y los transforma mediante fórmulas y los ubica en otras
columnas.
Obvio es un libro protegido con clave.
Todas estas fórmulas hacen que el fichero sea muy pesado y leyendo el foro
veo que sería más sencillo haciéndolo mediante macros pero no tengo ni idea
de formulación.
Por ejemplo, tengo dos columnas llamémosle una A y otra B y en una columna
C, a través
de una fórmula de concatenar se suman A+ ESPACIO + B.
Esa es mi primera pregunta y la segunda.
Esta columna llamada C de la hoja 1 se copia a la una columna A de la hoja 2.
Cómo formulo con VBA y macros todo eso?
alguien me ayuda?
Gracias,

Coloma

Preguntas similare

Leer las respuestas

#1 Guli
13/01/2010 - 21:59 | Informe spam
Hola Coloma

Antes que nada para abrir VBA des Excel tenés que apretar Alt + F11.
Se abre una ventana de VBA en la cual a la izquierda tenés un panel de
Proyectos y otro de Propiedades, de no ser así, vas a Ver - Explorador de
Proyectos y Ver - Ventana de Propiedades.

En el Explorador de Proyectos vas a buscar el que diga VBAProject (nombre de
tu archivo). Vas a hacer click con el botón derecho y vas a Insertar y luego
Módulo.
Asi estás empezando a establecer una Macro.
Se te va a agregar una carpeta llamada Modulo a tu proyecto. La desplegas y
le das doble clik al Modulo 1 y copias el siguiente código:

Sub Concatenar() 'nombre de la macro
Range("A2").Select 'posicionarse sobre A2
Do While ActiveCell <> Empty 'hacer mientras que la celda no este vacía
ActiveCell.Offset(0, 2).Select 'moverse dos columnas a la derecha Columna C
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],"" "",RC[-1])" ' _
escribir la fórmula en la celda activa
ActiveCell.Offset(1, -2).Select 'bajar una fila y moverse dos columnas a la _
izquierda Columna A
Loop 'volver a empezar el proceso hasta que una celda de la columna A esté
vacía
Range("C2").Select 'seleccionar celda C2
Range(Selection, Selection.End(xlDown)).Select 'cumple la misma función que _
Ctrl + Shift + Flecha Abajo
Selection.Copy 'copia las celdas seleccionadas
Sheets("Hoja2").Activate 'pasa a la Hoja2
Range("A2").Select 'posicionarse sobre A2
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, _ Transpose:=False 'pega valores si querés pegar con las
fórmulas solo se usa _ activesheet.paste
Range("A2").Select 'posicionarse sobre A2
End Sub 'Fin de la Macro

Cerras la ventana de VBA y se activa el Excel. Vas a Ver - Barra de
Herramientas y activas la de Visual Basic. Dentro de esta barra tenés un
botón que es Botón de Comando. Haces click en el y te paras en el excel y
estirás hasta la longitud que quieras del botón. Haces doble click en él se
abre VBA y copias el siguiente código:

Private Sub CommandButton1_Click()
Concatenar
End sub

Cerras nuevamente la pantalla de VBA. Haces click con el botón derecho y
seleccionas propiedades. Ahí te encontrás con las opciones del botón en
cuestión. Donde dice "Caption" es el nombre que figura dentro del botón. Te
sugiero que, por ahora sea, lo único que cambies.

Todo esto en base a que los datos empiezan en A2 y siempre y cuando no haya
ninguna celda vacía en la columna A.

Cualquier duda o consulta, avisas??

Saludos,

Guli
Respuesta Responder a este mensaje
#2 Coloma Fernandez
14/01/2010 - 13:28 | Informe spam
Apreciado Guli,
Siento decirte que seguramente hago algo mal...porque me da un error de
compilación o sintaxis...
o eso dice...
yo copié todo tu código y borré a partir de la '
ejemplo: Sub Concatenar() 'nombre de la macro
'nombre de la macro lo borré y así sucesivamente.

Otra cosita..No cosigo encontrar el botón de comando para pegar el último
código que me dices...
alguna idea...
gracias por adelantado
Coloma
Coloma


"Guli" wrote:

Hola Coloma

Antes que nada para abrir VBA des Excel tenés que apretar Alt + F11.
Se abre una ventana de VBA en la cual a la izquierda tenés un panel de
Proyectos y otro de Propiedades, de no ser así, vas a Ver - Explorador de
Proyectos y Ver - Ventana de Propiedades.

En el Explorador de Proyectos vas a buscar el que diga VBAProject (nombre de
tu archivo). Vas a hacer click con el botón derecho y vas a Insertar y luego
Módulo.
Asi estás empezando a establecer una Macro.
Se te va a agregar una carpeta llamada Modulo a tu proyecto. La desplegas y
le das doble clik al Modulo 1 y copias el siguiente código:

Sub Concatenar() 'nombre de la macro
Range("A2").Select 'posicionarse sobre A2
Do While ActiveCell <> Empty 'hacer mientras que la celda no este vacía
ActiveCell.Offset(0, 2).Select 'moverse dos columnas a la derecha Columna C
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],"" "",RC[-1])" ' _
escribir la fórmula en la celda activa
ActiveCell.Offset(1, -2).Select 'bajar una fila y moverse dos columnas a la _
izquierda Columna A
Loop 'volver a empezar el proceso hasta que una celda de la columna A esté
vacía
Range("C2").Select 'seleccionar celda C2
Range(Selection, Selection.End(xlDown)).Select 'cumple la misma función que _
Ctrl + Shift + Flecha Abajo
Selection.Copy 'copia las celdas seleccionadas
Sheets("Hoja2").Activate 'pasa a la Hoja2
Range("A2").Select 'posicionarse sobre A2
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, _ Transpose:=False 'pega valores si querés pegar con las
fórmulas solo se usa _ activesheet.paste
Range("A2").Select 'posicionarse sobre A2
End Sub 'Fin de la Macro

Cerras la ventana de VBA y se activa el Excel. Vas a Ver - Barra de
Herramientas y activas la de Visual Basic. Dentro de esta barra tenés un
botón que es Botón de Comando. Haces click en el y te paras en el excel y
estirás hasta la longitud que quieras del botón. Haces doble click en él se
abre VBA y copias el siguiente código:

Private Sub CommandButton1_Click()
Concatenar
End sub

Cerras nuevamente la pantalla de VBA. Haces click con el botón derecho y
seleccionas propiedades. Ahí te encontrás con las opciones del botón en
cuestión. Donde dice "Caption" es el nombre que figura dentro del botón. Te
sugiero que, por ahora sea, lo único que cambies.

Todo esto en base a que los datos empiezan en A2 y siempre y cuando no haya
ninguna celda vacía en la columna A.

Cualquier duda o consulta, avisas??

Saludos,

Guli
Respuesta Responder a este mensaje
#3 Guli
14/01/2010 - 20:32 | Informe spam
Lo acabo de probar y ahora debería de funcionar (espero):

Sub Concatenar() 'nombre de la macro
Range("A2").Select 'posicionarse sobre A2
Do While ActiveCell <> Empty 'hacer mientras que la celda no este vacía
ActiveCell.Offset(0, 2).Select 'moverse dos columnas a la derecha Columna C
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],"" "",RC[-1])" ' _
escribir la fórmula en la celda activa
ActiveCell.Offset(1, -2).Select 'bajar una fila y moverse dos columnas a la _
izquierda Columna A
Loop 'volver a empezar el proceso hasta que una celda de la columna A esté
vacía
Range("C2").Select 'seleccionar celda C2
Range(Selection, Selection.End(xlDown)).Select 'cumple la misma función que _
Ctrl + Shift + Flecha Abajo
Selection.Copy 'copia las celdas seleccionadas
Sheets("Hoja2").Activate 'pasa a la Hoja2
Range("A2").Select 'posicionarse sobre A2
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False 'pega valores si querés pegar con las _
fórmulas solo se usa activesheet.paste
Range("A2").Select 'posicionarse sobre A2
End Sub 'Fin de la Macro

Con respecto al Botón de comando: pudiste agregar la barra de herramientas
de Visual??

Espero tu respuesta,

Saludos,

Guli
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida