es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Deseando copiar de una hoja a otra, basado en valores en una columna.

Tengo una hoja de estimación y una factura. Estoy intentando escribir código para buscar la columna de unidades (“L”) en la hoja de estimación. Cuando se encuentra un número, copiar la descripción de una columna diferente (“A”) a la hoja de factura en un rango determinado. Soy capaz de hacer que la búsqueda se repita a través de la columna L y puede determinar si el número es >0. Incluso copiará la primera descripción a la factura. Pero no copiará nada más allá de eso. Estoy buscando ayuda por favor. Aquí está mi código hasta ahora.

Sub CopiarAFactura()
Dim rng As Range
Dim i As Long
Dim a As Long
Dim rng_dest As Range
Application.ScreenUpdating = False
i = 1
Set rng_dest = Sheets(“Estimación”).Range(“L5”)
‘ Encontrar la primera celda con valor en la columna L de la hoja de Estimación
Range(“L5”).Seleccionar
Hasta Que WorksheetFunction.CountA(rng_dest.Rows(i)) = 100
i = i + 1
Set rng = Sheets(“Factura”).Range(“C22:C36”)
‘ Copiar filas que contengan valores a la hoja de Factura
Para a = 1 Al contar las filas de rng
Si ActiveCell.Value > 0 Luego
Sheets(“Estimación”).Range(“A5”).Copy Sheets(“Factura”).Range(“C22”)
End If
‘ Moverse 1 fila hacia abajo desde la ubicación actual
ActiveCell.Offset(1, 0).Select
i = i + 1
Siguiente a
Application.ScreenUpdating = True
Loop
End Sub

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que tienes un buen comienzo en tu código. Para ayudarte, necesitarás agregar un bucle a tu código que copie la descripción de la hoja de Estimación a la hoja de Factura para cada fila que contenga un valor en la columna de unidades. Puedes usar un bucle For para iterar a través de las filas en la hoja de Factura y usar un If para verificar si el valor en la columna de unidades es mayor que 0. Si lo es, puedes usar el método Range.Copy para copiar la descripción de la hoja de Estimación a la hoja de Factura. Aquí hay un ejemplo de cómo podría verse tu código:

    Sub CopiarAFactura()
        Dim rng As Range
        Dim i As Long
        Dim a As Long
        Dim rng_dest As Range
        Application.ScreenUpdating = False
        i = 1
        Set rng_dest = Sheets("Estimación").Range("L5")
        'Buscar la primera celda con valor en la columna L de la hoja Estimación
        Range("L5").Select
        Do Until WorksheetFunction.CountA(rng_dest.Rows(i)) = 100
        i = i + 1
        Set rng = Sheets("Factura").Range("C22:C36")
        'Copiar las filas que contienen valores a la hoja Factura
        For a = 1 To rng.Rows.Count
          If ActiveCell.Value > 0 Then
           Sheets("Estimación").Range("A5").Copy Sheets("Factura").Range("C22")
          End If
            'Avanzar 1 fila desde la ubicación actual
           ActiveCell.Offset(1, 0).Select
           i = i + 1
         Next a
      'Iterar a través de las filas en la hoja Factura
      For i = 1 To rng.Rows.Count
        'Verificar si el valor en la columna de unidades es mayor que 0
        If Sheets("Estimación").Range("L" & i).Value > 0 Then
          'Copiar la descripción de la hoja Estimación a la hoja Factura
          Sheets("Estimación").Range("A" & i).Copy Sheets("Factura").Range("C" & i)
        End If
      Next i
      Application.ScreenUpdating = True
      Loop
    End Sub
    

Comments are closed.