Dejar un valor de celda sin cambios si una condición es falsa (Microsoft Excel)
Mientras usa la función SI, Vineet quiere retener el valor anterior en la celda si la condición es falsa. En otras palabras, el valor en una celda donde se usa la función SI debe cambiar solo si la condición que está probando la función SI es verdadera. Sin embargo, de forma predeterminada, la función SI hace que el valor sea 0 si la condición es Falsa.
La función IF puede tomar hasta tres parámetros. El primer parámetro es la comparación que se va a hacer, el segundo parámetro es lo que se debe devolver si la comparación es verdadera y el tercero es lo que se debe devolver si la comparación es falsa. Es posible omitir el último parámetro, pero si lo hace, Excel devolverá el valor 0 si la comparación es falsa. (Esto es lo que Vineet está viendo devuelto por su uso de la función IF.)
La solución obvia, entonces, es asegurarse de proporcionar a la función SI algo que deba devolverse cuando la comparación sea falsa. Por ejemplo, digamos que su fórmula está en la celda B1 y está comparando algo en la celda A1. La fórmula que usa puede verse así:
=IF(A1<10,"under ten",B1)
Tenga en cuenta que las palabras «menos de diez» se devuelven si el valor en A1 es menor que 10. Si no se cumple esta condición, se devuelve el valor en B1.
Dado que esta fórmula está en la celda B1, esto significa que el valor anterior en la celda se devuelve si la condición es falsa.
También significa que la fórmula contiene una referencia circular. Para que las referencias circulares funcionen correctamente, debe informar a Excel que está bien que aparezcan en su hoja de trabajo. Elija Herramientas | Opciones | Pestaña Cálculo y asegúrese de que la casilla de verificación Iteración esté seleccionada. Excel permitirá ahora la referencia circular sin quejas.
Si no desea permitir una referencia circular en su hoja de trabajo, entonces el único recurso es crear una macro que actualice el valor en la celda B1 según los cambios en la celda A1:
Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Range) ' See if the change is related to our cell If Not (Application.Intersect(Target, Range("A1")) _ Is Nothing) Then If Range("A1") < 10 Then Range("B1") = "under ten" End If End If End Sub
Esta macro simple, cuando se agrega al módulo ThisWorkbook, se ejecuta cada vez que hay un cambio en el libro. Si se cambia el valor de la celda A1 (y solo esa celda), entonces se verifica el valor para ver si es menor que 10. Si es así, entonces se cambia el valor en la celda B1. Si no es así, el valor en la celda B1 se deja solo.
Hay un «problema» que debe tener en cuenta con cualquiera de los enfoques discutidos hasta ahora, fórmula o macro. Si el valor en la celda A1 es (digamos) 15, entonces la celda B1 contendrá lo que había antes, sea lo que sea. Si cambia el valor en la celda A1 a (digamos) 7, entonces B1 cambiará a «menos de diez». Eso está bien, pero a partir de ese momento, la celda B1 nunca parecerá cambiar. ¿Por qué? Porque si luego cambia la celda A1 a un valor mayor que 10, la celda B1 contendrá (como se acaba de explicar) lo que había antes. Y, como ahora comprenderá, el valor que había antes es el resultado del resultado verdadero anterior, que era «menos de diez». Así, verdadero o falso, la fórmula o macro a partir de este punto muestra el texto «menos de diez».
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (8260) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:
link: / excelribbon-Leaving_a_Cell_Value_Unchanged_If_a_Condition_Is_False [Dejar un valor de celda sin cambios si una condición es falsa]
.