2009-10-12 9 views
0

Je vais simplifier par exemple bienEn utilisant une formule d'une autre colonne dans Excel

J'ai une formule dans la colonne B qui est Ax + 2,

par exemple en B1, c'est A1 + 2 en B2, c'est A2 + 2

Je veux faire une formule dans la colonne Y qui reflète la formule B dans tous les cas, mais remplace A dans la formule par un X.

par exemple dans Y1, c'est X1 + 2 dans Y2, c'est X2 + 2

Peu importe ce qu'il advient de la formule dans la colonne B, je veux que la formule dans Y reflète ces changements. En fait, si je pouvais faire quelque chose comme = B1.formula.replace ("A", "X") alors cela ferait l'affaire. Cela peut-il être fait dans la barre de formule en haut ou devra-t-il être fait via une macro?

Merci

Répondre

1

Voici la solution

Sub Button1_Click() Dim s As String

de = Range ("b2"). Formule

res Dim As String res = REPLACE (le s, "A", "x")

MsgBox res

End Sub

+0

Merci, j'ai commencé à descendre cette route, mais ensuite remarqué la réponse ci-dessus qui me convient mieux car il se produira chaque fois que j'ouvre la feuille – Graeme

+0

aussi essayer cet événement -> Worksheet_Calculate() –

+0

Encore mieux merci! Connaissez-vous la réponse à ma question ci-dessus? Je suis capable de répliquer automatiquement la formule d'une colonne à l'autre mais pour remplacer l'une des références de colonne dans la formule par une autre, comment faire? Est-ce que je dois juste faire une boucle pour les lignes en les remplaçant ou y a-t-il un moyen de faire cela sur une gamme? Merci – Graeme

1

Sélectionnez B, copiez la colonne, sélectionnez Y et "Collage spécial" formule le choix ne doit faire le travail

Suite à votre commentaire:

Private Sub Workbook_Open() 
    Range("Y:Y").FormulaR1C1 = Range("B:B").FormulaR1C1 
End Sub 

fera le travail (macro à mettre dans ThisWorkbook)

Après votre deuxième commentaire:

Sub Workbook_Open() 
    On Error GoTo errLbl 
    xlCalc = Application.Calculation 
    Application.Calculation = xlCalculationManual ' stop calculation ' 
    Application.ScreenUpdating = False ' disable screen update ' 

    For Each c In Range("B:B") 
     Range("Y" & c.Row).Formula = Replace(c.Formula, "A", "D") 
     If c.Formula = vbNullString Then Exit For ' stop if "B" has no formula ' 
    Next 

errLbl:  
    Application.ScreenUpdating = True ' enable screen update ' 
    Application.Calculation = xlCalc ' enable calculation back to where it was ' 
End Sub 
+0

Merci, c'est une bonne solution mais cela voudrait dire qu'une fois la copie faite, il n'y a plus de référence à la formule originale, donc si cela change, alors la formule de la colonne Y ne reflétera pas le changement. Est-il possible de référencer dynamiquement la formule dans la colonne B? – Graeme

+0

Oui la méthode de copie est un one shot, j'ai édité pour ajouter une manière dynamique. –

+0

C'est une bonne idée de le faire dans le cahier d'exercices - comment pourrais-je remplacer la formule? Quand j'ai fait le code ci-dessus, la formule est devenue traduite dans une autre colonne et je voudrais donc changer la colonne Q pour qu'elle soit la colonne X. Peut-on utiliser Remplacer pour se référer à Plages? – Graeme

Questions connexes