• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Formule 1 keer uitrekenen en vervangen door waarde

Status
Niet open voor verdere reacties.

Peenvogel

Gebruiker
Lid geworden
5 mei 2015
Berichten
129
Goedemorgen.

Is het mogelijk om een formule 1 keer te laten uitrekenen en daarna automatisch te vervangen door de uitgerekende waarde?
In het bijgevoegde voorbeeldbestand wordt op 5 verschillende tabbladen 1 van de cellen B2 gevuld met een getal.

Er wordt altijd maar 1 keer een cel B2 gevuld, alleen weet ik van te voren niet welke B2 cel gevuld wordt.

Op tabblad 6 worden 3 kolommen gebruikt en bv 6 rijen.

In cel A1 bv A die in cel B1 de waarde G via vert.zoeken op tabblad 7 oplevert.
In een van de cellen B2 is een keer 5 ingevuld. Ik heb in C1 =som(Blad1!B2;Blad2!B2 etc staan, dus de som wordt 5.
Als in het record daaronder in cel A2 B wordt ingevuld levert dat H op in B2,
en als in 1 van de cellen B2 van de verschillende tabbladen een keer 3 wordt ingevuld,
levert dat de som 3 op.
Hoe krijg ik voor elkaar dat de formule in cel C1 nu niet opnieuw wordt berekend?
A in A1 leverde immers in B1 G op en via som(blad1!B2;Blad2!B2 etc de waarde 5 op.
 

Bijlagen

  • Test voor Forum.xlsm
    12,4 KB · Weergaven: 83
Hoi,
Hoe krijg ik voor elkaar dat de formule in cel C1 nu niet opnieuw wordt berekend?
Ga in C1 staan druk op F2 daarna op F9 en enter.
Is dit voldoende?
 
Na de eerste berekening leverde de formule = som(Blad1!B2;Blad2!B2 etc in C1 5 op.
Als er nu voor de tweede maal , als intussen de waarden in de cellen B2 op de
verschillende tabbladen op 0 gezet zijn, er bv in een ander cel B2 van 1 van de 5 tabbladen
7 wordt ingevuld, wordt de waarde in zowel C1 als C2 7, terwijl ik juist de 5 in C1 wil bewaren.
Dat bedoel ik met de formule 1 keer uitrekenen en dan de formule vervangen door de waarde,
zodat er in de gebruikte cel niet opnieuw wordt uitgerekend, omdat er nu een waarde staat en
geen formule meer.
 
Ja, nu goed uitgevoerd en dat werkt inderdaad.
Is zoiets te automatiseren?
Ik dacht aan iets met een private sub en een Change event misschien?
Ik heb nu een voorbeeld met 2 records, maar in de werkelijke situatie zal het om tientallen
records gaan.
 
Laatst bewerkt:
Gebeurt de berekening altijd als er in kolom A iets veranderd?
 
Inderdaad. Als er in Range("A:A") een cel gevuld wordt, gaat hij de bijbehorende waarde opzoeken,
in de daarnaast liggende cel in ("B:B") invullen en dan zou pas eigenlijk de bijbehorende ingevulde
waarde uit 1 van de B2 Cellen op 1 van de 5 tabbladen in de corresponderende Range("C:C") ingevuld
moeten worden. Ik heb dat proberen op te lossen door alle 5 cellen B2 van elk tabblad te nemen.
Dat wordt dus 4 keer 0 en 1 keer de ingevulde waarde.
Idealiter zou er dus pas wat in de kolom C kolom de waarde moeten komen te staan als in de A kolom (en dus ook de B kolom)
iets staat.
 
Laatst bewerkt:
Test dit eens
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
Cells(Target.Row, 3).Value = "=IF(RC[-2]="""","""",SUM(Blad1!R2C2,Blad2!R2C2,Blad3!R2C2,Blad4!R2C2,Blad5!R2C2))"
Cells(Target.Row, 3).Value = Cells(Target.Row, 3).Value
End If
End Sub
 
Ik heb kolom A leeggemaakt en ben weer in A1 begonnen.
In A1 staat A, in B1 komt dan G maar in C1 niet de 3 die ik in Blad1!B2 heb ingevuld.
Ik had inderdaad gehoopt dat zo`n soort code zou werken.
 
Bij mij werkt het, heb je de code onder blad 6 gezet?
 
Nu wel :D ! Ik ga weer testen.

Briljant Jack! Ik kan weer verder :D.
 
Laatst bewerkt:
Waarom een formule in kolom c als het zonder kan.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
  If .Column = 1 Then .Offset(, 2).Value = IIf(IsEmpty(.Offset(, 2)), Evaluate("sum('blad1:blad5'!" & Target.Offset(, 1).Address & ")"), .Offset(, 2))
End With
End Sub
 
Hoi Harry.
Ook jouw code heb ik getest.
Als ik in 1 van de eerste 5 tabbladen in cel B2 bv 6 invul, krijg ik alleen een uitkomst op tabblad 6 als ik in A2 iets invul.
In A1 of lager dan A2 krijg ik 0 als resultaat.
 
Laatst bewerkt:
Het gaat altijd om B2?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
  If .Column = 1 Then .Offset(, 2).Value = IIf(IsEmpty(.Offset(, 2)), [sum('blad1:blad5'!B2)], .Offset(, 2))
End With
End Sub
 
Excuus voor het late reageren, maar je code werkt ook, Harry!
Bedankt voor het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan