2013-07-25 13 views
10

Ho numerose celle dappertutto su un foglio di lavoro che assomiglia a =((E9-E8)/E8). Voglio utilizzare i primi due valori per entrare in questa nuova formula, (EXP((LN(E9/E8)/14.32))-1).Trova e sostituisci excel semplice per le formule

Come posso modificarli tutti alla nuova formula in un colpo solo?

+0

* dappertutto * - quindi non una singola colonna o riga? Circa quanti è * tutto *? – pnuts

+0

Tutto il posto significa che c'erano tre colonne diverse in cui la formula si sarebbe verificata per un totale di 31 volte. Ho finito per passare a R1C1 poiché la struttura era la stessa in ogni caso. Vedi la mia risposta. – Tomulent

+0

Passare al formato RC è la strada da percorrere per questo su larga scala ma non ne vale la pena (come sospettavo) su piccola scala. Intendiamoci, considererei 31 su piccola scala! Dato per esempio, le altre risposte, penso che questa sia una domanda che merita un buon punteggio, quindi il mio +1, anche se questo lo restituisce solo a 0, ho paura. – pnuts

risposta

12

Se le formule sono identiche, è possibile utilizzare Trova e sostituisci con Match entire cell contents selezionato e Look in: Formulas. Seleziona l'intervallo, vai su Trova e sostituisci, crea le tue voci e sostituisci Tutto.

enter image description here

O vuoi dire che ci sono diverse formule con questa stessa forma, ma diversi riferimenti di cella? Se è così, allora un modo per andare è una corrispondenza regolare e sostituire. Le espressioni regolari non sono incorporate in Excel (o VBA), ma sono accessibili tramite la libreria VBScript delle espressioni regolari di Microsoft.

La seguente funzione fornisce la funzionalità di corrispondenza e sostituzione necessaria. Può essere utilizzato in una subroutine che identifica celle con formule nell'intervallo specificato e utilizza le formule come input per la funzione. Per le stringhe di formule che corrispondono al modello che stai cercando, la funzione produrrà la formula di sostituzione, che potrebbe quindi essere riscritta nel foglio di lavoro.

Function RegexFormulaReplace(formula As String) 
    Dim regex As New RegExp 
    regex.Pattern = "=\(\(([A-Z]+\d+)-([A-Z]+\d+)\)/([A-Z]+\d+)\)" 
' Test if a match is found 
    If regex.Test(formula) = True Then 
     RegexFormulaReplace = regex.Replace(formula, "=(EXP((LN($1/$2)/14.32))-1") 
    Else 
     RegexFormulaReplace = CVErr(xlErrValue) 
    End If 
    Set regex = Nothing 
End Function 

Affinché la funzione di lavorare, si avrebbe bisogno di aggiungere un riferimento alla libreria Microsoft VBScript Regular Expressions 5.5. Dalla scheda Developer della barra multifunzione principale, selezionare VBA e quindi References dalla barra degli strumenti principale. Scorri verso il basso per trovare il riferimento alla libreria e seleziona la casella accanto ad essa.

+0

Sì, esistono diverse formule con la stessa forma ma riferimenti di celle diversi. – Tomulent

1

Utilizzare il comando trova e sostituisci accessibile tramite ctrl + h, assicurarsi di cercare tra le funzioni delle celle. È quindi possibile utilizzare i caratteri jolly per soddisfare eventuali scostamenti della formula. * per # caratteri jolly,? per i caratteri jolly del carattere e ~? o ~ * da cercare? o *.

+0

Sono nuovo di questo quindi non sono abbastanza sicuro di come funzioni. Come dovrei rappresentare le formule che ho inserito nella mia domanda usando i caratteri jolly? Ancora una volta, ho 30 formule che sembrano tutte con riferimenti diversi che voglio cambiare per assomigliare alla seconda formula. – Tomulent

+0

La modifica di tutti i riferimenti di cella ai caratteri jolly sarebbe simile alla seguente; Trova: = ((? * -? *) /? *) Sostituisci: = (EXP ((LN (? * /? *)/14.32)) - 1) Se si richiedono più caratteri jolly, spero che questo serva come buon esempio per te. – Mason

+0

Sfortunatamente non ha funzionato. Fortunatamente, sono stato in grado di risolvere il problema in un modo diverso. Vedi la mia risposta se sei curioso – Tomulent

6

Si scopre che la soluzione era passare a R1C1 Cell Reference. Il mio foglio di lavoro era strutturato in modo tale che ogni formula avesse la stessa struttura solo riferimenti diversi. Fortuna però, erano sempre posizionato allo stesso modo

=((E9-E8)/E8) 

divenne

=((R[-1]C-R[-2]C)/R[-2]C) 

e

(EXP((LN(E9/E8)/14.32))-1) 

divenne

=(EXP((LN(R[-1]C/R[-2]C)/14.32))-1) 

In R1C1 riferimento, ogni formula era identico così la ricerca e la risposta il pizzo non richiedeva caratteri jolly. Grazie a coloro che hanno risposto!

1

Il modo in cui in genere gestisco questo è con un secondo software. Per Windows uso Notepad ++, per OS X uso Sublime Text 2.

  1. In Excel, ha colpito Control + ~ (OS X)
  2. Excel convertirà tutti i valori per la loro versione formula
  3. CMD + A (faccio di solito due volte) per selezionare l'intero foglio di
  4. Copiare tutti i contenuti e incollarli in Notepad ++ Testo/Sublime 2
  5. Trova/Sostituisci i contenuti formula qui
  6. Copiare il contenuto e incollare di nuovo in Excel, confermando gli eventuali problemi su differenze di dimensioni delle cellule
  7. Controllo + ~ per tornare alla modalità valori
Problemi correlati