Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
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.
Nickz, Niet dat ik een oplossing voor je heb, maar hoe moet er geteld worden als er meer dan 2 keer achter elkaar een cel gevuld is? Of zit er standaard een lege cel tussen 1 of 2 cellen?
Groet, Leo
Function TelGevuld(rng As Range, iAantal As Integer) As Integer
Dim r As Range
For Each r In rng
If Application.WorksheetFunction.Count(Range(r.Address & ":" & r.Offset(, iAantal - 1).Address)) = iAantal Then
i = i + 1
End If
' Debug.Print r.Address
If rng.Cells.Count = y + iAantal Then Exit For
y = y + 1
Next r
TelGevuld = i
End Function
Nickz, ff vlug een UDF voor je geschreven. Deze kan je nu als functie in je worksheet gebruiken. Plaats de code in een standaard module van je VBE.
Roep de functie aan in je sheet dmv: =TelGevuld(B8:I8;2) (als voorbeeld staat deze formule in cel M8). In het 1e deel van de functie zet je het te controleren bereik. In het 2e deel zet je het aantal gekoppelde cellen die geteld moeten worden. Je mag daar natuurlijk ook een celverwijzing van maken.Code:Function TelGevuld(rng As Range, iAantal As Integer) As Integer Dim r As Range For Each r In rng If Application.WorksheetFunction.Count(Range(r.Address & ":" & r.Offset(, iAantal - 1).Address)) = iAantal Then i = i + 1 End If ' Debug.Print r.Address If rng.Cells.Count = y + iAantal Then Exit For y = y + 1 Next r TelGevuld = i End Function
Groet, Leo
Ninckz, Je moet deze functie niet in je Worksheet of ThisWorkbook-module zetten, maar in een 'module'. Klik met rechts in de projectbrowser van je VBE op de naam van je workbook. In de pop-up klik je op insert en dan op module. Er wordt een nieuwe module aangemaakt. Plaats dáár de code...
Groet, Leo
bij 3 gevulde cellen naast elkaar, krijg je als resultaat 2
Wat zou dan volgens jou het resultaat moeten zijn? 1 of 0???
Groet, Leo
Als er 3 naast elkaar staan moet het als resultaat 1 zijn, omdat er slecht 1 maal 2 cellen naast elkaar gevuld zijn. De cellen die al geteld zijn moeten niet nog een keer opgenomen worden.
Volgens mij spreek je jezelf hier tegen:shocked:Nee zit er niet standaard tussen. Als het meer dan cellen is heb ik het liefst een andere waarde dan 1, zodat ik het onderscheid weet. Dan moet het resultaat daarvan in een andere cel komen.
Dus als het ware:
Aantal 2x achter elkaar:
Aantal 3x achter elkaar:
Aantal 4x achter elkaar:
Nickz, DAT antwoord verwachte ik al, daarom wilde ik 't eerst van jou horen. Naar mijn mening zou het resultaat namelijk dan nul moeten zijn. Het is óf nul óf twee, maar 1 is niet logisch.
Groet, Leo
Ninckz, Dan speel ik ff advocaat van de duivel...:evil:
wat is het resultaat als ALLE dagen gevuld zijn? (in je voorbeeld dus alle 8)
Groet, Leo
Function TelGevuld(rng As Range, iAantal As Integer) As Integer
'versie 2: tel in blokken (= iAantal) waarbij de onderdelen van het vorige blok niet mogen meetellen
Dim r As Variant
Dim i As Integer, y As Integer
[COLOR="Blue"]Application.Volatile[/COLOR]
Set r = rng
For y = 1 To rng.Cells.Count
' Debug.Print r(y).Address
If Application.WorksheetFunction.Count(Range(r(y).Address & ":" & r(y).Offset(, iAantal - 1).Address)) = iAantal Then
i = i + 1
y = y + iAantal - 1
End If
[COLOR="blue"]If rng.Cells.Count = y + iAantal [COLOR="Red"]-1[/COLOR] Then Exit For[/COLOR]
Next y
TelGevuld = i
End Function
Ninckz, Als JIU het logisch vindt, pas ik de code wel aan..
Ga maar 'ns testen of dit het gewenste resultaat geeft.Code:Function TelGevuld(rng As Range, iAantal As Integer) As Integer 'versie 2: tel in blokken (= iAantal) waarbij de onderdelen van het vorige blok niet mogen meetellen Dim r As Variant Dim i As Integer, y As Integer [COLOR="Blue"]Application.Volatile[/COLOR] Set r = rng For y = 1 To rng.Cells.Count ' Debug.Print r(y).Address If Application.WorksheetFunction.Count(Range(r(y).Address & ":" & r(y).Offset(, iAantal - 1).Address)) = iAantal Then i = i + 1 y = y + iAantal - 1 End If [COLOR="blue"]If rng.Cells.Count = y + iAantal Then Exit For[/COLOR] Next y TelGevuld = i End Function
Groet, Leo
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.