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
¿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!
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
- Compartir respuesta