¿Cómo saber si una celda de Excel tiene una fórmula o está codificada?


17

¿Alguien tiene una sugerencia especial (que no sea VBA) para decir sistemáticamente si una celda tiene un valor codificado o es una fórmula derivada?

Estoy tratando con algunos datos que tienen subtotales desordenados integrados y estoy tratando de ver si puedo separar las líneas sin procesar.


¿Ayuda el modo "Mostrar fórmulas" (Ctrl + `)?
sblair

Lo hace, pero no lo consideraría "sistemático": requiere que elimine a mano las líneas subtotales.
YGA

Respuestas:


8

Usar formato condicional. Elija la opción "Usar una fórmula para determinar qué celdas formatear" y escriba "= NO (Cellhasformula)". Esto formateará todo lo que esté codificado.


8
Así que esta no fue la respuesta completa, pero en realidad es bastante elegante. La respuesta completa está en: j-walk.com/ss/excel/usertips/tip045.htm La clave es que primero debe crear un nombre (a través de Fórmulas -> Administrador de nombres) llamado "Cellhasformula" que "se refiere a" fórmula mística = GET.CELL (48, INDIRECTO ("rc", FALSO)). Como dice el enlace, la fórmula usa GET.CELL, que está en el lenguaje de macro XLM (predecesor de VBA) y no se puede usar directamente en una hoja de trabajo. El argumento "48" hace que GET.CELL devuelva 'True' si la celda tiene una fórmula. El INDIRECTO básicamente crea una referencia a cada celda en el rango seleccionado.
YGA

He editado la respuesta para incluir esos detalles. Gracias @YGA
Alain

15

Seleccione las celdas en cuestión, presione Ctrl+ Gy luego seleccione Specialpara obtener el siguiente cuadro de diálogo:

Ir al cuadro de diálogo especial

Luego especifique el tipo de celdas que desea y haga clic OKy solo esos tipos de celdas permanecerán seleccionados.


8

A partir de Excel 2013, puede hacer:

=ISFORMULA(reference)

Aquí la documentación completa


3
=iferror(Formulatext(cell),"Not Formula")

o para mostrar solo las fórmulas:

=iferror(Formulatext(cell),"")

Para cualquiera que use LibreOffice Calc en lugar de Excel, reemplace formulatext () con formula ().
Fixer1234

2

Otros dos métodos son

  1. ¡Usa una herramienta de mapeo como mi Mappit! complemento (que se puede ejecutar como un complemento de confianza)
  2. Puede usar la muy útil solución XLM / Range Names que ofrece una coloración en tiempo real de celdas codificadas, fórmulas, celdas vinculadas, etc. Esto no requiere ningún conocimiento de programación para implementar a diferencia de VBA


1

Si desea almacenar el archivo Excel en un formato de libro libre de macros, debe evitar tanto VBA como macros (es decir, los enfoques XL4 / XLM sugeridos en otras respuestas). En esta respuesta, asumí un archivo Excel libre de macros.

Si usa MS-Excel 2013, puede usar:

=ISFORMULA(reference)

Si usa versiones anteriores de MS-Excel (por ejemplo, 2010, 2007), no existe una función verdadera para determinar si una celda contiene una fórmula. Sin embargo, puede aproximarlo usando:

=IF(OR(ISBLANK(reference);CELL("prefix";reference)<>"");FALSE;IF(CELL("type";reference)="l";TRUE;"MAYBE"))

La función anterior devuelve:

  • VERDADERO para las celdas que contienen una fórmula que da como resultado datos de cadena.
  • FALSO para celdas que contienen un literal de cadena o está en blanco.
  • "MAYBE" para celdas que contienen un booleano, un número o una fecha, sin importar si este valor es literal o el resultado de una fórmula.

1

Mucho más allá de la fecha original, pero si es de utilidad para alguien, logré evitar esto seleccionando el rango de celdas, luego usando Reemplazar (Ctrl + H), configurándolo en 'Buscar en' "Fórmulas" y reemplazar un igual =con un apóstrofe igual'=

Esto llevó a cabo todas las fórmulas, pero, obviamente, sería también convertir las cosas como si $ C $ 1 contenía =if($A1=$B1,"Match","Different")a'=if($A1'=$B1,"Match","Different")

Observe que A1'=B1en el medio de la fórmula puede ser problemático, pero aún así significa que puede ver las fórmulas, aunque no de manera pragmática. Podría usar la función SUSTITUIR para volver a cambiarlo, por lo que $ D $ 1 contiene =SUBSTITUTE(C1,"'=","="), luego simplemente copie en el Bloc de notas y péguelo nuevamente en $ E $ 1

La otra forma sería 'mostrar fórmulas', pero eso mostraría fórmulas para cada celda, no solo un rango seleccionado.


1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function

¿Puedes agregar una breve explicación para decirnos qué está pasando aquí? :)
bertieb

Simplemente péguelo en un módulo VBA, aunque me doy cuenta de que ahora el OP no quería VBA. Pero de todos modos, por eso lo uso.
George Skelton el

Eso no es realmente una explicación
bertieb
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.