2009-04-21 17 views
25

Detesto le funzioni di ripetizione, in particolare nelle formule di Excel. C'è un modo per evitare qualcosa del tipo:Esistono cose come variabili all'interno di una formula di Excel?

= IF (CERCA.VERT (A1, B: B, 1, 0)> 10, CERCA.VERT (A1, B: B, 1, 0) - 10, CERCA.VERT (A1, B: B, 1, 0))

[Quanto sopra è solo un semplice esempio del problema, e non una formula particolare, che sto lavorando con.]

risposta

30

È possibile definire un nome per la parte CERCA.VERT della formula.

  1. Evidenziare la cella che contiene la formula
  2. Dal menu Inserisci, andare nome, e fare clic su Definisci
  3. Immettere un nome per la variabile (ad esempio 'Valore')
  4. Nella casella Riferire A , inserire la formula CERCA.VERT: =VLOOKUP(A1,B:B, 1, 0)
  5. Fare clic su Aggiungi, e chiudere la finestra di
  6. nella formula originale, sostituire le parti VLOOKUP con il nome appena definito: =IF(Value > 10, Value - 10, Value)
  7. 012.

Passo (1) è importante: Credo che in seconda fila, si desidera utilizzare Excel VLOOKUP(A2,B:B, 1, 0), la terza fila VLOOKUP(A3,B:B, 1, 0), ecc Step (4) raggiunge questo utilizzando i riferimenti relativi (A1 e B:B), riferimenti non assoluti ($A$1 e $B:$B).

+2

Per le nuove versioni di Excel con la barra multifunzione, vai a Nastro formule -> Definisci nome. È lo stesso dopo. Inoltre, per usare il tuo nome, puoi fare "Usa in Formula", proprio sotto Definisci nome, mentre modifichi la formula, oppure inizia a digitarlo, ed Excel ti suggerirà il nome. –

+5

Si noti che ogni volta che Excel rileva un nome in una formula di Excel, valuta il nome. Sostituendo le sottoespressioni ripetute all'interno di una formula utilizzando un nome, si ottiene una formula più concisa ma non si risparmia alcun tempo di calcolo (in effetti è leggermente più lento perché Excel deve trovare la formula referto per il nome prima che possa valutarlo). –

+0

Grazie, questo è stato utile. Penso che questo sia fondamentalmente ciò che Michael stava dicendo, ma i passaggi possono essere abbreviati: 1. Fai clic con il tasto destro del mouse su una cella e fai clic su ** Definisci nome ... ** 2. Inserisci un nome e la formula a cui vuoi associarlo nome/variabile locale 3. Usa variabile –

1

due opzioni:

  • VLOOKUP funzione nella propria cella: =VLOOKUP(A1, B:B, 1, 0) (ad esempio, C1), quindi formula riferimento C1: =IF(C1 > 10, C1 - 10, C1)
  • creare un'UDF:

Function MyFunc(a1, a2, a3, a4) 
    Dim v as Variant 
    v = Application.WorksheetFunction.VLookup(a1, a2, a3, a4) 
    If v > 10 Then 
     MyFunc = v - 10 
    Else 
     MyFunc = v 
    End If 
End Function 
2

è possibile memorizzare i valori intermedi in una cella o colonna (che si può nascondere se si sceglie)

C1: = VLOOKUP(A1, B:B, 1, 0) 
D1: = IF(C1 > 10, C1 - 10, C1) 
+0

In che modo Excel distingue tra un riferimento di colonna standard e una variabile nell'esempio? – 1owk3y

0

non c'è un modo per definire un variabile nella barra della formula di Excel. Come soluzione alternativa, è possibile posizionare la funzione in un'altra cella (opzionalmente, nascondendo i contenuti o inserendoli in un foglio separato). Altrimenti potresti creare un VBA function.

0

Sì. Ma non direttamente.

modo più semplice

  • puoiaffiggere Vlookup() in una cella e utilizzare il suo indirizzo a dove richiesto. - Questo è forse l'unico modo diretto di utilizzare le variabili in Excel.

O

  • Si potrebbe definire Vlookup (riferimento) -10 come funzione involucro dall'interno VBE macro. Premere Alt + F12 e utilizzare quella funzione
3

non legati a variabili, il vostro esempio sarà anche essere risolto con MOD:

=Mod(VLOOKUP(A1, B:B, 1, 0);10) 
+2

Non proprio - sottrarre 10 è lo stesso di Mod 10 se il valore è tra 10 e 20 ... Ma idea carina. – Floris

0

so che è un po 'off-topic, ma in seguito con la soluzione presentata da Jonas Böhmer, in realtà penso che MOD è la migliore soluzione per il tuo esempio.

Se l'intenzione era di limitare il risultato a una cifra, MOD è l'approccio migliore per raggiungerlo.

ie. Supponiamo che VLOOKUP (A1, B: B, 1, 0) restituisca 23. La tua formula IF farebbe semplicemente questo calcolo: 23 - 10 e restituirà 13 come risultato.

D'altra parte, MOD (CERCA.VERT (A1, B: B, 1, 0), 10) sarebbe dividere 23 da 10 e mostra resto: 3.

Indietro all'argomento principale, quando ho bisogno di usare una formula che ripeta una parte, di solito la metto su un'altra cella e poi la nascondo come alcune persone hanno già suggerito.

1

Definire un NOME contenente la ricerca è una soluzione accurata, tuttavia, sembra sempre che il nome del foglio venga memorizzato con il riferimento della cella. Tuttavia, penso che se si cancella il nome del foglio nelle virgolette "" ma si lascia "!", Potrebbe funzionare.

Problemi correlati