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 de Isaac Reyes
1
1
Isaac Reyes, Es mejor enseñar a pescar que dar el pescado
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.