Saber el valor máximo de un producto y fecha de compra

Elegido un elemento del encabezamiento de una columna, ¿Cómo puedo ver en un formulario, cuál es el valor máximo del elemento seleccionado y en qué fecha se compró?

Tengo una hoja Excel, con varias columnas, en las que voy anotando en las sucesivas filas la fecha en que se compra y el importe por el que se compró.

Con la siguiente instrucción sólo consigo saber el importe mayor pero no sé como combinarlo para que también me aparezca en el texbox la fecha.

Worksheets("Productos").Visible = xlSheetVisible

  Worksheets("productos").Select

    Producto = F_Busc_Max_Cot_Val.Com_B_Producto   

    Select Case Producto

    Case "Aceite"

            ultFila = Range("b" & Rows.Count).End(xlUp).Row

            rango = "b6:b" & ultFila

     Case "Galletas"

            ultFila = Range("c" & Rows.Count).End(xlUp).Row

           rango = "c6:c" & ultFila

     …………

 End Select

        F_Busc_Max_Cot_Val.TextB = Application.WorksheetFunction.Max(Range(rango))

       End Sub

1 Respuesta

Respuesta
1

Puedes poner una imagen de tu hoja productos, para ver dónde tienes las fechas.

Que en la fila se vean las filas y las columnas de excel.

Si el importe máximo se repite varias veces, ¿cuál fecha quieres mostrar?

Es decir, el producto "Galleta"

Fecha compra                 Importe

10-enero                           50

11-enero                           49

12-enero                           50

El importe máximo es 50, pero se compro el 10-enero y el 12-enero, ¿cuál fecha quieres mostrar?

Hola Dante. 

Primeramente darte las gracias por el tiempo que me dedicas.

Te envío una imagen de las anotaciones que hago y que he acotado para que el archivo fuera más ligero.

La pregunta que me haces respecto a la información que deseo se plasme en el textbox es la última.

Agradezco la prontitud en contestar y el tiempo que vas a invertir.

Un saludo

Si los datos están como en tu imagen.

Si los títulos están en la fila 2.

Si tu userform se llama "F_Busc_Max_Cot_Val"

Solamente actualiza el nombre del textbox de Fecha.

Con el siguiente código, no es necesario hacer visible la hoja, tampoco es necesarios seleccionar la hoja.

Private Sub CommandButton1_Click()
  Dim sh As Worksheet
  Dim f As Range, rng As Range
  Dim i As Long, lr As Long
  '
  Set sh = Sheets("Productos")
  lr = sh.Range("A" & Rows.Count).End(3).Row
  With F_Busc_Max_Cot_Val
    Set f = sh.Rows(2).Find(.Com_B_Producto, , xlValues, xlWhole, , , False)
    If Not f Is Nothing Then
      Set rng = sh.Range(sh.Cells(3, f.Column), sh.Cells(lr, f.Column))
      i = Evaluate("=MAX(IF(" & rng.Address(external:=True) & "=MAX(" & rng.Address(external:=True) & "),ROW(" & rng.Address(external:=True) & ")))")
      .TextB = sh.Cells(i, f.Column).Value
      .TextFecha = sh.Cells(i, "A").Value
    End If
  End With
End Sub

[No olvides cambiar la valoración a la respuesta.

Hola.

He esto probando la instrucción remitida y tengo que decir que estoy haciendo algo, no, muchas cosas mal,  porque no obtengo el resultado deseado.

He probado la instrucción como una implementación a la ya existente y no obtengo la fecha. La variable "f" no toma ningún valor, consecuentemente, la instrucción continúa con valor no encontrado. Si la trato sola, como única y suficiente, obtengo una fecha que trátese del producto seleccionado que se seleccione siempre sale la misma fecha, en este caso la última tratada, no correspondiendo con el valor más elevado de ninguno de los productos.

Quería que supieras que estoy "trasteando con la instrucción" para que no pienses que me olvidaba de valorar tu contestación.

 Si obtengo algún resultado te comento.

Gracias. Un saludo

Si los datos están como en tu imagen.

Si los títulos están en la fila 2.

Hola Dante.

Decirte que la instrucción que me remitiste funciona a plena satisfacción. Es estupenda.

El motivo por el que no funcionara se debía a varias cosas:

Primero. Traspase la instrucción directamente, sin más

Segundo. Que los títulos de las columnas llevaba un complemento que omití en el archivo que remití para no aturrullar

Tercero. Puse los nombres de los TestBox que yo tenía.

Como puedes leer tenía yo razón, porque estaba haciendo no una cosa solamente mal sino varias.

Muchas gracias nuevamente y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas