Ayuda para Traer Datos y Filtros

Tengo una Hoja (hoja1) con 2 columna cod. Vend. Y Objetivo total 7 vendedores. En otra hoja (hoja2) un listado con cod. Cliente, vendedor, e importe de compra en el mes total 3 columnas con n filas (con autofiltro) donde el vendedor se repite muchas veces. En la parte superior de la misma hoja (hoja2) tengo un resumen donde quiero poner Objetivo de $ venta y el logrado ($ venta realizadas) esto quiero que sea dependiendo del vendedor/s que filtro. El logrado lo obtengo fácil uso SubTotalales que me suma el importe de lo visible mi problema es, al querer traer el objetivo de la otra hoja ya que tiene que ser del vendedor que esta filtrado o la suma de los objetivo si filtro mas de un vendedor.- Saludos!!! Ariel

Respuesta
1

Estuve revisando algunas fórmulas y no encuentro como sumar los objetivos, si gustas te hago una macro, para que sume los objetivos de los proveedores que filtraste, para ello necesito que me digas en qué celda voy a poner el resultado y también dime en qué celdas tienes los títulos "cliente, vendedor, e importe de compra "

Saludos. Dam

Desde ya muchas gracias, Te comento ahora ya tengo una macro y anda bien el único inconveniente es que la que tengo me trae solo una columna de objetivos, el tema es que yo nesecito trar por lo menos tre columas de objetivos de distintas cosas, la solucion es hacer 3 funcione scomo esta que te paso, pero seria bueno saber si se puede modificar para poder traer los datos de los objetivos como en un vectos donde la primera pos. sea un objetivo, la segunda otro objetivo de otra cosa asi hasta n objetivos de distintas cosas.-

Function traeobjetivo() As Double
Application.Volatile
Dim i As Integer
Dim r As Range
Dim f As Integer
Dim v() As Integer
Dim s As Double
Dim t As Integer
Set r = Sheets("Hoja1").Range("A1")
f = 0
Do
f = f + 1
If r.Offset(f, 0) = "" Then
Exit Do
Else
ReDim Preserve v(r.Offset(f, 0))
v(r.Offset(f, 0)) = 0
End If
Loop
t = f - 1
Set r = Sheets("Hoja2").Range("Vend")
f = 0
Do
f = f + 1
If r.Offset(f, 0) = "" Then Exit Do
If r.Offset(f, 0).Height = 0 Then
Else
On Error Resume Next
i = r.Offset(f, 0)
If i > t Then
ReDim Preserve v(i)
End If
v(i) = i
End If
sigue:
Loop
Set r = Sheets("Hoja1").Range("A1")
f = 0: s = 0
Do
f = f + 1
If r.Offset(f, 0) = "" Then Exit Do
'On Error GoTo sale
If v(r.Offset(f, 0)) > 0 Then
s = s + r.Offset(f, 2)
End If
Loop
sale:
traeobjetivo = s
End Function

Donde Set r = Sheets("Hoja2").Range("Vend") Ven es F12 pero le puse un nombre de celda para que si me incertan filas por encima del filtro no me afecte los datos.-

Podrías poner un ejemplo de dónde están las otras columnas de objetivos y cuáles cosas, porque en tu pregunta inicial sólo tienes clientes y vendedores.

Espero tus comentarios.

Te mando el avance de una macro que te trae un objetivo, pero para modificar cualquiera, necesito me escribas algunos ejemplos.

'***Macro***
Sub objetivo()
Dim objetivo As Long
objetivo = 0
'Por.Dam
Application.ScreenUpdating = False
Worksheets("Hoja2").Select 'compras
Range(Cells(5, 1), Cells(5, 3)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Worksheets.Add 'Hoja de paso
    destino = ActiveSheet.Name
    ActiveSheet.Paste
    Range("B:B").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("D1"), Unique:=True
    ufila = Range("D" & Rows.Count).End(xlUp).Row
    For i = 2 To ufila
        vendedor = Cells(i, 4)
        Worksheets("Hoja1").Select
        Range("A:A").Select
        Set rangoObj = Selection.Find(What:=vendedor, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
        objetivo = objetivo + rangoObj.Offset(0, 1).Value
        Worksheets(destino).Select
    Next
   Application.DisplayAlerts = False
   Worksheets(destino).Delete
   Application.DisplayAlerts = True
Application.ScreenUpdating = True
If objetivo = 0 Then
    Worksheets("Hoja2").Select
    Cells(2, 1).Value = objetivo
    MsgBox ("No se filtro nada")
Else
    Worksheets("Hoja2").Select
    Cells(2, 1).Value = objetivo
End If
End Sub
'***Macro***

saludos.dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas