Ayuda para llevar las cuentas de la venta de artículos desde Microsoft Excel
Hola nuevamente gracias por todas tus respuesta y quisiera que me ayudaras en otra, ¿la primera es necesito un msgbox que me de el total de artículos vendidos y la cantidad de todos los articulosel problemas es que no tengo un limite de artículos para ingresar entonces necesito que el msgbox este relacionado con la ultima celda activa de artículos no? Y la segunda es : como le hago para que un inputbox me busque una fecha y me muestre los artículos ingresados en esa fecha, el total de artículos y la cantidad en precios en un textbox o en que me recomiendas,
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Tal vez el escenario que yo imaginé sea distinto al que tienes, pero no diste muchas especificaciones sobre el mismo. Supongo que tienes un listado de productos y en una columna ingresas una cantidad de unidades vendidas. Después de la última fila ocupada de esa columna tienes una función de suma que da el total de unidades vendidas. Asumiré que el rango de tal columna es la D6:D3000 Si con los pocos datos que tengo, acerté en tu problema, esta instrucción mostrará ese total de unidades vendidas en un msgbox: MsgBox "El total de unidades vendidas es :" & Application.WorksheetFunction.Max(Range("D6:D3000")) Si lo que quieres saber es cuantos de todos esos artículos fueron vendidos, independientemente de las unidades, lo que necesitas es una función de contar. En tal caso la instrucción será: MsgBox "El total de artículos vendidos es :" & Application.WorksheetFunction.Count(Range("D6:D3000")) - 1 (Nota, resta uno asumiendo que en alguna parte de ese rango hay una línea de total que no debería contar. Si no la hubiera, simplemente quita el -1 de la sentencia dada) De todos modos, si realmente necesitas averiguar el contenido de la ultima celda ocupada de una columna usa esto: Fila = ActiveSheet.UsedRange.Rows.Count Total = Range("D1").Cells(Fila, 1).Value MsgBox "El total de unidades vendidas es :" & Total Desde luego, seeguimos hablando de la columna DE y que, debajo de la fila de totales -si la hubiera- no hay otros datos que hagan que la última fila ocupad sea otra... --- Tu segunda pregunta es aún más compleja. Porque un inputbox simplemente aloja en una variable un dato ingresado por teclado. No hace ninguna búsqueda y no muestra nada. Diría que la solución más simple es usar esa entrada del inputbox para que un filtro automático sólo muestre aquellos registros que coincidan con la fecha ingresada. Para esto aplica un filtro automático seleccionando la base de datos y haciendo: "Datos" | "Filtros" | "Filtro Automático" Luego inserta un modulo nuevo y copia el siguiente código de macro que filtrará tu base de acuerdo a la fecha ingresada: Sub FILTRA() Dim critdate As Variant NomHoja = "Hoja2" Sheets(NomHoja).Select If Sheets(NomHoja).AutoFilterMode = False Then Selection.AutoFilter ElseIf Sheets(NomHoja).FilterMode Then ActiveSheet.ShowAllData End If TB_fecha = InputBox("Ingrese fecha a visualizar") Select Case Application.International(xlDateOrder) Case 0 'Mes-Dia-Año (Ej: 12-24-2001) critdate = Trim("" & Format(Month(TB_fecha), "00") & "/" & Format(Day(TB_fecha), "00") & "/" & Format(Year(TB_fecha), "00")) Case 1 'Dia-Mes-Año (Ej: 24-12-2001) critdate = Trim("" & Format(Day(TB_fecha), "00") & "/" & Format(Month(TB_fecha), "00") & "/" & Format(Year(TB_fecha), "00")) critdate = Trim("" & Format(Day(TB_fecha), "00") & "/" & Format(Month(TB_fecha), "00") & "/" & Format(Right(Year(TB_fecha), 2), "00")) Case 2 'Año-Mes-Dia (Ej: 2001-12-24) critdate = Trim("" & Format(Year(TB_fecha), "0000") & "/" & Format(Month(TB_fecha), "00") & "/" & Format(Day(TB_fecha), "00")) End Select Selection.AutoFilter Field:=5, Criteria1:=critdate, Operator:=xlAnd Application.Calculate End Sub Finalmente, elige dos celdas en la parte superior del listado y coloca estas dos fórmulas: =SUBTOTALES(2,D4:D3000) para que cuente el total de artículos ingresados o esta, para que sume tales cantidades =SUBTOTALES(9,D4:D3000) Y otra igual sobre la columna de los importes para que sume los precios. =SUBTOTALES(9,F4:F3000) Espero que todo esto te sirva para resolver tu problema Un abrazo! Fernando Pd: Disculpa la demora pero estuve muy atareado y tus planteos merecían que les dedique bastante tiempo, como habrás notado.