
Miguel92
Alfa
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos!
Estoy realizando un archivo Excel que contiene una hoja llamada Productos y otra llamada Recetas, en Productos tengo todos los ingredientes y algunas cosas más la tabla esta conformada así, claramente los precios están desactualizados
En la hoja "Recetas" es así
Pero lo que estaría buscando es que en la columna seleccionada "Recetas D5", tenga que realizar una formula que primero compruebe si existe alguna opción seleccionada en C5 (en mi caso) y dependiendo si elige Und, Kg, Gr, Lt, Ml hará una cuenta diferente, luego tenga que buscar el producto en Productos y desde allí buscar la cantidad y precio para realizar las operaciones.
porque tenia una formula algo similar a esto, pero se ve que en algún momento lo modifique sin darme cuenta y quedo así, era mucho más largo
Lo trate de hacer con VBA , pero no me esta saliendo...
Función en VBA
Porque mi idea era usarlo así
Pero me queda así
Si traté de hacerlo con Chat GPT, pero me devuelve casi cerca lo que quiero, pero lo tengo que terminar editando y reescribiéndolo.
De todas formas les dejo el archivo para que lo vean(lo tuve que comprimir ya que no me deja subir el Costo2.xlsm)... Y si conocen algún tutorial o algo similar para sacar el costo del producto, díganme y lo busco, así lo hago. Cabe recalcar que no soy experto y tampoco conozco mucho Excel...
El archivo esta habilitado para macros, ya que tiene un formulario para agregar un nuevo producto, y un botón para agregar una nueva receta.
Desde ya muchas gracias y espero haberme explicado más o menos lo que estoy buscando.
Estoy realizando un archivo Excel que contiene una hoja llamada Productos y otra llamada Recetas, en Productos tengo todos los ingredientes y algunas cosas más la tabla esta conformada así, claramente los precios están desactualizados
En la hoja "Recetas" es así
Pero lo que estaría buscando es que en la columna seleccionada "Recetas D5", tenga que realizar una formula que primero compruebe si existe alguna opción seleccionada en C5 (en mi caso) y dependiendo si elige Und, Kg, Gr, Lt, Ml hará una cuenta diferente, luego tenga que buscar el producto en Productos y desde allí buscar la cantidad y precio para realizar las operaciones.
porque tenia una formula algo similar a esto, pero se ve que en algún momento lo modifique sin darme cuenta y quedo así, era mucho más largo
Insertar CODE, HTML o PHP:
=SI(D7="";"";(SI(D7="Und";((BUSCAR(B7;Tabla1[#Todo];Tabla1[[#Todo];[Columna4]])/BUSCAR(B7;Tabla1[#Todo];Tabla1[[#Todo];[Columna2]])*C7));(BUSCAR(B7;Tabla1[#Todo];Tabla1[[#Todo];[Columna4]])/1000)*C7)))
Lo trate de hacer con VBA , pero no me esta saliendo...
Función en VBA
Insertar CODE, HTML o PHP:
Function CalcularCosto(celdaProducto As Range, celdaCantidad As Range, celdaUnidad As Range) As Variant
Dim ws As Worksheet
Dim rng As Range
Dim precioUnitario As Double
Dim cantidadEnTabla As Double
Dim precioTotal As Double
Dim cantidad As Double
Dim unidad As String
Dim producto As String
Set ws = ThisWorkbook.Sheets("Productos")
' Verificar si los parámetros están vacíos
If IsEmpty(celdaProducto.Value) Or IsEmpty(celdaCantidad.Value) Or IsEmpty(celdaUnidad.Value) Then
CalcularCosto = ""
Exit Function
End If
cantidad = celdaCantidad.Value
unidad = LCase(celdaUnidad.Value)
producto = celdaProducto.Value
' Definir el rango de búsqueda
Set rng = ws.Range("A3:D" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
' Obtener el precio y la cantidad en la tabla
On Error Resume Next
precioUnitario = Application.WorksheetFunction.VLookup(producto, rng, 4, False)
cantidadEnTabla = Application.WorksheetFunction.VLookup(producto, rng, 2, False)
unidadProducto = Application.WorksheetFunction.VLookup(producto, rng, 3, False)
On Error GoTo 0
' Verificar si el producto no fue encontrado
If IsError(precioUnitario) Or IsError(cantidadEnTabla) Then
CalcularCosto = "Unidad no reconocida"
Exit Function
End If
' Cálculo del costo basado en la unidad
Select Case LCase(unidad)
Case "und"
' Cálculo directo si la unidad es "und"
precioTotal = (precioUnitario / cantidad) * cantidadEnTabla
Case "ml"
' Si el precio es por 1 litro, convertimos los ml a litros y calculamos el costo
precioTotal = (precioUnitario / (cantidadEnTabla * 1000)) * cantidad
Case "lt"
' Si el precio ya está por litro, el cálculo es directo
precioTotal = (precioUnitario / cantidadEnTabla) * cantidad
Case "gr"
' Verificar si el precio en la tabla está en kilogramos
If LCase(unidadProducto) = "kg" Then
' Convertimos la cantidad de la tabla a gramos
precioTotal = (precioUnitario / (cantidadEnTabla * 1000)) * cantidad
Else
' Si ya está en gramos, no hacemos la conversión
precioTotal = (precioUnitario / cantidadEnTabla) * cantidad
End If
Case "kg"
' Cálculo directo si ya está en kilogramos
precioTotal = (precioUnitario / cantidadEnTabla) * cantidad
Case Else
' Si la unidad no es reconocida, devolver un valor vacío o un guion para indicar que no se puede calcular
CalcularCosto = ""
Exit Function
End Select
CalcularCosto = precioTotal
End Function
Pero me queda así
Si traté de hacerlo con Chat GPT, pero me devuelve casi cerca lo que quiero, pero lo tengo que terminar editando y reescribiéndolo.
De todas formas les dejo el archivo para que lo vean(lo tuve que comprimir ya que no me deja subir el Costo2.xlsm)... Y si conocen algún tutorial o algo similar para sacar el costo del producto, díganme y lo busco, así lo hago. Cabe recalcar que no soy experto y tampoco conozco mucho Excel...
El archivo esta habilitado para macros, ya que tiene un formulario para agregar un nuevo producto, y un botón para agregar una nueva receta.
Desde ya muchas gracias y espero haberme explicado más o menos lo que estoy buscando.
Adjuntos
Última edición: