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

Cellen met waarde 1 tellen

Status
Niet open voor verdere reacties.

Nickz

Gebruiker
Lid geworden
30 mei 2007
Berichten
74
Ik wil gaarne het aantal x tellen dat twee cellen achter elkaar een getal bevatten.

Dus hoe vaak twee cellen naast elkaar een getal bevatten. Maakt niet uit welk getal!

Zie voorbeeld bestand!

Alvast bedankt!
 

Bijlagen

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

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

Groet, Leo
 
Laatst bewerkt:
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.
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
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.

Groet, Leo


super! alleen ik krijg "#NAAM?" . Volgens mij heb ik hem dan verkeerd ingevuld?
 
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

EDIT: maar ff een voorbeeld workbook als bijlage geplaatst...:D
 

Bijlagen

Laatst bewerkt:
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


je bent mijn held! :) dank je wel
 
Ninckz, Als je vraag hiermee is opgelost, wil je 'm dan op 'opgelost' zetten?

Groet, Leo

P.s. Love to be somebody's hero...;)
 
Deze visual basic formule werkt perfect. Echter wil ik dat hij de ‘getelde’ cel overslaat en niet nog een keer opneemt in de berekening. Dat gebeurt nu wel. Dus bij 3 gevulde cellen naast elkaar, krijg je als resultaat 2.

Iemand een idee?

zie voorbeeld bestand
 

Bijlagen

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.
 
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.
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:
Volgens mij spreek je jezelf hier tegen:shocked:
 
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
 
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

1 is wel logisch.

Vanuit mijn perspectief:

Het gaat om het aantal afleveringen van een bedrijf naar adressen toe. De vraag is of er synergie tussen zit. Is het bedrijf binnen 48 uur (2 cellen) bij een afleverplaats geweest dan is er sprake van synergie. Echter een derde cel valt er buiten, deze zal sowieso gereden moeten worden. Het bedrijf wil weten wat de gevolgen zijn 48 uurs leveringen (2 cellen naast elkaar). Deze cellen moeten dus niet nog een keer geteld worden.

Hopelijk is het zo wat duidelijker. Bedankt!
 
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
 
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

Mits allemaal naast elkaar:

Als er 10 gevuld zijn is het resultaat 5
Als er 9 gevuld zijn is het resultaat 4
Als er 8 gevuld zijn is het resultaat 4
Als er 6 gevuld zijn is het resultaat 3
Als er 5 gevuld zijn is het resultaat 2
Als er 4 gevuld zijn is het resultaat 2
Als er 3 gevuld zijn is het resultaat 1

etc.
 
Ninckz, Als JIU het logisch vindt, pas ik de code wel aan..:D
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 [COLOR="Red"]-1[/COLOR] Then Exit For[/COLOR]
    Next y

    TelGevuld = i

End Function
Ga maar 'ns testen of dit het gewenste resultaat geeft.

Groet, Leo
 
Laatst bewerkt:
Ninckz, Als JIU het logisch vindt, pas ik de code wel aan..:D
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
Ga maar 'ns testen of dit het gewenste resultaat geeft.

Groet, Leo

je bent de beste :) bedankt voor je snelle reacties. hier kan ik zeker wat mee!
 
Ninckz, graag gedaan! Ik vond 't een bijzondere uitdaging. Ik zie trouwens dat je nog 1 kleine aanpassing moet overnemen. In m'n code heb ik nog een '-1' (in het rood) toegevoegd. Deze moet je nog wel ff meenemen, anders kan je nog de fout ingaan.

Als het zo naar tevredenheid is, wil je de vraag dan op opgelost zetten?

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan