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

Met Vba formule waarde plakken

  • Onderwerp starter Onderwerp starter wiki
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

wiki

Gebruiker
Lid geworden
2 okt 2007
Berichten
576
In de bijlage heb ik een rooster met veel formules, waardoor het bestand traag wordt.
Ik wil graag met VBA de volgende formule (value/uitkomst)
Code:
=ALS(ISFOUT((ALS(VERT.ZOEKEN(C5;Diensten!$B$2:$E$60;4;0)<>"";VERT.ZOEKEN(C5;Diensten!$B$2:$E$60;4;0);ALS(RECHTS(C5;3)="1/2";D$2*0,5;D$2))));"";(ALS(VERT.ZOEKEN(C5;Diensten!$B$2:$E$60;4;0)<>"";VERT.ZOEKEN(C5;Diensten!$B$2:$E$60;4;0);ALS(RECHTS(C5;3)="1/2";D$2*0,5;D$2))))
In iedere tweede kolom plaatsen tot de kolom waarbij in rij twee STOP staat.
Als de waarde in de cel = ""
Vanaf rij 3 tot 33 en iedere 8e rij overslaan

Wie kan helpen. Dit soort loops heb ik nog niet onder de knie.

gr Wim
 

Bijlagen

Laatst bewerkt:
Krijg met de volgende code de waarde wel in de eerster rij (3) maar daarna loopt deze vast

Code:
Sub formules()
 Dim a
 Dim d
 d = 3
 a = 2
       f = "=IF(ISERROR((IF(VLOOKUP(RC[-1],Diensten!R2C2:R54C5,4,0)<>"""",VLOOKUP(RC[-1],Diensten!R2C2:R54C5,4,0),IF(RIGHT(RC[-1],3)=""1/2"",R2C*0.5,R2C)))),"""",(IF(VLOOKUP(RC[-1],Diensten!R2C2:R54C5,4,0)<>"""",VLOOKUP(RC[-1],Diensten!R2C2:R54C5,4,0),IF(RIGHT(RC[-1],3)=""1/2"",R2C*0.5,R2C))))"
  Do
  a = a + 2
  
  If Cells(d, a) = "" Then
  Cells(d, a) = f
  Cells(d, a).Value = Cells(d, a).Value
  
  
  End If

Loop Until Cells(3, a) = "stop"
    'd = d + 1
  
End Sub

De code is ook traag, ik zie deze lopen en wil graag toevoegen dat de cel links <> ""

:confused:
 
Wiki, Je hebt dan ook een gedrocht van een formule weten te maken zeg... :eek: Maar liefst 4x zoek je dmv een VLookup-functie (vert.zoeken) dezelfde waarde op in de sheet 'Diensten'. Dit is niet echt efficiënt gebruik van deze functie. Waarom loop je het je ook aan alle kanten zo moeilijk te maken met het omrekenen naar decimale minuten? Ik zou dus eerst 'ns beginnen met je datamodel logisch in elkaar te zetten.

Daarnaast is het leuke van VBA dat je de meeste zaken gewoon zelf gaat programmeren. Dus waarom eerst een formule in een cel zetten waarna je de waarde daarvan weer gaat opvragen in je code? Zoek dan dmv de VBA-functies 'find' en 'offset' eenmalig die waarde op en plaats die in een variabele. Het doorrekenen moet dan niet moeilijk meer zijn.

Groet, Leo
 
Beste ;)

Ik zie alles dubbel denk ik :eek:

Wat een formule zeg !!!

In cel D5 staat 8 ook al komt A nergens met een waarde voor op tabblad "Diensten" :confused:
Cel D6 lijkt mij juist te zijn. :thumb:

RECHTS(C5;3)="1/2";D$2*0,5;D$2)

Wat je hier mee bedoelt weet ik niet, nergens in de lijst in kolom C komt "1/2" voor :confused:

Een beetje duidelijkheid wat je in de cellen wilt hebben.

Groetjes Danny. :thumb:
 
Het aantal diensten in het werkelijke blad is uitgebreider dan in de bijlage
Als een dienst een aantal uren heeft wordt deze weergegeven
Als een dienst geen uren heeft worden de uren per dag voor deze medewerker weergegeven en als in de dienstcode rechts 1/2 staat de helft. Dit mbt vakantie/adv, bv enz.
Verder de foutcorrectie.

Maar mijn vraag gaat niet over de formule:o, deze werkt prima in het blad al zijn kortere codes uiteraard welkom

gr wim
 
Op welke manier kan deze formule verbeterd worden??

Ginger en danny147 bedankt voor het commentaar , maar hebben jullie ook een betere of andere benadering;)

Formule zonder foutcorrectie:
Code:
=ALS(VERT.ZOEKEN(E21;Diensten!$B$2:$E$30;4;0)<>"";VERT.ZOEKEN(E21;Diensten!$B$2:$E$30;4;0);ALS(RECHTS(E21;3)="1/2";F$2*0,5;F$2))

gr wim
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan