Macros

Hola. Tengo una planilla excel con los siguientes campos: nro proyecto, año, monto, localización. Tipo de financiamiento. Finalizo (si/no), etc... Y quiero en otra hoja, donde coloquen cualquiera año y me aparezca como un resumen: cuantos proyectos se aprobaron ese año, el monto total gastado, de donde son esos proyectos (localizaciones), que tipo de financiamiento, etc... Con una macro me dijern que se podía hacer. Podrías guiarme con un ejemplo parecido o algo básico, porque empecé a hacerlo y la verdad estoy muy perdida. Gracias. O si crees que no es con macros, de que forma..
-

1 Respuesta

Respuesta
1
Aquí te dejo una macro que te puede ayudar.
Lo que hace es aplicar un autofiltro a la hoja y fila que indiques con un valor determinado luego copia y pega en la hoja que también debes indicar.
Sub filtrarYPegar()
    Dim filaIni As Long
    Dim filaFin As Long
    Dim colIni As Integer
    Dim colFin As Integer
    Dim strAnio As String
    'Asignar el año que se va a filtrar
    'strAnio = "lugar donde tienes el año que vas a filtrar"
    'Indicar la hoja de origen y hoja de destino
    Set hojaOrigen = ActiveWorkbook.Sheets("Hoja1")
    Set hojaDestino = ActiveWorkbook.Sheets("Hoja2")
    strAnio = hojaOrigen.Cells(1, "C")
    'Fila de inicio y fin del rango ocupado
    filaIni = hojaOrigen.UsedRange.Row
    filaFin = hojaOrigen.UsedRange.Row + hojaOrigen.UsedRange.Rows.Count - 1
    'Columna de inicio y fin
    colIni = hojaOrigen.UsedRange.Column
    colFin = hojaOrigen.UsedRange.Column + hojaOrigen.UsedRange.Columns.Count - 1
    '''''Debes determinar si es necesario''''
    HojaDestino. UsedRange. ClearContents 'Limpiar la hoja de destino
    '''''
    'Se aplica autofiltro
    HojaOrigen. Cells(filaIni, colIni). AutoFilter
    'Filtrar datos
    ''''''''''''''''''''''''''''''''' En Field indicas la fila de la tabla de datos en que esté el año
    hojaOrigen.Cells(filaIni, colIni).AutoFilter Field:=1, Criteria1:=strAnio
    hojaOrigen.UsedRange.Select 'Seleccionar el rango usado
    Selection. Copy 'Copiar el rango seleccionado
hojaDestino. Select 'Seleccionar la hoja de destino
    Range("A1").Select 'Seleccionar la primera celda
    ActiveSheet.Paste  'Pegar
    Range("A1").Select 'Dejar marcada la primera celda
    Application.CutCopyMode = False
    hojaOrigen.Cells(filaIni, colIni).AutoFilter 'Quitar el autofiltro
End Sub
Observaciones:
Se me escapó una línea de código
strAnio = hojaOrigen.Cells(1, "C")
Esa no va...
y el valor de Field en esta línea
hojaOrigen.Cells(filaIni, colIni).AutoFilter Field:=1, Criteria1:=strAnio
Es la fila en relación al rango de celdas ocupada.
Hola! Mil gracias por la respuesta tan rápida. Me quedó una duda en Observaciones:
Se me escapó una línea de código
strAnio = hojaOrigen.Cells(1, "C")
Esa no va...
La elimino directamente ¿
Sí, esa línea se debe eliminar, pero ten presente que tienes que asinarle un valor a la variable strAnio para que la macro pueda filtrar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas