Macro sumar bajo 2 condiciones

Hola. Tengo una planilla con Hoja Proveedores la cual necesito arrojar resultados en otra hoja2. Buscar el Nombre del proveedor y que con determinado rango de fecha de vencimiento( columnaH  vence) me lo sume en Hoja2. Ahora esto se complica si quisiera buscar sólo el nombre ciertos proveedores  "principales" y el resto si no encuentra los nombres que defino en cierto rangos de filas de la hoja2 me los sume como "otros Proveedores" (ya que son muchos).  Espero se pueda llevar a una macro.  

1 respuesta

Respuesta
1

No mencionaste qué columna es la que se tiene que sumar. Estoy sumando la columna "M".

Cambia en la macro en esta parte el nombre de tus hojas

Set h1 = Sheets("Proveedores")
Set h2 = Sheets("Hoja2")

El cuadro en la "Hoja2" deberá estar tal y como lo presentaste en tu imagen, es decir, los proveedores estarán en la columna B y las fechas en la fila 2.

Los nombres de los proveedores en la hoja2 deberán estar completos tal y como están en la hoja proveedores.

Las fechas de la hoja2 deberán ser fecha no importa le formato.

Sub proveedores()
'Por.DAM
    Set h1 = Sheets("Proveedores")
    Set h2 = Sheets("Hoja2")
    u = h2.UsedRange.Rows(h2.UsedRange.Rows.Count).Row + 1
    v = h2.UsedRange.Columns(h2.UsedRange.Columns.Count).Column + 1
    h2.Range(h2.Cells(3, 4), h2.Cells(u, v)).ClearContents
    For i = 2 To h1.Range("O" & Rows.Count).End(xlUp).Row
        s = h1.Cells(i, "M")
        Set b = h2.Range("B:B").Find(h1.Cells(i, "O"), lookat:=xlWhole)
        If Not b Is Nothing Then
            f = b.Row
            Set c = h2.Rows(2).Find(h1.Cells(i, "H"))
            If Not c Is Nothing Then
                h2.Cells(f, c.Column) = h2.Cells(f, c.Column) + s
            End If
        Else
            Set o = h2.Range("B:B").Find("OTROS", lookat:=xlPart)
            If Not o Is Nothing Then
                f = o.Row
                Set c = h2.Rows(2).Find(h1.Cells(i, "H"))
                If Not c Is Nothing Then
                    h2.Cells(f, c.Column) = h2.Cells(f, c.Column) + s
                End If
            End If
        End If
    Next
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Hola. ¿Tienes el archivo básico? Que me envíes el link. Porque copie la macro y tal cual las imágenes y tus indicaciones, pero por alguna razón la macro sólo me suma el total de la columna M y los arroja en la columna G de la hoja 2. Ahora le agregue fecha en la fila 2 de la columna G y el resultado se corrió hacia la columna H

Comprobé los nombres tal cual sin espacios,, error de escritura y no es eso.

Lo que pasa es que en la hoja2 tienes al proveedor en celdas combinadas. Si vas a utilizar las celdas combinadas, utiliza esta macro.

Sub proveedores()
'Por.DAM
    Set h1 = Sheets("Proveedores")
    Set h2 = Sheets("Hoja2")
    u = h2.UsedRange.Rows(h2.UsedRange.Rows.Count).Row + 1
    v = h2.UsedRange.Columns(h2.UsedRange.Columns.Count).Column + 1
    h2.Range(h2.Cells(3, 4), h2.Cells(u, v)).ClearContents
    For i = 2 To h1.Range("O" & Rows.Count).End(xlUp).Row
        s = h1.Cells(i, "M")
        Set b = h2.Range("B:C").Find(h1.Cells(i, "O"), lookat:=xlWhole)
        If Not b Is Nothing Then
            f = b.Row
            Set c = h2.Rows(2).Find(h1.Cells(i, "H"))
            If Not c Is Nothing Then
                h2.Cells(f, c.Column) = h2.Cells(f, c.Column) + s
            End If
        Else
            Set o = h2.Range("B:C").Find("OTROS", lookat:=xlPart)
            If Not o Is Nothing Then
                f = o.Row
                Set c = h2.Rows(2).Find(h1.Cells(i, "H"))
                If Not c Is Nothing Then
                    h2.Cells(f, c.Column) = h2.Cells(f, c.Column) + s
                End If
            End If
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas