Retroceder   Foro Ayuda Excel > Dudas y consultas sobre Excel > Macros y programación VBA
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1  
Antiguo 20/10/08, 17:59:38
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: Chile
Mensajes: 5
Predeterminado Ayuda Macro que inserta formula en Rango Variable

Bueno,

Holla amigos muy util y fascinante vuestra pagina que nos ayuda a los que queremos aprender a utilizar el excel a nuestro antojo.

Sin mas les planteo mi problema, que quien sabe quizas sea muy sencillo.
comienzo a grabar una macro, la cual asigna cierta formula en una columna, para un archivo determinado.

Este archivo varia en cuanto a la cantidad de lineas de un día a otro.

Es decir esta formula muy sencilla por ejemplo si la aplico para 50 lineas y al día siguiente el archivo solo tiene 10 lineas, de todas formas aplica la formula a las 50 lineas.
Lo mismo ocurre si el archivo luego tiene mas de 50 lineas. Solo se aplica a las 50 celdas de la columna.

Lo que quisiera es que esta formula se aplique a la cantidad de celdas ocupadas en la columna respectiva que tenga el archivo, ni mas ni menos.

Esto dificulta que pueda terminar la macro, ya que no puedo fijar las hojas adecuadas que contienen datos correctos.

Si hay solución espero me puedan responder.

Desde ya muchisimas gracias por vuestra ayuda.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2  
Antiguo 20/10/08, 19:11:24
ST_ ST_ is offline
Gran participante
 
Usuario desde: sep 2008
Versión de Excel: Excel 2003
Conectado desde: México
Mensajes: 411
Predeterminado

Cita:
Empezado por stoploco Ver Mensaje
...Este archivo varia en cuanto a la cantidad de lineas de un día a otro.

Lo que quisiera es que esta formula se aplique a la cantidad de celdas ocupadas en la columna respectiva que tenga el archivo, ni mas ni menos.
una forma sencilla de hacerlo con "Doña grabadora de macros" es:
1.-enciende/inicia la grabadora de macros
2.-inserta/escribe la formula enla 1ª fila de la columna
3.-posicionate con el cursor en la esquina inferior derecga de la formula que acabas de intriducir
4.-te debe aparecer una crucecita sencilla como una especie de signo +
5.-da doble click y automaticamente 'rellenara el resto de las filas,hasta donde tienes dados en la columna inmediata anterior
6.-para la grabadora

ahora ya tienes lista tu macro que se ajusta hasta el numero de filas exactas !!

si tienes problemas sube un archivo de ejemplo
__________________
Salu2 ST
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3  
Antiguo 20/10/08, 19:53:18
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: Chile
Mensajes: 5
Thumbs up Gracias por responder...

Estimado, esto lo había intentado antes inicio la grabación, inserto la formula, le doy a la crucetita inferior derecha, se aplica la formula hasta la ultima celda de la columna, paro la grabación.

Pero si ejecuto la macro en un nuevo archivo, que tenga mas lineas o menos, aplica la formula hasta el n° de celda del archivo original.

Quiero enviarte 3 archivos como ejemplos.

El (1) contiene la macro y tiene 151 lineas.
El (2)tine menos lineas.
El (3) tiene mas lineas.

Al aplicar la macro del (1) en el archivo (2), la corre hasta 151 lineas.
Al aplicarla en el archivo (3) lo mismo.
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (25,8 KB, 17 visitas)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4  
Antiguo 21/10/08, 08:58:44
Gran participante
 
Usuario desde: jun 2008
Versión de Excel: Excel 2003
Conectado desde: España
Mensajes: 692
Predeterminado

Hola stoploco

Sin entrar a analizar tu macro, si en primer lugar localizas la última fila con datos, para ello usa algo como

uf = Range("A65536").End(xlUp).Row

suponiendo que la columna A nos marca la última fila con datos.

y después defines tu rango de copiado o de rellenado de datos tal que

Range("D2" & uf)

en donde corresponda creo que conseguirás lo que quieres.

Un saludo desde Vitoria
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5  
Antiguo 21/10/08, 14:30:45
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: Chile
Mensajes: 5
Predeterminado

Ioyama:

Esta sería la Macro:

Inserté lo que me dijiste, pero la verdad no se donde y quedó de esta manera.
¿Me ayudas?

Sub Macro3()
'
' Macro3 Macro
' Macro grabada el 20/10/2008 por hmartinez
'

'
Columns("C").Select
Selection.Insert Shift:=xlToRight
Selection.NumberFormat = "General"
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlFixedWidth, _
OtherChar:=".", FieldInfo:=Array(Array(0, 2), Array(2, 2)), _
TrailingMinusNumbers:=True
Range("D1").Select
ActiveCell.FormulaR1C1 = "CAJAS"

uf = Range("A65536").End(xlUp).Row
Range ("D2" & uf)


Range("D2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]<>"""",RC[1]/RC[-2],"""")"
Selection.AutoFill Destination:=Range("D2500")
Range("D2500").Select
Columns("A:A").Select
Range(Selection, Selection.End(xlToRight)).Select
Columns("A:R").EntireColumn.AutoFit
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("R:R").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&F"
.RightHeader = "Página &P"
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.590551181102362)
.BottomMargin = Application.InchesToPoints(0.590551181102362)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With



End Sub
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6  
Antiguo 21/10/08, 17:42:31
ST_ ST_ is offline
Gran participante
 
Usuario desde: sep 2008
Versión de Excel: Excel 2003
Conectado desde: México
Mensajes: 411
Predeterminado

como dice Ioyama,sin entrar a analizar tu macro....

creo que la variable sugerida debe ser aquí:
Selection.AutoFill Destination:=Range("D2: D151") por

uf = Range("A65536").End(xlUp).Row
Selection.AutoFill Destination:=Range("D2: D" & uf)
__________________
Salu2 ST
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7  
Antiguo 21/10/08, 20:56:30
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: Chile
Mensajes: 5
Predeterminado

muchas pero muchas gracias me sirvió a la perfección...
no sabía donde agregar las sentencias y que bueno que me ayudaron con mi ignorancia...
see you later
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT +2. Ahora son las 01:58:43.


© Ayuda Excel

Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

1 2 3 4 5 6 7