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

Versimpelen gegevens in bepaalde kolom

Status
Niet open voor verdere reacties.

Oudholland

Gebruiker
Lid geworden
4 jun 2020
Berichten
27
Een vraag waarvan ik niet weet of het überhaupt mogelijk is, maar missschien weet een van jullie toch een oplossing.

Voor een contractenregistratiesysteem van verhuurde objecten heb ik een excel (gegenereerd uit een database-applicatie) die plaats- en perceelsnummers in 1 kolom uitspuugt (naast vele andere data op dezelfde regel natuurlijk).
Waarbij de plaats steeds bestaat uit een code van 2 letters, maar bij ieder perceel terugkomt (voorbeeld: Amsterdam 01A1 wordt AD-01A1).
Nu wil ik in een aparte kolom een samenvatting van plaatsen hebben.
Bijvoorbeeld: AA-15J4 / AA-23K5 / DN-07A9 / SE-10H4 / SE-27L7
moet worden AA-DN-SE (liefst deze opmaak, een / als koppelteken zou eventueel mogen)

Het is soms 1 perceel, maar er zijn ook regels bij met soms wel 100 locaties. En soms maar 1 plaats, en soms een tiental plaatsen.

Ik ben bezig de verschillende exports aan werkbladen te automatiseren met macro's, dus als er een functie is om dit met een macro uit te voeren voor het hele werkblad tegelijk, zou dat helemaal super zijn...

Zie de bijlage voor een voorbeeld met verzonnen contracten. In kolom H staat de data waar het om gaat, in kolom I (groen) heb ik (nu handmatig) ingevuld wat ik als resultaat verwacht.

Nu de hamvraag. Is dit mogelijk, en zo ja in een macro? Want ik weet totaal niet hoe/waar ik het moet zoeken helaas...:o
Ik heb al zitten stoeien met tekst naar kolommen, maar dat was ook niet echt een oplossing, omdat ik vervolgens daar geen unieke plaatsnamen uit kreeg.

Groet, Rob
 

Bijlagen

Dat kan met een simpele zelf gemaakte functie in een module:
Code:
Function Percelen(target As Range) As String
    rks = Split(target.Value, " / ")
    Percelen = Left(rks(0), 2)
    For i = 1 To UBound(rks)
        If InStr(1, Percelen, Left(rks(i), 2)) = 0 Then
            Percelen = Percelen & "-" & Left(rks(i), 2)
        End If
    Next i
End Function

In je document:
Bekijk bijlage Voorbeeld_plaatsversimpeling.xlsm
 
Je gaf me een raadsel, hoe gebruik ik een functie? Voel me ff heel erg dom... Maar na googlen heb ik het gevonden hoe ik 'm gebruik en aanroep. En hij werkt. Bedankt weer!

Ik zie in jouw voorbeelddocument dat je met accolades werkt, dat ken ik niet. Wat is daar de reden van?

Nu nog uitzoeken hoe ik deze kan aanroepen met een macro, om de hele kolom in 1 keer om te zetten.
EDIT: Gevonden, in een macro dat ik eerder hier van het forum had gevist over verticaal zoeken vond ik hoe ik een formule kon uitvoeren voor een hele kolom.

Code:
Function Percelen(target As Range) As String
    rks = Split(target.Value, " / ")
    s_rks = Left(rks(0), 2)
    For i = 1 To UBound(rks)
        If InStr(1, s_rks, Left(rks(i), 2)) = 0 Then
            s_rks = s_rks & "-" & Left(rks(i), 2)
        End If
    Next i
    Percelen = s_rks
End Function

Sub Simpel()

Application.ScreenUpdating = False

Lastrow = Range("H" & Rows.Count).End(xlUp).Row
Range("J2:J" & Lastrow).Formula = "=Percelen(H2)"

ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True

End Sub
Is dit de juiste manier van aanroepen?
 
Laatst bewerkt:
Je kan het net zo gebruiken als iedere standaard Excel functie.
Zie ook het document in #2.

Maar accolades?
Die gebruik ik nergens.
 
Laatst bewerkt:
Als ik in jouw document in de cel van De Functie klik, komt er in de formulebalk te staan: {=percelen(H2)}. Dal ik vervolgens in de formulebalk klik, verdwijnen de accolades.
Maakt niet uit, zal wel aan mij liggen of aan het feit dat het een alleen-lezen-bestand is dan.
Ben in ieder geval blij dat ik het dan zo goed doe en dat het werkt!

Heb 'm net ook 'live' getest op een volledige export uit de database, in 1 woord geweldig. Waar ik eerder een uur op zat te turen nu in 1 minuut... :d
 
Waar die accolades vandaan komen weet ik ook niet.
Maar als het werkt zal het wel goed zijn :)
 
Als je Excel365 gebruikt is deze formule ook een optie:
Code:
=TEKST.COMBINEREN("-";WAAR;UNIEK(FILTER(DEEL(H2;RIJ($1:$1000);2);DEEL(H2;2+RIJ($1:$1000);1)="-";"")))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan