• 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 een Function (VBA) rijnummers in één cel plaatsen

Status
Niet open voor verdere reacties.

Excelbat

Gebruiker
Lid geworden
23 mrt 2012
Berichten
402
Goedenavond,

Ik wil in een kolom zoeken waar de gelijke waarden voorkomen, en de rijnummers daarvan in één cel plaatsen.

Deze functie heb ik ergens eerlijk van internet gejat en min of meer aangepast naar mijn smaak:

Code:
Function JoinRij(RangeToJoin As Range, BetweenEach, WatZoekIk)
JoinRij = ""
For Each cell In RangeToJoin

If cell <> "" And cell = WatZoekIk Then
JoinRij = JoinRij & Format(cell.Row, "0000") & BetweenEach
Else
JoinRij = JoinRij
End If

Next cell

' Get rid of the final Between
If Len(JoinRij) > 0 Then
JoinRij = Left(JoinRij, Len(JoinRij) - Len(BetweenEach))
End If
End Function

Als het woord 'Klaas' dan in rij 2, 3 en 4 voorkomt, dan krijg ik als uitkomst 0002,0003,0004.
Ik wil dan echter zien: 0002-0004 (2 t/m 4).
Kan iemand mij helpen bovenstaande functie om te bouwen (in het excelvoorbeeld heb ik ook de gewenste uitkomst geplaatst).
Zie excelvoorbeeld hieronder:

Bekijk bijlage ExcelbatFunctionJoinRij.xlsb

Thanx/Excelbat
 
Probeer deze eens:
Code:
Function JoinRij(RangeToJoin As Range, BetweenEach, WatZoekIk)
    Dim i As Long: i = 1
    
    For i = RangeToJoin.Row To RangeToJoin.Rows.Count + 1
        If Cells(i, RangeToJoin.Column) = WatZoekIk Then
            res = Format(i, "0000")
            x = i
            While Cells(i, RangeToJoin.Column) = WatZoekIk
                i = i + 1
            Wend
            If x = i - 1 Then
                JoinRij = JoinRij & Format(i - 1, "0000") & BetweenEach
            Else
                JoinRij = JoinRij & res & "-" & Format(i - 1, "0000") & BetweenEach
            End If
            res = ""
        End If
    Next i
    JoinRij = Left(JoinRij, Len(JoinRij) - Len(BetweenEach))
End Function
 
Laatst bewerkt:
Thanx Edmoor,

Dit is precies wat ik zoek. Ik ga nog wel even studeren hoe deze in elkaar zit, want ik wil 'm ook nog begrijpen.

Greetz/Excelbat
 
Ik eigenlijk ook wel, het is een lastige ;)
 
Was vanmiddag al een paar uurtjes aan het puzzelen geweest, maar kreeg het niet voor elkaar. Daarom maar de hulp ingeroepen van helpmij.

Ik ben nog aan het pluizen. Heb de functie naar een 'normale' macro omgevormd, en m.b.v. msgboxen probeer ik te achterhalen wat het allemaal doet.
While Wend is eigenlijk onbekend voor mij. Loopje gaat door zolang aan bepaalde voorwaarde wordt voldaan?

Nogmaals thanx/Excelbat
 
Ja.
Code:
While Cells(i, RangeToJoin.Column) = WatZoekIk [COLOR="#008000"]'Zolang de waarde in Cel(regel, kolom) = zoekwaarde[/COLOR]
    i = i + 1
Wend
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan