La formula della cella di riferimento anziché il valore in Excel?


1

Diciamo che in A1 ho "= ROW ()". La cella mostra "1" poiché è la prima riga del foglio.

Ora in A2, ho messo "= A1". Sfortunatamente, questo fa riferimento al VALORE di A1, piuttosto che alla formula. Se facesse riferimento alla formula, A2 invece darebbe invece un valore '2' (che è quello che voglio).

Se poi procedo a modificare la formula in A1 successivamente, anche il valore di A2 cambierà, poiché si basa sulla formula in A1.

Come faccio a fare questo?


Copia A1 e incolla in A2. Questo copia la formula in A2. Se la formula contiene riferimenti di cella, verranno automaticamente adattati a meno che non si ancoraggi la riga e / o la colonna con $.
fixer1234

@ fixer1234: copiare semplicemente in questo modo non funziona come se si modificasse A1, quindi A2 non cambierà. Ho modificato la mia Q per chiarire.
Dan W

Sembra che tu voglia dire che A1 contiene la funzione ROW (), quindi vuoi fare riferimento in un modo dalla riga successiva che sarà interpretata come ROW (A1) +1. A2 ha bisogno di contenere la propria formula indipendente che realizza ciò che desideri. Non c'è modo di incorporare la formula A1 in ciò che fa A2. Se descrivi come vuoi usarlo, possiamo suggerire una soluzione.
fixer1234

@ fixer1234: L'ho reindirizzato un po 'e, si spera, chiarito, anche se ho pensato che fosse perfettamente chiaro prima. Puoi annullare il tuo voto ravvicinato o altrimenti raccomandare come posso renderlo ancora più chiaro se pensi davvero che sia possibile? A proposito, non voglio nulla come "ROW (A1) +1" in A2. È solo che essendo la seconda riga, prende automaticamente la funzione ROW () e la applica a quella cella, dando un valore di 2.
Dan W

Potrebbe sembrare che tu stia descrivendo una formula per A2 che è equivalente a: = Use_A1's_formula_adjusted_for_here. Excel non ha un meccanismo per utilizzare in modo dinamico la formula di un'altra cella facendo riferimento a tale cella. Ogni cella ha bisogno della propria formula (che può fare riferimento al risultato di un'altra cella). Puoi copiare / incollare la formula di un'altra cella, e puoi aggiornarla automaticamente se la formula cambia (una soluzione VBA come quella di Scarlet Manuka). Se hai una versione recente di Excel, FORMULATEXT ti darà il testo della formula in un'altra cella, anche se non puoi eseguirlo come una formula.
fixer1234

Risposte:


1

Non c'è modo di farlo in modo nativo con le funzioni del foglio di lavoro di Excel. Se hai bisogno di questa funzionalità, dovrai utilizzare VBA.

È possibile utilizzare l'evento Worksheet_Change (). Questo si attiva quando il contenuto della cella viene modificato, ma non su un semplice ricalcolo. Ha un parametro che indica le celle che sono state modificate; puoi usare questo per vedere se devi fare qualcosa. Questo codice deve andare nell'area del codice per il foglio di lavoro che stai utilizzando. (Apri VBA con Alt + F11, nel pannello di sinistra fai doppio clic sul foglio di lavoro. Dovresti vedere qualcosa come "Microsoft Visual Basic - nome del file - [ nomefoglio (Codice)] "nella barra del titolo.)

Ovviamente, aggiorna il nome e gli intervalli del foglio come richiesto nel codice sottostante.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim test As Range, src As Range, dest As Range

    Set src = Worksheets("Sheet1").Range("A1")
    Set dest = Worksheets("Sheet1").Range("A2")
    Set test = Intersect(Target, src)
    If Not (test Is Nothing) Then
        dest.Formula = src.Formula
    End If
End Sub

Il codice sopra riportato copierà la formula esattamente - se si fa riferimento alla cella F3 nella cella A1, si avrà anche un riferimento alla cella F3 nella cella A2. Se non vuoi che ciò accada, modifica la linea all'interno dell'istruzione If in dest.FormulaR1C1 = src.FormulaR1C1. Ciò modificherà opportunamente qualsiasi riferimento relativo nella tua formula.

Si può cambiare dest a un intervallo più ampio se si desidera impostare un gruppo di celle contemporaneamente basato sulla formula nella cella A1.

Una nota è che questo non ripristinerà automaticamente le formule nelle celle se cambierai quelle celle - cioè se cambi la formula in A2, questo non lo riporterà automaticamente, perché stiamo facendo solo l'aggiornamento quando la cella A1 i cambiamenti. Se vuoi proteggerti da questo, cambia la linea

Set test = Intersect(Target, src)

a

Set test = Intersect(Target, Union(src, dest))

0

Puoi ottenerlo con le tabelle (da Excel 2007: seleziona il tuo intervallo quindi: Inserisci - Tabella; la prima riga deve contenere titoli ).
Ogni volta che cambi una formula verrà aggiornata in tutta la colonna (o ti verrà chiesto se vuoi che venga aggiornato se la formula nella colonna non è la stessa prima della modifica).

Aggiornare

Qui si trova la descrizione dettagliata su come creare una colonna calcolata in una tabella.
Ora se cambi la formula in una qualsiasi delle celle verrà aggiornata l'intera colonna. (Supporto per l'ufficio)
Se questo non è il tuo caso, assicurati che "Compila le formule nelle tabelle per creare colonne calcolate" sia selezionato in File - Opzioni - Prova - scheda "Formattazione automatica durante la digitazione".


Puoi chiarire ulteriormente? Quali contenuti ho nelle celle A1 e A2?
Dan W
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.