Foro de Ayuda Excel | ||
| Soluciona tus problemas con Excel |
| | |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
| | LinkBack | Herramientas | Desplegado |
|
#1
| |||
| |||
| 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. |
|
#2
| |||
| |||
| Cita:
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 |
|
#3
| |||
| |||
| 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. |
|
#4
| |||
| |||
| 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 en donde corresponda creo que conseguirás lo que quieres. Un saludo desde Vitoria |
|
#5
| |||
| |||
| 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 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("D2 Range("D2 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 |
|
#6
| |||
| |||
| 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 |
| Herramientas | |
| Desplegado | |
| |