Páginas

Estamos Para Ayudarle

Si desea que le resolvamos cualquier duda, con respecto a Excel, deje un comentario en el Post de Bienvenida o envie un correo a hector.eduardo.pm@hotmail.com ;)

Pregunta: Copiar datos sin tomar filas vacias

Usuario:
En un libro de Excel, de la hoja "Diario" por medio de una macro, deseo copiar el rango (Q10:R40), pegar los datos a partir de la celda (Q100), eliminando las filas vacias.
 Un saludo
 
Respuesta:
Buen dia amigo, por lo que pude entender esto es lo que usted necesita:
 
contador1 = 0
    contador2 = 0
   
    For Each c In Worksheets("Diario").Range("Q10:Q40")
       
        If c.Value <> "" Then
            Worksheets("Diario").Cells(100 + contador2, 17).Value = Worksheets("Diario").Cells(10 + contador1, 17).Value
            Worksheets("Diario").Cells(100 + contador2, 18).Value = Worksheets("Diario").Cells(10 + contador1, 18).Value
            contador2 = contador2 + 1
        End If
       
        contador1 = contador1 + 1
       
    Next c

 
Saludos
 
Usuario:
En primer lugar el rango indicado no es el corrector, deberia de ser (Q10:S40).
lo he cambiado y no funciona, no elimina las celdas vacias y al copiar los datos en
Q100, el primer dato es la suma del total, hasta ahora yo funcionaba con una macro
para hacer lo mismo en el rango (A10:R40) y pegarlos en (A55) que es el siguiente y me funciona correctamente
Sub locomocion()
ActiveWindow.LargeScroll Down:=-1
Selection.Autofilter Field:=1, Criterial:=">0", Operator:=xlAnd
Range("A10:R40").Select
Selection.Copy
Range("A55").Select
ActiveSheet.Paste
Application.CutCopyMode=False
ActiveWindow.SmallScroll Down:=-9
Selection.Autofilter Field:=1
End Sub
a esta macro le cambio el rango a copiar y el de destino y no me funciona, si te es más facil corregir esta ajustadola  a los rangos ("Q10:S40") y pegarlos en Q100.
Gracias por anticipado
 
Respuesta:
Amigo le voy a dar un consejo, cuando le den una posible solucion pruebela tal como se la dan sin modificarla.
 
Su propuesta quedaria asi:
 
    Range("Q10:S40").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="<>"
    Range("Q10:S40").Select
    Selection.Copy
    Range("Q100").Select
    ActiveSheet.Paste
    Range("Q10:S40").Select
    Application.CutCopyMode = False
    Selection.AutoFilter

 
Si no le funciona por favor agame llegar su archivo para ajustarlo a sus necesidades
Saludos
 
Usuario:
Perdona por modificar tu macro, mi intención era no tener que volverte a molestar
Gracias por tu interes

Pregunta: ¿Se puede poner una formula en una ruta?

Usuario:
Hola
Queria saber si se puede poner una formula en una ruta.
Es decir. Yo tengo un excel llamado ACUMULADO, por otro lado tengo 12 archivos (correspondientes a los meses llamados FINAL 1, FINAL 2, FINAL 3... asi hasta FINAL 12.
En ACUMULADO quiero traer los datos de los FINALES, con lo cual tengo en A2, 1; en A3, 2; en A4, 3; asi hasta 12. En B2 quiero traer el dato de FINAL 1 de la celda B2, con lo cual pondria ='[FINAL 1.xlsx]Hoja1'!B2... PERO lo que quiero formular es el nombre del archivo en funcion a la celda A2, es decir, en lugar de poner ='[FINAL 1.xlsx]Hoja1'!B2 poner algo asi como ='[FINAL "A2".xlsx]Hoja1'!B2.
Se puede hacer????
GRACIASSSSSSSSSSSSSSSSSSS

Respuesta:
Me parece que lo que quieres decir es poner una ruta en una formula ;)
Si se puede hacer y es realmente sencillo. Solo tienes que abrir los Libros y luego vincular las celdas del Libro ACUMULADO con las celdas de los Libros FINAL tal cual como lo harias con una celda comun y corriente:
-Abrir libros.
-En el Libro ACUMULADO seleccionas la celda B2.
-Colocas = y luego te vas al Libro FINAL 1. Seleccinas la celda que quieres vincular y presionas ENTER.
Saludos

Usuario:
No no es esto lo que busco.
Es una formula en una ruta.
Ya que tengo varios archivos de FINAL, no es solo FINAL 1 y justamente lo que quiero es que el excel sepa que FINAL coger segun la cel da A2 o A3 o A4...
Gracias de todos modos.

Respuesta:
Ah ok, en verdad disculpame por no haber leido bien la pregunta. Lo que necesitas es una funcion llamada DIRECCION:
 
=DIRECCION(2;2;1;1;"[FINAL "&A2&".xls]Hoja1")
 
Saludos =)

Usuario:
GRACIAS, vamos llegando, pero no me da el valor de la celda sino la ruta... y necesito el valor de FINAL 1 Celda B2.

Respuesta:
Tienes razon, la funcion DIRECCION devuelve una cadena de texto que hay que evaluarla con la funcion INDIRECTO de la siguiente forma:
 
=INDIRECTO(DIRECCION(2;2;1;1;"[FINAL "&A2&".xls]Hoja1");1)
 
Saludos

Usuario:
Wow... impresionante. El unico problema que tengo ahora es que deben estar abiertos los ficheros de origen y son mas de 50 jijijiji no sé si lo resistirá!!!
GRACIAS

Respuesta:
No es necesario mantener abierto los 50 ficheros, excel deberia intentar actualizar los datos recuperando los ultimos datos guardados.
En todo caso, con abrir y cerrar los archivos es suficiente sin tener que mantenerlos abiertos.
 
Saludos =)

Usuario:
Mis mas sinceras gracias!

Pregunta: Pasar datos a otra hoja

Usuario:
Buenas a todos!!
Les escribo porque necesito saber si se puede exportar datos de una hoja a otra. Les comento como viene el asunto:
Tengo una serie aprox. 200 empleados que estan activos y cada uno ocupa con sus datos personales una fila; me gustaria que al renunciar o que sea despedido; marcarlo con un checkbox (o con lo que ustedes sugieran) y sea pasado a una segunda hoja y eliminado ese empleado de la hoja de los activos.
No se si fui claro, si es asi, espero que puedan ayudarme.
Muchas gracias.-
Respuesta:
Buenas tardes amigo
Tengo una posible solucion a tu problema. Cree un libro con tres hojas llamadas "Todos", "Activos" y "No Activos". Haciendo una seleccion de un campo de Status, en la joja "Todos", se puede intercambiar automaticamente todos los datos entre las hojas "Activos" y "No Activos".
El Ejemplo puedes descargarlo aqui EJEMPLO ACTIVOS_Y_NO_ACTIVOS.XLS
Saludos
Usuario:
Es buena y practica tu respuesta, pero tengo una gran cantidad de datos por cada uno y tengo miedo que con tanta formula se me clave el archivo. Lo aplico y te cuento como me fue.
Muchas gracias.-

Pregunta: ¿Es posible relacionar dos celdas editables?

Usuario:
Hola,
Mi consulta radica en poder editar valores en diferentes celdas y que estas se cambien automáticamente, es decir poder editar un valor en una celdo o la otra indiferentemente. Pensado en una planilla de gastos general y en otra hoja las planillas con el detalle de cada categoría, o para la programación de una proyección de sueldos donde se pueda tener una hoja por cada proyecto y una general donde se resuman todos los proyectos para cada persona.
Sé que se puede hacer con referencias a una base de datos SQL, pero ya no sería en excel y tendría que entrar a hacer un programa para el despliege y edición de los datos.
Muchas Gracias,
 
Respuesta:
Buenas tardes bgino
Esto no se puede hacer directamente en la hoja porque se crearia bucle ciclico infinito, pero si se puede hacer con un sencillo Macro y el edito VB:
En el codigo de la Hoja1 colcas esto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("b2") Then
        Worksheets("Hoja2").Range("b2").Value = Range("b2").Value
    End If
   
End Sub

En el codigo de la Hoja2 colocas esto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("b2") Then
        Worksheets("Hoja1").Range("b2").Value = Range("b2").Value
    End If
   
End Sub

Con eso queda resuelto tu problema y aqui te dejo un sencillo ejemplo: EJEMPLO CELDAS CONECTADAS
 
Usuario:
Hola,
Excelente, Muchas Gracias.
Para pocas celdas sirve mucho al igual que para contiguas cambiando el rango, pero para muchas celdas separadas puede ser un gran problema, especialmente para llevar el control de cambios.
Muchas Gracias, el ejemplo está clarísimo y funciona perfecto.

Pregunta: eliminar una linea creada por medio de dos puntos

Usuario:
Hola, vuelvo a tener alguna dudilla sobre el VBA excel.
El caso es que he creado una funcion "REPRESENTAR" que lo que hace es coger valores de distintas celdas a modo de coordenadas:
a1x = Worksheets("New Position").Cells(30, 6).Value
a1y = ....
(como este otros tantos).
Luego, creo lineas que unen esas coordenadas, por ej:
Set myDocument = Worksheets("HOJA3")
With myDocument.Shapes.AddLine(xoffset1 + b1x, yoffset1 - b1y, xoffset1, yoffset1).Line
    .DashStyle = msoLineSingle
    .ForeColor.RGB = RGB(136, 0, 0)
End With
(habiendo definido anteriormente YOFFSET, XOFFSET ).
 
Lo que ahora quiero, es hacer otra funcion en otro módulo, que lo que haga es borrarme esas lineas que he creado.
No tengo ni idea de cómo hacerlo!!
No he encontrado mucho en los tutoriales...
Espero que me podais ayudar.
Muchas gracias de antemano!! ;)

Respuesta:
Puedes hacerlo de la siguiente forma:
    myDocument.Shapes("Line 1").Select
    Selection.Delete
Saludos
Usuario:
Hola, muchas gracias por la respuesta, pero...
es que en mi código no escribo en ningún momento "Line 1", entonces... cómo puedo diferenciar las lineas?, 
el caso es q cada linea está escrita por coordenadas...
Gracias de nuevo
Respuesta:
Buen dia
Los nombres se colocan automaticamente pero no te preocupes, con este codigo eliminaras todas las lineas que esten en la hoja:
Set myDocument = Worksheets("Hoja1")
myDocument.Shapes.SelectAll
Selection.Delete
Saludos
Usuario:
Hola de nuevo!!
acabo de probar lo que me has dicho y el caso es que en mi HOJA1, donde hace las lineas, tengo tambien unos botones que al clickarlos crea la figura.
El problema es que cuando creo este código "SELECTALL", me borra incluso esos botones!!
sabrías como poder ayudarme??
muchas gracias de nuevo!!
Respuesta:
No hay problema mi amigo, con este otro codigo se borraran solamente las lineas:
 
Set myDocument = Worksheets("Hoja1")
For Each sh In myDocument.Shapes
    If sh.Type = msoLine Then
        sh.Select
        Selection.Delete
    End If
Next

 
Saludos =)
Usuario:
Ya lo he probado y funciona a la perfeccion!! muchisimas gracias!!!  ;)

Pregunta: Usar OptionButton con un Boton

Usuario:
Saludos a todos en el foro
Mi consulta es la siguiente: Tengo un UserForm1 con un Frame1, en el cual existen 3 optionButton (OptionButton1, OptionButton2 y OptionButton3) y fuera del Frame un Boton de comando.
Lo que pretendo es que al seleccionar un optionButton se ejecute una macro para la que fué configurado y que ésto se realice hasta que pulse el boton ejecutar.
En el Boton tengo el siguiente codigo:
Private Sub CommandButton_Click()
Dim x as Control
For Each x In Frame1.Controls
If x.value = True then
If OpttionButton.Enabled = True Then
Range("a1").value = 1
Else
If OpttionButton2.Enabled = True Then
Range("a1").value = 2
Else
If OpttionButton3.Enabled = True Then
Range("a1").value = 3
End If
End If
End If
End Sub
Al ejecutarlo efectivamente me pone los valores en A1 pero lo hace al momento de seleccionar el OpttionButton y yo necesito que lo haga hasta que yo pulse el Boton Aceptar.
¿Alguien podria ayudarme con el código?
Desde Ya muchas Gracias
Jonathan
 
Respuesta:
Buenas tardes amigo
Modifique y probe su codigo y funciona bien. El problema que encontre es el uso de OptionButton.Enabled cuando en realidad deberia utilizar OptionButton.Value.
Pruebe con el siguiente codigo:
Dim x As Control
   
    For Each x In Frame1.Controls
        If x.Value = True Then
            If OptionButton1.Value = True Then
                Range("a1").Value = 1
            End If
            If OptionButton2.Value = True Then
                Range("a1").Value = 2
            End If
            If OptionButton3.Value = True Then
                Range("a1").Value = 3
            End If
        End If
    Next x 

Saludos
 
Usuario:
Muy Bien. Me ha sido de gran utilidad

Transferencia automatica de datos entre Hojas de un mismo Libro

En el presente Ejemplo se aplica la Funcion BUSVARV para transferir los datos desde una Hoja a otra.

Ejemplo: Se tiene una serie de 20 empleados y cada uno con sus respectivos datos personales. Se desea que, dependiendo de su Status, los datos de cada empleado sean transferidos a una Hoaja "Activos" o "No Activos" segun sea el caso.

DOWNLOAD el archivo .xls

Saludos a todos

He creado este blog con la intencion de ayudar a todos aquellos que nececiten formular, o mejorar, sus hojas Excel para algun fin especifico.

Espero ser de gran ayuda para ti y que puedas disfrutar de todo el material que sera publicado, frecuentemente, en este Blog.

No dudes nunca en hacer alguna pregunta o solicitud ya que es esa la idea, ayudar a todo aquel que lo necesite.

Saludos