2012-02-03 18 views
17

In che modo una cella ottiene la formula di un'altra cella come testo senza utilizzare VBA? Vedo che questa domanda è già stata posta molte volte e la risposta è sempre quella di scrivere una funzione personalizzata in VBA.Ottenere la formula di un'altra cella nella cella di destinazione

Tuttavia, ho trovato un post made in 2006 che ha affermato di aver trovato la soluzione non VBA ma il collegamento fornito in quel post è già rotto.

+1

Se stai cercando una soluzione non VBA, questa non è davvero una domanda di programmazione, vero? Dovrebbe invece essere una domanda [superuser] (http://superuser.com), penserei. –

+2

Quel post mancante sembra aver indicato un approccio usando il vecchio XLM 'GET.FORMULA()', ma se fossi disposto ad andare così lontano dovresti semplicemente usare una normale funzione VBA. –

+0

Non sono sicuro di cosa sia XLM GET.FORMULA(), ma suppongo che seguirò il metodo VBA. – S200

risposta

16

C'è un modo piacevole per farlo senza VBA. Usa macro XL4 (queste sono macro, ma non è VBA, come richiesto).

Con riferimento alla figura 1, le celle A2: A4 contengono le formule usuali.

enter image description here

  1. Andare alle formule -> Definisci nome, ho definito due intervalli denominati (vedi fig. 2), con le informazioni riportate nelle celle A6: B8.

    enter image description here

  2. Inserire nella cella B2 =FormulaAsText. Ciò recupererà la formula nella cella A2 come testo.

    Spiegazione: L'intervallo denominato FormulaAsText utilizza =GET.CELL(info_type,reference). In questo caso, ìnfo_type = 6 recupera la formula e reference = OFFSET(INDIRECT("RC",FALSE),0,-1) utilizza la cella con 0 righe e colonne -1 compensato da quello della formula viene utilizzata in

  3. copia B2 e B3 incollare in:. B4. Questo mostrerà le formule in A3: A4. La cella A4 mostra che la funzione del foglio di lavoro CELL recupera solo i valori, non le formule (a differenza di GET.CELL).

  4. Poiché FormulaAsText ottiene la formula da una cella a offset fisso (0, -1) dalla corrente, ho definito un altro intervallo FormulaAsText2, che utilizza un offset (righe cols) letti dal foglio stesso. Le celle D2: D4 contengono =FormulaAsText2. Quindi, la cella D2 mostra il contenuto della cella B3 (=OffSET(D2,1,-2)), che è FormulaAsText. le celle D3: D4 mostrano il contenuto di se stessi. Ciò aggiunge una certa flessibilità. YMMV.

PS1: L'essenza è stata presa dal http://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.html

PS2: Tim Williams menzionato in un commento "il vecchio XLM GET.FORMULA()". Questa risposta è probabilmente correlata (non la stessa, dal momento che questa utilizza GET.CELL()).

PS3: viene fornita una soluzione VBA semplice, ad es., In http://dmcritchie.mvps.org/excel/formula.htm


EDIT: A complemento this nice answer, la funzione del foglio di lavoro FormulaText è disponibile for Excel 2013 e poi.

-5

Non è possibile. Questa è probabilmente una scelta progettuale per eliminare un utente medio di Excel dall'accidentalmente ottenere qualcosa che non desiderava.

Quello che stai leggendo è corretto: scrivere una UDF è la soluzione che desideri.

+0

Grazie Issun (Okami?), Credo che VBA sia la strada da percorrere. – S200

+1

Prego (e Okami ha ragione!) ^^ – aevanko

+0

Penso che questa risposta non sia corretta, e ho pubblicato un'alternativa. –

15

=FormulaText(Reference) farà il trucco Documentation

+1

Potresti fornire un collegamento alla documentazione? –

+0

Questa è la risposta. Grazie! – Scott

+1

Non so quando hanno introdotto la funzione FormulaText, ma sembra funzionare in Excel2013. Proprio quello di cui ho bisogno ... grazie! – veljkoz

0

C'è un modo per fare questo. Nel mio esempio avevo un tavolo che mostrava una data. La data proviene dal foglio! G91. Nel mio tavolo avevo anche una colonna che mostrava il nome del foglio. Ho aggiunto altre due colonne al mio tavolo. La prima colonna aveva una colonna (Foglio! G91), che restituisce il numero 7, perché G è la settima lettera dell'alfabeto. Ho quindi convertito il numero in una lettera (G) usando un'altra tabella nella mia cartella di lavoro. Nella seconda colonna che ho aggiunto, ho creato una riga formula (Foglio! G91), che restituisce il numero 91. Nota: Riga e colonna possono apparire come formule volatili, che ricalcolano con ogni calcolo della cartella di lavoro.

Volevo un'altra colonna per mostrare il contenuto della formula della cella della data menzionata all'inizio di questo post. Ho incluso la seguente funzione di stringa (puoi anche usare CONCATENATE).

"=" & AJ9 & "!" & AM9 & AN9

Gli elementi separati da e commerciali si incastrano (vale a dire, concatenati). AJ9 nel mio esempio contiene il nome del foglio, AM9 contiene la lettera della colonna e AN9 contiene il numero di riga.

Ora ho una colonna che aggiorna dinamicamente il suo contenuto per riflettere il nome del foglio e il riferimento di cella. I risultati nella cella della mia cartella di lavoro sono

= Foglio! G91.

+0

Questo approccio non funziona per le formule in generale, tuttavia, che ritengo sia ciò che la domanda sta chiedendo. –

0

Questo suggerimento può essere utile per coloro che dopo aver recuperato un blocco di formule e averli trasportati su un nuovo foglio di calcolo, vogliono rimetterli in funzione. La funzione Excels FORMULATEXT è ottima per raccogliere le formule ma le lascia come stringhe di testo inutilizzabili. Se si desidera riprenderli come formule perfettamente funzionanti, è necessario modificarli singolarmente per rimuovere il carattere stringa, ma ecco una scorciatoia per blocchi più grandi. Raggiungi la posizione in cui hai le formule richieste come testo (in altre parole dopo aver usato FORMULATEXT - hai fatto una copia e (solo valore) incolla). Il passaggio successivo prevede l'evidenziazione di tutte le celle che si desidera convertire e quindi la navigazione nell'opzione di menu [Da testo a colonne] (barra {Dati} su Excel 2016). Puoi selezionare "Delimitato" ma nella schermata successiva assicurati di deselezionare tutti i segni che appaiono nelle tue formule. Quindi 'Finisci'. Excel dovrebbe analizzare automaticamente le celle come contenenti le formule e dovresti ora farle funzionare di nuovo.

Problemi correlati