Macro que recorra la columna L de una hoja excel, y que cada vez que encuentre un valor en la celda lo copie a otra hoja excel

Necesito si son tan amables que me ayudasen a hacer, una macro que se sitúe en una hoja excel llamada ''Proyecto'' y que desde la celda L2 hasta la celda L500, recorra cada una de las celdas (que por lo general están vacías) y cada vez que encuentre una celda con una fecha, copie los valores de la columna A hasta la columna O de esa misma fila donde ha encontrado una fecha en otra hoja excel del mismo libro, llamada ''Fechas importantes''.

1 Respuesta

Respuesta
1

¿Tu consulta es por fecha?

Si es así en mi caso yo separo la fecha y hago mi consulta desde hay

mAnda tu macro para mejorarla y así ayudarte mejor

Sub Proyecto()

'Hacemos un contador de filas rellenas en la columna A para saber hasta que fila debemos recorrer en la columna L, dado que la columna L tiene celdas vacías
Dim cuentafilas As Integer
cuentafilas = 0
uf = Sheets("Liste Total").Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To uf
If Sheets("Liste Total").Cells(i, 1) <> Empty Then
cuentafilas = cuentafilas + 1
End If
Next i
'Ahora pasamos a realizar nuestra macro
Dim p As Integer  
p = 0     'Contador de celdas en la columna L con fecha
i = 2      'Para que empiece a recorrer en la fila 2
Sheets("Proyecto").Select
Do While i <= cuentafilas
Sheets(i, 12).Select     'Se situe en la columna L y empiece a recorrer las filas
If ActiveCell.Value <> "" Then      'Si la celda tiene contenido (una fecha)
p = p + 1                                          'Aumente el contador de celda con dato
i = i + 1                                           'Pase a la siguiente fila
ActiveCell.Value.Copy Destination:=Sheets("Fechas importantes").Cells(i, 4)

'Copie el valor de la celda (la fecha) en la otra hoja excel 
End If
Loop
End Sub

Sí, los contenido de la celda L son en ocasiones fechas y en otras ocasiones, no hay nada. El caso es que cada vez que encuentre contenido en la fila i de la columna L, copie el valor a otra hoja excel. Y así sucesivamente.

Muchas gracias por la respuesta!

Tu consulta por fecha es un día en especifico o por mes o año.

Y si es entre varias fechas

Realmente no es una consulta por fecha, es simplemente que cada vez que encuentre un resultado, que por ejemplo en la celda L87 hay un resultado (es una fecha sí, pero eso no me importa) lo copie a otro libro excel. Por ejemplo en la L85 la celda está vacía, entonces deberá pasar a las L86, comprobar si en la L86 hay contenido(una fecha), si lo hay copiarlo en otro libro, si no lo hay pasar a la L87, y así sucesivamente

Buenos jorge con un userfom yo tengo la siente macro lo que hace es buscar lo que solicito

En un combobox y me lo pasa a un libro nuevo con los valores solicitado

Es decir tengo una tabla con varias columna en la que busco en la columna "E" y los valorese de la fila en la que encuentra lo que buso me lo para al libro nuevo

Al iniciar el userform me carga los datos sin repetírmelo

Private Sub UserForm_Initialize()

HojaX.Activate

Range("i2").Select
Do While Not IsEmpty(ActiveCell)
If InStr(cadena, ActiveCell) = 0 Then
cadena = cadena & " " & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
cadena = Right(cadena, Len(cadena) - 1)
VALOR = Split(cadena, " ")
For i = 0 To UBound(VALOR)
ComboBox1.AddItem VALOR(i)
Next
HojaX.Select
End Sub

End Sub

Y en el boton

Tengo esta macro

Private Sub Btn_buscar_Click()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

Dim NUEVO As Object
Dim i As Integer
Dim H As Integer
Dim L As Integer
Dim M As Integer
Dim j As Integer
Dim T As Integer
Dim FINALTOTAL As Integer

Dim final As Integer
Dim FINAL2 As Integer
Dim ORIGEN As String
Dim SALDO As Double
Dim VALOR As String
Dim CONTAR As Double
Dim CONTAR1 As Double

Set NUEVO = Workbooks.Add
NUEVO.Activate
ORIGEN = ActiveWorkbook.Name

For i = 1 To 1000
'TOTAL INGRESOS
If Hoja8.Cells(i, 5) = "" Then
final = i - 1
Exit For
End If
Next

VALOR = info_mes.ComboBox1
' ENTRADAS
CONTAR = 10
' ASIGNAR VALORES PARA EL INFORME
Application.Workbooks(ORIGEN).Worksheets(1).Cells(1, 1) = "INFORME DE INGRESOS POR MES"
Application.Workbooks(ORIGEN).Worksheets(1).Cells(3, 2) = VALOR

CONTAR1 = 10

For j = 1 To final

If Hoja8.Cells(j, 5) = VALOR Then
CONTAR1 = CONTAR1 + 1

Hoja8.Cells(j, 3).Copy Destination:=Application. Workbooks(ORIGEN). Worksheets(1). Cells(CONTAR1, 4)
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR1, 2) = Hoja8.Cells(j, 1)
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR1, 3) = Hoja8.Cells(j, 2)
Application.Workbooks(ORIGEN).Worksheets(1).Cells(CONTAR1, 5) = Hoja8.Cells(j, 4)

End If
Next

wsuma3 = WorksheetFunction.Sum(Range("e11:e100000"))
Range("e11").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = wsuma3
ActiveCell.Copy Destination:=Sheets("hoja1").Range("b4")
Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).FormulaR1C1 = "TOTAL"

'*************** FORMATO
NUEVO.Activate

ActiveCell.Offset(0, 1).Select
Selection.Font.Bold = True
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Range("H16").Select

Range("A1:F1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.Font.Size = 16
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
With Selection.Interior
.ColorIndex = 10
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 2
Selection.Font.Bold = True
Columns("C:C").ColumnWidth = 22
'Windows("Libro13").Activate
'Windows("INFORME POR REFERENCIA.xls").Activate
'Windows("Libro15").Activate
Range("A3").Select
ActiveCell.FormulaR1C1 = "MES"
Range("A4").Select
ActiveCell.FormulaR1C1 = "INGRESO"
Range("B4:J4").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("B3:J3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
'Windows("INFORME POR REFERENCIA.xls").Activate
'Windows("Libro15").Activate
Range("B8").Select
ActiveCell.FormulaR1C1 = "SALIDAS DEL MES"
Range("B9").Select
ActiveCell.FormulaR1C1 = "Nº FACTURAS"
Range("C9").Select
ActiveCell.FormulaR1C1 = "CLIENTES"
Range("D9").Select
ActiveCell.FormulaR1C1 = "FECHAS"
Range("E9").Select
ActiveCell.FormulaR1C1 = "INGRESOS"
Range("B8:E8").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
ActiveCell.FormulaR1C1 = "FACTURAS DEL MES"
Range("B8:E8").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 2
Selection.Font.Bold = True
Range("D10:d60").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Range("A2").Select
'***********************************

info_mes.ComboBox1 = ""

Hoja1.Cells(3, 1) = ""

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False

Unload info_mes

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas