.png)
Me gustaría agregar los componentes de una fórmula en un rango. Tenemos una sección que muestra los flujos de efectivo netos para elementos específicos y varios elementos específicos.
Por ejemplo, =8+9-5
muestra "12" en varias celdas. Si los valores no se computaran a nivel de celda, sería fácil usar una SUMIF
fórmula para sumar solo las celdas positivas y negativas, pero como se computa a nivel de celda, estoy tratando de profundizar en los valores subyacentes y usar el equivalente a la SUMIF
fórmula pero para todos los componentes subyacentes.
Para el ejemplo anterior, estoy intentando obtener una celda de resumen para el rango que diga "+17" y una celda que muestre "-5".
¿Cómo puedo hacer esto?
Respuesta1
La cuestión primordial es cómo acceder a la cadena de fórmula de otra celda de la hoja de trabajo. No existe ninguna función de hoja de trabajo que pueda hacer esto. Entonces, tendrás que hacer una de dos cosas para comenzar: 1) usar buscar y reemplazar para cambiar el contenido de las celdas para que ya no contengan fórmulas sino cadenas, o 2) usar VBA para acceder a la cadena de fórmulas de las celdas.
(1) se puede lograr seleccionando las celdas que desea manipular y luego presionando Ctrl+ Hpara abrir el cuadro de diálogo Reemplazar. Busque =
(asumiendo que las únicas fórmulas que le interesan son como su ejemplo y no incluyen signos iguales posteriores) y reemplácelas con nada. Esto cambiará una celda con una fórmula =8+9-5
que muestra el valor 12 a una celda que muestra la cadena 8+9-5
.
(2) se puede lograr accediendo a la propiedad de la celda .Formula
. Por ejemplo, para obtener la fórmula de la celda A1, usaría una UDF muy simple como esta:
Public Function GetFormula(r as Range) as String
GetFormula = r.Formula
End Function
Una vez que tenga estas cadenas, por cualquiera de los métodos, tendrá que ser inteligente con las funciones de manipulación de cadenas, por ejemplo, FIND
, LEN
y VALUE
, para extraer los valores que desea. Dado que hacer esto sería una pérdida de tiempo para usted y para mí, me abstendré de hacerlo aquí.
Respuesta2
Agregue una hoja a su libro de trabajo; llamémoslo "Configuración".
En A1 poner 8
, en A2 poner 9
, en A3 poner -5
. Copie tantas columnas como exista esa fórmula con constantes en las columnas de su hoja original. (Dependiendo de cómo esté organizado el rango, es posible que necesite que la hoja de configuración use A1, B1, C1 y copie en su lugar. La idea es crear un rango que coincida con la forma del rango en la hoja original).
En la hoja original reemplace todas las fórmulas =8+9-5
con =Setup!A1+Setup!A2+Setup!A3
. Esto se puede hacer con una operación Buscar y reemplazar que evalúe las fórmulas.
Ahora puede crear fórmulas condicionales en la hoja de Configuración en lugar de los valores codificados en la hoja original.
=sumif(Setup!A1:A3,">0")
=sumif(Setup!A1:A3,"<0")