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

optellen

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

don42

Gebruiker
Lid geworden
25 apr 2014
Berichten
800
beste,

in het voorbeeld kan je in cel h2 een naam invullen
die daarna in cel a1 een prima optelsom maakt
vanaf de 5 de kolom gaat het fout wie ziet wat er verkeerd zit
 

Bijlagen

Hallo Don,

Zonder VBA, maar met een formule
Code:
=SOM(VERSCHUIVING($A$5;0;VERGELIJKEN($H$2;$A$4:$E$4;0)-1;50;1))

Groet

Dirk
 
Laatst bewerkt:
Of met alles in dynamische ranges; lijkt mij nog wat handiger.
 

Bijlagen

Hallo Octafish,

Mooi, maar is het wijzigen van een naam in cel H2 op deze wijze wel een "SelectionChange" ??

Groet

Dirk
 
hoI allemaal
bedankt voor de hulp
ik ben aan het kijken welke oplossing het beste past voor mijn einddoel
helaas werkt de code Octafish bijniet en zijn de tellingen fout
ik ga er mee aan de slag. kom er op terug :D
 
Hallo Don,

Wanneer je bij de oplossing van Octafish steeds in de zelfde cel H2 een naam selecteert, dan werkt het niet. Indien je eerst een andere cel selecteert en dan een nieuwe naam werkt het wel. Zie mijn opmerking aan Octafish. Misschien komt er een verbetering.

Maar waarom VBA als het ook gewoon met een formule kan.

groet

Dirk
 
Okee deze zag ik even niet
heb nu van
Code:
If Not Intersect(Target, Range("H2")) Is Nothing Then
H2 op H3 gezet en na een enter werkt het wel
top
 

je code werkt perfect
maar hoe als de telling in een andere sheet zit?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("j3")) Is Nothing Then
x = Range("j2").Value
Set a = Sheets("Invoer").Range("A3:bh3").Find(x, LookIn:=xlValues)
Range("k3") = WorksheetFunction.Sum(a.Offset(1).Resize(50))
End If
End Sub

Dus in cel J2 staat een datum (blad overzicht)
en als ik die datum in cel j2 verander dan had ik graag de telling van blad invoer wat onder de datum staat (vanaf regel 5) tot bv regel 50
bovenstaande aanpassing werkt dus niet
 
Laatst bewerkt:
extra:
wat me opviel is wanneer ik de a in de formule ( Set a = ....) verander in een A deze weer naar een a springt
weet niet of dit invloed kan hebben op de werking
 
bekijk eens goed uw code. U veranderd een datum in J2 en laat zoeken naar de waarde uit J3.

Op in voer staan de datums in rij 3 Wat staat er op rij 4? want er moet maar geteld worden vanaf rij 5

Ik hen mijn best gedaan om het aan te passen naar wat ik denk dat uw wensen zijn.

Het toont weer maar eens aan dat een relevant voorbeeld belangrijk is voor de helpers.
Als er nog vragen zijn lezen we het wel.
 

Bijlagen

Laatst bewerkt:
yes

Dit is de oplossing
hier kan ik mee aan de slag
heel erg bedankt voor je fijne hulp :thumb:

Don
 
Met een controle of de datum wel bestaat.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("j2")) Is Nothing Or Target.Count > 1 Then Exit Sub
  t = Application.Match(CDbl(Range("J2")), Sheets("invoer").Rows(3), 0)
  If IsNumeric(t) Then Target.Offset(1, 1) = Application.Sum(Application.Index(Sheets("Invoer").Cells(5, 1).CurrentRegion, 0, t)) Else Target.Offset(1, 1) = 0
End Sub
 

Bijlagen

Controle of het geen string of ongeldige datum is.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
 If Intersect(Target, Range("j2")) Is Nothing Or Not IsDate(Target) Or Target.Count > 1 Then Exit Sub
   .EnableEvents = False
   t = .Match(Range("J2"), Sheets("invoer").Rows(3), 0)
 Target.Offset(1, 1) = IIf(IsNumeric(t), .Sum(.Index(Sheets("Invoer").Cells(5, 1).CurrentRegion, 0, t)), "")
   .EnableEvents = True
End With
End Sub
 
mooi

Nog eens 2 oplossingen. met zeer bruikbare extra's
bedankt.
ga er mee aan de slag
 
Controle of het geen string of ongeldige datum is.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
 If Intersect(Target, Range("j2")) Is Nothing Or Not IsDate(Target) Or Target.Count > 1 Then Exit Sub
   .EnableEvents = False
   t = .Match(Range("J2"), Sheets("invoer").Rows(3), 0)
 Target.Offset(1, 1) = IIf(IsNumeric(t), .Sum(.Index(Sheets("Invoer").Cells(5, 1).CurrentRegion, 0, t)), "")
   .EnableEvents = True
End With
End Sub

Dit werkt mooi,
in mijn file invoer staan de datums in rij 3 vanaf kolom c3 tot BH3
de tellingen zouden van rij 4 tot 110 moeten zijn
hoe pas ik de index aan

moet er soms een lege rij in zitten
 
Laatst bewerkt:
Verander de rode 5 in een 4

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
 If Intersect(Target, Range("j2")) Is Nothing Or Not IsDate(Target) Or Target.Count > 1 Then Exit Sub
   .EnableEvents = False
   t = .Match(Range("J2"), Sheets("invoer").Rows(3), 0)
 Target.Offset(1, 1) = IIf(IsNumeric(t), .Sum(.Index(Sheets("Invoer").Cells([COLOR="#FF0000"]5[/COLOR], 1).CurrentRegion, 0, t)), "")
   .EnableEvents = True
End With
End Sub
 
Laatst bewerkt:
Dat had ik al geprobeerd,

als er tussen de datum en de op te tellen kolom een lege rij zit werkt het wel
begint de optelsom gelijk onder de datum komt er een heel groot getal uit
volgensmij de waarde van de datum zelf
 
ben je zeker dat de datum in rij 3 staat?
door die currentregion telt hij de datum erbij als er geen lege rij is.
 
Laatst bewerkt:
Vanaf rij 4.

Code:
Target.Offset(1, 1) = IIf(IsNumeric(t), .Sum(.Index(Sheets("Invoer").Cells(3, 1).CurrentRegion[COLOR=#ff0000].offset(1)[/COLOR], 0, t)), "")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan