Función buscarv de excel

Mi problema es el siguiente: tengo una lista en Excel con nombres de vendedores en una columna y el volumen de sus ventas en otra. Deseo conocer el nombre del que hizo la máxima venta y utilizo BUSCARV (MAX(RANGO VENTAS); MATRIZ; 2, FALSO) (en  la columna 2 están los nombres de los vendedores). Todo va bien, excepto si hay dos o más personas que llegaron al máximo de venta, pues buscarv sólo me devuelve el nombre del primero que aparece en la lista.
Me dijeron que se podría resolver con una macro, pero no tengo ni idea de cómo.Te agradecería que me indicaras como puedo hacer para que, en caso de haber varios valores máximos, Excel me devuelva el nombre de los distintos vendedores
Lo que necesito es que excel me responda a la pregunta:
EL VENDEDOR QUE ALCANZÓ MÁS VENTAS FUE: (Excel buscará el nombre correspondiente). El problema surge cuando hay varios vendedores con el mismo  importe de ventas y ambos  son los mejores vendedores
Gracias
 

1 respuesta

Respuesta
1

Te dejo el código de la función que te sirve para lo que necesitas

Function BuscarTodos(valor As Variant, rango As Range, columna As Integer) As Variant
''Creada por FSerrano en 120215 para (xxxxxx) en TodoExpertos.com
''Devuelve todos los valores en la columna especificada para la primera columna
''Emula la función BuscarV para todos los valores posibles
donde = rango.Address
caracter = ","
fin = Application.WorksheetFunction.CountIf(Range(Range(donde).Columns(1).Address),valor)
For i = 1 To fin
    inicio = Range(donde).Rows(1).Row
    If i = fin And fin <> 1 Then
        caracter = " y "
    End If
    BuscarTodos = BuscarTodos & caracter & Range(donde).Rows(Application.WorksheetFunction.Match(valor, Range(Range(donde).Columns(1).Address), 0)).Columns(columna) 
    donde = Cells(Application.WorksheetFunction.Match(valor, Range(Range(donde).Columns(1).Address), 0) + inicio, Range(donde).Columns(1).Column).Address & ":" & Cells(Range(donde).Rows.Count + inicio - 1, Range(donde).Columns.Count).Address
Next
BuscarTodos = Mid(BuscarTodos, 3, Len(BuscarTodos) - 2)
End Function

Si lo prefieres, puedes descargar el archivo desde este link

https://skydrive.live.com/redir.aspx?cid=6d35b24ed86b6dd0&resid=6D35B24ED86B6DD0!331&parid=6D35B24ED86B6DD0!146&authkey=!ADGjxYtu1XMaMMI

La 'gramática' de la función es similar a la de la función BUCARV.

Tienes una pregunta activa, por favor revisa la respuesta y solicita aclaraciones, o puntúa si la respuesta fue satisfactoria.

Gracia por intentar ayudarme, pero tengo un problema:

Mi Excel es el 2007 y cuando quiero abrir el archivo con él me pide que me registre en Windows Live. No sé si eso me dará problemas después (tengo Windows Xp).

busqué información y descargué el Service Pack para 2007 pero no me dio resultado.

Se te ocurre alguna forma de solucionarlo? La verdad es que no soy nada experta en estas cosas.

Gracias

Si quieres enviame un correo, donde te pueda enviar una copia del archivo.

mi correo es (xxxxxx)

Gracias por tu interés

Te he enviado el correo con el archivo, revísalo y me cuentas.

Eres genial

Sólo tengo que copiar mis datos en tú archivo y ya está.

De todos modos voy a intentar familiarizarme con Visual Basic (no tengo ni idea)

Te incluyo como experto favorito para próximas ocasiones (espero que no te canses de mí)

Muchísimas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas