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

(Geavanceerd) tekst scheiden: geen vaste volgorde, vrije input, niet gescheiden

Status
Niet open voor verdere reacties.

Overvalued

Gebruiker
Lid geworden
11 apr 2017
Berichten
14
Goedemiddag allemaal,

Momenteel ben ik druk bezig om een excel bestand gereed te maken voor spss. Echter loop ik vast bij een bepaalde kolom.
Hopelijk kunnen jullie mij de goede richting in wijzen aangezien ik na uitgebreid zoeken niet een handleiding kan vinden die op mijn probleem van toepassing is.

situatie

Binnen een enquete krijgen respondenten de mogelijkheid om te kiezen uit de volgende antwoord opties (meerkeuze) op de vraag wat zij de meeste interessante fitness onderwerpen vinden.

Gezonde voeding
Afvallen
Sport tips
Informatie over fitness producten
Grappige sport gerelateerde berichten
Win acties
Motiverende sport gerelateerde berichten
Persoonlijke verhalen
Anders (Bij deze optiemogen ze zelf een willekeurig antwoord invullen)

Er is geen vaste volgorde binnen de antwoorden. Ook is de tekst niet gescheiden door een , of een spatie en is er dus een vrije invoer optie (anders).

Dit levert data op die er zo uitziet.

1. Gezonde voedingAfvallenSport tipsInformatie over fitness productenGrappige sport gerelateerde berichtenMotiverende sport gerelateerde berichtenPersoonlijke verhalen
2. Sport tipsInformatie over fitness productenGrappige sport gerelateerde berichtenMotiverende sport gerelateerde berichtenPersoonlijke verhalen
3.AfvallenSport tipsGrappige sport gerelateerde berichten

Wat ik dus eigenlijk zoek is een formule die op zoek gaat naar de bovenstaande antwoordmogelijkheden en wanneer hij deze aantreft ze verspreid over meerdere cellen (waarbij er dus ook samengevoegde antwoorden uit elkaar worden getrokken)

Na een hele tijd zoeken kom ik bij dit soort handleidingen uit, echter werken deze niet met mijn data.

http://office-oplossingen.nl/kan-ik-stukjes-uit-een-tekst-halen/
http://www.onlineexcelcursus.nl/tip...s/haal-specifieke-woorden-letters-uit-een-cel


Tips zijn van harte welkom:)

Databestand: Bekijk bijlage HelpMij.xlsx

Mvg Niek
 
Is er geen andere export mogelijkheid van je survey software? Dit is inderdaad een nachtmerrie.
 
Probeer het eens met deze macro
Code:
Sub VenA()
ar = Sheets("Mogelijke antwoordopties").Cells(1).CurrentRegion
With Sheets("Data")
  ar1 = Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
  ReDim ar2(UBound(ar1), 8)
  For j = 1 To UBound(ar1)
  c00 = ""
    For jj = 1 To UBound(ar)
      If InStr(ar1(j, 1), ar(jj, 1)) Then
        c00 = c00 & ar(jj, 1)
        ar2(j - 1, jj - 1) = ar(jj, 1)
      End If
    Next jj
    ar2(j - 1, jj - 2) = Replace(ar1(j, 1), c00, "")
  Next j
  .Cells(1, 10).Resize(UBound(ar2), UBound(ar2, 2) + 1) = ar2
End With
End Sub
 
Hoe verzin je het altijd weer VenA.

Ik kom met hulpkolommen en formules een heel eind, maar net niet 100%... :mad:
 
Code werkt perfect en mijn dank is groot:thumb:

Mocht je in een branche werken waarin een positieve review waarde heeft stuur gerust een PB en je krijgt hem!
 
Hoe verzin je het altijd weer VenA.

De hele lap tekst negeren en het voorbeeldbestandje bekijken om te zien of ik er logica in kan vinden. (Iets met 1000 woorden -- ):d En verder net als jij kijken naar andere reacties en daar wat van proberen op te steken en toe te passen.

De code zal vast nog korter kunnen maar ar2 heb ik er vast uitgesloopt.

Code:
Sub VenA()
ar = Sheets("Mogelijke antwoordopties").Cells(1).CurrentRegion
With Sheets("Data")
  ar1 = Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Resize(, 10)
  For j = 1 To UBound(ar1)
  c00 = ""
    For jj = 1 To UBound(ar)
      If InStr(ar1(j, 1), ar(jj, 1)) Then
        c00 = c00 & ar(jj, 1)
        ar1(j, jj + 1) = ar(jj, 1)
      End If
    Next jj
    ar1(j, jj) = Replace(ar1(j, 1), c00, "")
  Next j
  .Cells(1).Resize(UBound(ar1), UBound(ar1, 2)) = ar1
End With
End Sub
 
Ik blijf me lichtjes storen aan:
- Niet declareren van variabelen
- Variabele namen gebruiken die nietszeggend zijn.
- Gebruik van default property (weglaten van .Value)

In mijn geval zu ik het schrijven als:

Code:
Sub JKP()
    Dim vData As Variant 'ar
    Dim vNewData As Variant 'ar1
    Dim lRow As Long 'j
    Dim lCol As Long 'jj
    Dim sTemp As String 'c00
    
    vData = Sheets("Mogelijke antwoordopties").Cells(1).CurrentRegion.Value
    With Sheets("Data")
        vNewData = Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Resize(, 10).Value
        For lRow = 1 To UBound(vNewData)
            sTemp = ""
            For lCol = 1 To UBound(vData)
                If InStr(vNewData(lRow, 1), vData(lCol, 1)) Then
                    sTemp = sTemp & vData(lCol, 1)
                    vNewData(lRow, lCol + 1) = vData(lCol, 1)
                End If
            Next lCol
            vNewData(lRow, lCol) = Replace(vNewData(lRow, 1), sTemp, "")
        Next lRow
        .Cells(1).Resize(UBound(vNewData, 1), UBound(vNewData, 2)).Value = vNewData
    End With
End Sub
 
@jkpieterse
Ik blijf me lichtjes storen aan:
Dat mag zolang de code maar werkt:d

Slechts 5 variabelen waarvan ook nog eens 2 van het type 'Variant' zijn bij deze paar regels code prima te volgen in het 'Locals Window'. Over de voor- en nadelen van het wel of niet declareren bij kleine projecten kan ik niet echt een eenduidig antwoord vinden.

lRow lees ik als lastRow en had de duidelijke naam lRowvData moeten zijn, lCol lees ik als lastColumn wat in deze onjuist is en zou het lRowvData moeten heten. Dat je met de eerste letter van de variabele het type aangeeft begrijp ik wel maar of het logische namen zijn is een beetje smaakafhankelijk.

Het nut van het het toevoegen van een property toevoegen aan de default property ontgaat mij. Maar na het lezen van
Ik ben een professionele Excel ontwikkelaar, dus handgeschreven :-)
in een ander draadje begrijp ik de langere code wel. Uurtje factuurtje:p:d

Nb. Ik mis in jouw reactie een opmerking over Option Explicit ;)
 
de l's staan voor Long (v voor Variant) en Row is Row en Col is Column :-) Duidelijkheid is inderdaad subjectief, als je consequent dezelfde namen voor bepaalde dingen gebruikt dan leest code makkelijk. En dat geldt ook voor korte namen :-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan