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

Bepaalde tekens filteren uit een lange tekst

Status
Niet open voor verdere reacties.

jefkeh

Gebruiker
Lid geworden
23 feb 2014
Berichten
130
Hoi,
Ik heb een lange tekst, daar wil ik bepaalde tekst uithalen.
vb:
01 Zotte beer - eentweedrie.ppp 1) "Zotte beer" wil ik hier uithalen 2) "Eentweedrie" wil ik hier uithalen
Er zijn meer soorten tekst(zie bestand)
een formule of een macro, wie wil me helpen.
Alvast bedankt
 

Bijlagen

Je vraag is nogal vaag, en je bestandje ook: daar zit namelijk weinig structuur in. En je zult toch op enige manier vanuit een structuur moeten werken met een macro: de gegevens moeten aan een bepaalde voorwaarde kunnen voldoen om te kunnen werken. Zo vind je met deze formule:
Code:
=SPATIES.WISSEN(DEEL(A3;VIND.SPEC(" ";A3);VIND.SPEC("-";A3)-VIND.SPEC(" ";A3)))
wél 'The Beach Boys' in A3 en 'Anita Meyer' in A7, maar 'Anita Meyer' vind je er niet mee in A5 of A6, omdat daar de structuur een andere formule eist.
 
Hoi,
Iets duidelijker misschiens ik heb een lijst met in kolom a, de zanger en het lied aan elkaar
Nu wil ik in kolom b, de naam van de zanger en in kolom c de naam van het liedje zonder cijfers of streepjes erbij.
maar kolom a is niet altijd hetzelfde
 
Probeer het eens met deze code. Met als voorwaarde dat de naam van de zanger met een hoofdletter moet beginnen en tussen de zanger en de song een "-" moet staan.

Code:
Option Base 1
Sub VenA()
With Sheets(1)
    ar = .Columns(1).SpecialCells(2).Offset(1).SpecialCells(2)
    ReDim ar2(UBound(ar), 2)
    For j = 1 To UBound(ar)
        t = 0
        For jj = 1 To Len(ar(j, 1))
            If Asc(Mid(ar(j, 1), jj)) < 65 Or Asc(Mid(ar(j, 1), jj)) > 95 Then t = t + 1 Else Exit For
        Next jj
        ar2(j, 1) = Trim(Split(Right(ar(j, 1), Len(ar(j, 1)) - t), "-")(0))
        ar2(j, 2) = Left(Trim(Split(Right(ar(j, 1), Len(ar(j, 1)) - t), "-")(1)), Len(Trim(Split(Right(ar(j, 1), Len(ar(j, 1)) - t), "-")(1))) - 4)
    Next j
    .Cells(2, 2).Resize(UBound(ar2), 2) = ar2
End With
End Sub
 

Bijlagen

Een andere methode.
Code:
Option Explicit
Sub hsv()
Dim sq, i As Long, sn, arr
With Sheets(1)
 sq = .Cells(1).CurrentRegion '.Columns(1).Resize(, 1)
 ReDim arr(UBound(sq), 2)
  With CreateObject("VBscript.Regexp")
               .Global = True
     For i = 2 To UBound(sq)
                    sn = .Replace(sq(i, 1), "")
              .Pattern = "([.])|([0-9])|Mp|mp"
                    sn = .Replace(sn, ";")
                    sn = Trim(Replace(sn, ";", ""))
      If Left(Trim(sn), 1) = "-" Then sn = Replace(sn, "- ", "", 1, 1)
         arr(i - 2, 0) = Split(sn, "- ")(0)
         arr(i - 2, 1) = Split(sn, "- ")(1)
    Next
  End With
.Cells(2, 5).Resize(UBound(sq) - 1, 2) = arr
End With
End Sub
 
Hoi,
heb beide codes geprobeert en doet het goed bijdeze tekst.
"01 - Maggie MacNeal - Terug Naar De Kust.mp3"
maar bij volgende tekst geeft die een foutmelding
"01 Maggie MacNeal - Terug Naar De Kust.mp3"
of
"01 - Maggie MacNeal Terug Naar De Kust.mp3"
dus als er vooraan geen streepje vind of als er in het midden geen streepje staat.

Kan dit opgevangen worden.
Alvast bedankt voor deze oplossingen, hopelijk kunnen jullie me nog verder helpen.
Gr.
Jef
 
Hallo,

Hier schreef:

tussen de zanger en de song een "-" moet staan.
Hierop wordt de artiest van het nummer gescheiden, dus essentieel.

Maak een zo goed mogelijk voorbeeldbestand met wat meer varianten.

Ps. De ervaring leert dat het waarschijnlijk nooit een honderd procent oplossing wordt.
 
Spaties verwijderen uit lange tekst

Hoi,
Alvast bedankt voor de snelle reactie.
Het probleem is als het geen streepje vindt tussen de zanger en het lied
Zie in bestand laatste regel.
Gr.
Jef
 

Bijlagen

Waarschijnlijk is dit hetzelfde bestand.
Maakt niet uit verder, het streepje is het teken waar we op scheiden.
Zolang die of iets anders er niet tussen staat kunnen we nergens op splitsen.


Succes verder.
 
Hoi,.

Bedankt voor de reactie.
Ik ga even bekijken of ik er streepjes tussen krijg.
Nogmaals bedankt.
Ik laat de vraag nog even open staan.
Gr.
 
Betere code om jouw voorbeeldbestandje te splitsen krijg je denk ik niet dus kan je de vraag net zo goed sluiten.

Om aan te geven hoe 'lastig' het is.
De code van HSV vervangt bepaalde tekens [0-9] ,"." Mp en mp. Dit gaat in het voorbeeldje goed. Op het moment dat er bv mp in de naam van de zanger voorkomt zal dit verdwijnen uit de naam van de zanger. Als de extensie van de song bv .wav is, zal de song op wav eindigen.

In mijn code gaat het alleen goed als de naam van de zanger met een hoofdletter begint wat in de code van HSV niet nodig is. De .wav zal in mijn code goed gaan maar als je geen extensie hebt dan mis je de laatste 4 posities van de song. En zo zal er nog wel meer te verzinnen zijn.

Dmv sorteren en gebruik te maken van tekst naar kolommen zijn zulke bestanden vaak sneller 'handmatig' op orde te krijgen is mijn ervaring.;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan