• 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.

Gecalculeerde waarde VAST in andere celll opslaan.

Status
Niet open voor verdere reacties.

Roboman

Gebruiker
Lid geworden
5 jun 2014
Berichten
48
Voor een administratie heb ik een uitgebreide sheet ontworpen dat op basis van een aantal punten die een klant gescoord heeft een Niveau uitrekent.
Ik heb regels waarin ik in kolommen de diverse waarden opsla, maar om een overzicht te houden is er een sectie aan de bovenzijde van de sheet waarin ik een overzicht maak
B.v. de SUM van een range is 10 dan is het level Basis, 20 = Professioneel, 30 = Excellent enzovoorts. Dit werkt dynamisch met een hoop VLOOKUP/INDIRECT regels en laat de puntentelling zien wanneer ik een regel selecteer in Cell C5. (Ik heb een screenshot bij gesloten)

Nu wil ik graag dat deze berekende waarde (Cel A13) wordt opgeslagen in een andere cel maar die mag dan niet meer veranderen als ik een andere klant selecteer. Ik wil dus het berekende level permanent opslaan zodat ik dus op een gegeven moment een hele lijst krijg van die Levels.

Is dat mogelijk?
 

Bijlagen

  • Sheet screenshot.PNG
    Sheet screenshot.PNG
    59,5 KB · Weergaven: 45
Ik vermoed dat dit wel te realiseren is met VBA, maar dan moet je een Excel voorbeeldbestand plaatsen zonder gevoelige info uiteraard.
 
Voorbeeld Sheet

Geachte Spaarie,
Ik heb een voorbeeld van het sheet meegestuurd en geef je wat guidance over wat je ziet.
Ik selecteer een klant nummer inde cel A5. Hierdoor gaan alle Vlookups naar de naan Klant x zoeken en zie je de verzamelde data in het bovenste gedeelte van het sheet.
ALLE data invoer vind op de regel van de klant plaats en dus niet in het verzamelde gedeelte. Hierin zitten ook wat reken regels en invoer daar zou die pret bederven.
CEL A13 bepaalt aan de hand van een totaal telling in CEL B15 wat het Level is. wat ik dus probeer te vinden is een manier om Die waarde in b.v. CEL BG23 te zetten en dat die waarde daar onveranderd blijft ook als ik een andere klant selecteer met de Lookup in CEL A5. Hoe ik die waarde dan moet aanpassen later als dat nodig is .. geen idee, hand matig wellicht, maar als er een macro draait dan kan die ook opnieuw gestart worden of zo . dat zie ik later dan wel weer.
Ik hoop dat je me op weg kunt helpen. Lukt het niet dan is een alternatief om de hele berekening nogmaals in een cel te stoppen op de regel van de klant die alles bij elkaar telt en de rekenregels toepast, wat ook weer complex is en lastig te onderhouden.

Pas op met invoegen van regels en kolommen omdat ik vanaf CC weer een hoop rekenwerk per regel doe

Met vriendelijke groet.
 

Bijlagen

Open je bestand > ga naar tabblad 2017 > ALT + F11 > plak onderstaande code

Let op dat je wel de samenvoeging in A23 de samenvoeging verwijderd, want anders doet de code het niet. Wanneer je nu een klant kiest wordt automatisch de waarde van B15 naar de desbetreffende regel in kolom BG gekopieerd.

Succes

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$5" Then
        With Sheets("2017")
            r = .Range("A22:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Target).Row
            .Cells(r, 59).Value = .Range("B15").Value
        End With
    End If
End Sub
 
Bijgevoegd bestand bevat een code die wordt geactiveerd zodra cel A5 verandert.
De code plaatst de inhoud van cel A5 onder de eerstvolgende cel in kolom BG.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Beste Spaarie, Erg bedankt voor jouw bijdrage. Het werkt precies zo als ik het wilde hebben. Ik heb de code ingebouwd in het sheet en kan nu de berekende waarde in een lijst bijhouden. Geweldig.!! Nu heb ik een verandering gedaan die niet helemaal wil werken. (Als ik nog wat mag vragen) Zoals je in de sheet gezien hebt refereert die naar een jaar. Volgende jaar kopieer ik de sheet en rename het dan naar b.v. 2017, 2018 enz. Om alle code vrij te houden van hard gecodeerde waarden probeer ik de verwijzing naar het sheet (dus jaar) ook als variabele te houden.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$5" Then
With Sheet ("$CF$4") <<< HIER heb ik dat geprobeerd
r = .Range("A22:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Target).Row
.Cells(r, 84).Value = .Range("B15").Value
End With
End If
End Sub

In Cel CF4 staat de sheet naam. Als je in mijn voorbeeld sheet kijkt zie je hoe dat gedaan wordt. Ik zou dus "eenvoudig" die cel als variabele in de VB code kunnen gebruiken.. dacht ik!
... maar dat werkt dus niet. Ik heb allerlei combinaties en syntaxen geprobeerd maar moet me toch gewonnen geven.
Kan wat ik wil op deze manier of moet er een geheel andere constructie gemaakt worden?

met vriendelijke groet
Rob
 
@ Roncacio

Beste Roncancio, Dank je voor jouw bijdrage. Ondanks dat het niet direct bruikbaar is bedank ik je voor de tijd die je gegeven hebt en ik leer ieder moment van alle code voorbeelden die ik zie.

met vriendelijke groet,
Roboman
 
Zet deze code onder ThisWorkbook

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$5" Then
        With ActiveSheet
            r = .Range("A22:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Target).Row
            .Cells(r, 59).Value = .Range("B15").Value
        End With
    End If
End Sub
 
Rob,

maak eens
Code:
With Sheet (Range("$CF$4").value)
van
Code:
With Sheet ("$CF$4")
 
Zet deze code onder ThisWorkbook

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$5" Then
        With ActiveSheet
            r = .Range("A22:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Target).Row
            .Cells(r, 59).Value = .Range("B15").Value
        End With
    End If
End Sub
 
@ VenA en Haje,

How simple can life be.. Twee prima oplossingen. Ik heb de "ActiveSheet" syntax gebruik omdat hoe minder verwijzingen hoe beter..
Nogmaals erg bedankt voor de tips..

Roboman
 
Nog een vraag over de oplossing, dus geen probleem meer :)

Spaarie, de oplossing zoals je die gegeven hebt werkt voor 201% voor me. Je schrijft data de merge tussen kolom A en B eruit moet omdat het anders niet werkt. Dat doet het inderdaad niet en daar kan ik prima mee leven hoor. Vraag is nu; Waarom werkt dat niet als er samengevoegde cellen worden aangewezen. Als ik in Excel een samengevoegde cell aanwijs in een formule werk dat wel. Je merkt wel dat ik (op dit moment) niet veel kennis van VB heb maar probeer snel te leren.
 
201% zelfs, toe maar!

Samengevoegde cellen i.c.m. VBA en/of formules is vragen om rottigheid. Het gaat gewoon niet goed samen en eerlijk gezegd er niet precies een vinger op gelegd worden waar en/of waarom niet.
De ene keer doet ie het wel en de andere keer niet. Ik heb zelfs gehad dat de code het de ene dag nog deed en de volgende dag niet meer.

Advies hierin is dus; zoveel mogelijk samenvoegen vermijden :D
 
Duidelijk antwoord Spaarie. Er zijn wel meer zaken die zo "werken". De enige reden waarom A en B waren gemerged was voor cosmetische reden om ook lange namen goed te kunnen invoeren. Dus schuif ik nu met kolom A en heb hetzelfde resultaat..

Bedankt
Rob
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan