(Microsoft Excel) Cómo actualizar celda X con el valor de celda Y, si Y es mayor o igual a X

Necesito ayuda debido a un problema con una tabla en Excel.

Tengo un valor el cual aumenta o disminuye dependiendo de valores en otra tabla. Existe otro que registra cuál es el total que hubo máximo la última vez. En otras palabras, en una celda está la capacidad de algo y en otra está el stock actual. La capacidad, sin embrago, no es estática, y debe aumentar cuando el stock actual la supera.

Lo que quiero es actualizar la celda "capacidad" con el valor de la celda "stock" cuando la celda "stock" sea mayor o igual a "capacidad", ya que al hacerlo con una fórmula SI(), me devuelve que tengo una referencia circular.

1 respuesta

Respuesta

Te explico porque la referencia circular: Si evalúas un valor “El stock” y le dices a Excel que tome este valor solo si es mayor que el de capacidad. Todo va bien.

Pero lo que no puedes decirle a Excel es que en una función almacene el histórico de los valores de Stock a menos que lo hagas tu manual mente o por medio de una macro

No sé si este sea el método más ortodoxo, pero solo te puedo decir que a base de funciones, es muy complejo, te tocaría crear rangos dinámicos y además un esquema bastante complejo, pero he aquí una forma sencilla que encontré.

  1. Debes programar una macro en la hoja en cuestión, este es el código:

Private Sub Worksheet_Change(ByVal Target As Range)

If ActiveSheet.Range("D2").Value > Range("C2").Value Then

ActiveSheet.Range("C2").Value = Range("D2").Value

End If

End Sub

____________________________________________________________________________

Explico el código:

Private Sub Worksheet_Change(ByVal Target As Range)

Para que se ejecute la siguiente parte del código cuando cambie algún valor del Stock dentro de esta hoja.

If ActiveSheet.Range("D2").Value > Range("C2").Value Then

D2 es el valor del Stock y C2 el valor de capacidad, debes remplazar con las celdas correspondientes. Y la macro evaluara si stock es mayor que la capacidad, si no es mayor, no hará nada.

ActiveSheet.Range("C2").Value = Range("D2").Value

Pero si es mayor la macro le asignara a la capacidad el valor de la Stock,

En pocas palabras cada que Stock supere el valor que tiene capacidad en ese preciso instante la macro les estará reasignando a capacidad el nuevo mayor valor que tiene la Stock, solo que sin referencias circulares ya que este valor se pondrá dígito pero si este disminuye no pasara nada.

No sé si he sido claro pero espero que te sirva.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas