Come sapere se una cella di Excel ha una formula o è hardcoded?


17

Qualcuno ha un suggerimento speciale (preferibilmente non VBA) per dire sistematicamente se una cella ha un valore hardcoded o è una formula derivata?

Ho a che fare con alcuni dati che hanno al suo interno subtotali disordinati e sto cercando di vedere se riesco a separare le righe non elaborate.


La modalità "Mostra formule" (Ctrl + `) aiuta?
sblair,

Lo fa, ma non lo considero "sistematico" - mi richiede di spazzare via le linee del totale parziale.
YGA

Risposte:


8

Usa la formattazione condizionale. Scegli l'opzione "Usa una formula per determinare quali celle formattare" e digita "= NOT (Cellhasformula)". Questo formatterà tutto ciò che è hardcoded.


8
Quindi questa non è stata la risposta completa, ma in realtà è abbastanza elegante. La risposta completa è su: j-walk.com/ss/excel/usertips/tip045.htm La chiave è che devi prima creare un nome (tramite Formule -> Gestione nomi) chiamato "Cellhasformula" che "si riferisce a" il formula mistica = GET.CELL (48, INDIRECT ("rc", FALSE)). Come dice il link, la formula utilizza GET.CELL, che è nel linguaggio macro XLM (predecessore di VBA) e non può essere utilizzata direttamente in un foglio di lavoro. L'arg "48" fa in modo che GET.CELL restituisca "True" se la cella ha una formula. INDIRECT fondamentalmente crea un riferimento per ogni cella nell'intervallo selezionato.
YGA

Ho modificato la risposta per includere quei dettagli. Grazie @YGA
Alain,

15

Seleziona le celle in questione, premi Ctrl+ Ge quindi seleziona Specialper visualizzare la seguente finestra di dialogo:

Vai alla finestra di dialogo speciale

Quindi specifica il tipo di celle che desideri e fai clic OKe rimarranno selezionati solo quei tipi di celle.


8

A partire da Excel 2013, puoi fare:

=ISFORMULA(reference)

Ecco la documentazione completa


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

o per mostrare solo le formule:

=iferror(Formulatext(cell),"")

Per chiunque usi LibreOffice Calc invece di Excel, sostituisci formulatext () con formula ().
fixer1234

2

Altri due metodi sono

  1. Usa uno strumento di mappatura come il mio Mappit! componente aggiuntivo (che può essere eseguito come componente aggiuntivo attendibile)
  2. Puoi usare l'utilissima soluzione XLM / Range Names che offre una colorazione in tempo reale di celle hardcoded, formule, celle collegate ecc. Ciò non richiede alcuna conoscenza di programmazione per la distribuzione a differenza di VBA


1

Se si desidera archiviare il file Excel in un formato di cartella di lavoro privo di macro, è necessario evitare sia VBA che macro (ovvero gli approcci XL4 / XLM suggeriti in altre risposte). In questa risposta, ho ipotizzato un file Excel privo di macro.

Se si utilizza MS-Excel 2013, è possibile utilizzare:

=ISFORMULA(reference)

Se usi versioni precedenti di MS-Excel (ad es. 2010, 2007), non esiste una vera funzione per determinare se una cella contiene una formula. Tuttavia, puoi approssimarlo usando:

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

La funzione sopra restituisce:

  • VERO per celle contenenti una formula che risulta in dati String.
  • FALSO per le celle che contengono una stringa letterale o è vuota.
  • "FORSE" per celle contenenti un valore booleano, un numero o una data, indipendentemente dal fatto che questo valore sia letterale o il risultato di una formula.

1

Ben oltre la data originale, ma se è utile a chiunque, sono riuscito a aggirare questo selezionando l'intervallo di celle, quindi usando Sostituisci (Ctrl + H), impostandolo su 'Cerca in' "Formule" e sostituendo un uguale =con un apostrofo-uguale'=

Questo ha portato fuori tutte le formule, ma ovviamente sarebbe anche convertire le cose come se $ C $ 1 ha contenuto =if($A1=$B1,"Match","Different")a'=if($A1'=$B1,"Match","Different")

Nota che A1'=B1nel mezzo della formula può essere problematico, ma significa comunque che puoi vedere le formule, anche se in modo non pragmatico. Potrebbe usare la funzione SOSTITUISCI per cambiarlo indietro, quindi contiene $ D $ 1 =SUBSTITUTE(C1,"'=","="), quindi basta copiarlo sul Blocco note e incollarlo nuovamente in $ E $ 1

L'altro modo sarebbe "mostrare le formule" ma ciò mostrerebbe le formule per ogni cella, non solo un intervallo selezionato.


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

Puoi aggiungere una breve spiegazione per dirci cosa sta succedendo qui? :)
bertieb

Inseriscilo in un modulo VBA, anche se ora mi rendo conto che l'OP non voleva VBA. Ma comunque, è per questo che lo uso.
George Skelton,

Non è proprio una spiegazione
bertieb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.