Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Tekst splitsen op basis van spaties en enkel aanhalingstekens  (gelezen 259 keer)

0 leden en 1 gast bekijken dit topic.

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.301
  • I've Upped my standards,now,up yours!
Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Gepost op: 12 mei 2021, 15:58:18 »
Een plantennaam bestaat vaak uit 3 delen: Geslachtsnaam, soortnaam en variëteit of cultuurvariëteit.
Ik heb een lange lijst die ik zou willen importeren in een database maar daarvoor moet de volledige plantennaam gesplitst krijgen.
Ik heb al zitten klooien met vind.spec, links() en rechts() en deel() maar het lukt me niet.
Vooral omdat als een teken niet gevonden is, vind.spec() geen nul geeft en dat me de als() functie niet lukt.

Iemand een idee?
alvast bedankt,
dizzl
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Veerj

  • Lid
  • *
  • Berichten: 79
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #1 Gepost op: 12 mei 2021, 16:30:09 »
Voordat je deze formules gebruikt, zet dan eerst even alle aanhalingstekens om naar 1 type aanhalingsteken. Als je goed kijkt zie je dat er verschil in zit. Ook een mac geeft andere aanhalingstekens.

In B13:
=DEEL(A13;1;VIND.SPEC(" ";A13))
C13:
=DEEL(A13;VIND.SPEC(" ";A13)+1;ALS.FOUT(VIND.SPEC("'";A13)-VIND.SPEC(" ";A13)-1;99))
D13:
=ALS.FOUT(DEEL(A13;VIND.SPEC("'";A13);99);"")

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 18.915
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #2 Gepost op: 12 mei 2021, 16:30:53 »
Hallo dizzl,

Ik wil er wel eens mee stoeien ;D, maar één ding moet je goed voor ogen houden:

Een '  is niet hetzelfde als een ´
en beide tekens worden door elkaar gebruikt in je bestand.

De ' doet in Excel ook dienst om aan te tonen dat een invoer in een cel "Tekst" is.
Die ' wordt dan niet getoond in de betreffende cel, en je "varieteit" zal dan verkeerd weergegeven worden.

Ik zou voorstellen om met een zoek- en vervang-actie alle ' te vervangen door een ´

Groeten,

:) SoftAid :)             

Edit: zoals VeerJ ook aangeeft dus, maar VeerJ baseert zijn formule op ', en dat zou weer voor problemen kunnen zorgen.
VeerJ, wat denk je? niet best kiezen voor een ´ ?
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Veerj

  • Lid
  • *
  • Berichten: 79
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #3 Gepost op: 12 mei 2021, 16:36:58 »
Als in het bestand altijd uitgegaan wordt van dat teken, is dat wel het handigst!

Offline Veerj

  • Lid
  • *
  • Berichten: 79
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #4 Gepost op: 12 mei 2021, 17:03:41 »
Deze wil ik je niet onthouden. Gebaseerd op :)
Plaats onderstaande UDF achter een module.

Function jveer(cell, i)
 a = InStr(cell, "‘")
 c00 = Split(cell, , 2)(0)
 c01 = Replace(Left(cell, IIf(a = 0, 99, a - 2)), c00, "")
 c02 = Replace(Replace(cell, c00, ""), c01, "")
 ar = Array(c00, c01, c02)
 jveer = Application.Trim(ar(i - 1))
End Function

Deze kun je vervolgens gewoon doortrekken als één dezelfde formule. In B13: 
=jveer($A13;KOLOM(A1))
« Laatst bewerkt op: 12 mei 2021, 17:11:33 door Veerj »

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.301
  • I've Upped my standards,now,up yours!
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #5 Gepost op: 12 mei 2021, 17:33:55 »
Bedankt Veerj,
Je eerste antwoord was al super!


Bij deze opgelost!
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Veerj

  • Lid
  • *
  • Berichten: 79
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #6 Gepost op: 12 mei 2021, 17:35:08 »
Mooizo! Toch zou ik die ander ook even testen ;)

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 18.915
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #7 Gepost op: 12 mei 2021, 18:30:06 »
VeerJ,

super  :thumbsup:

:) SoftAid :)             
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.121
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Tekst splitsen op basis van spaties en enkel aanhalingstekens
« Reactie #8 Gepost op: 12 mei 2021, 23:09:00 »
Dan plaats ik ook mijn UDF voorstel maar (omdat ik er toch ook leuk mee bezig ben geweest...  ;D). Deze kan alle drie de gebruikte type quotes aan en toont vervolgens géén quotes meer in de kolom van de Variëteit (lijkt me nogal overbodig).
Daarnaast is mijn UDF niet afhankelijk van een kolom, maar je geeft er via de parameter g, s of v op welk type je als resultaat terug wilt zien.
Function GSV_splitsen(sBron As String, Optional sType As String = "G") As String
Dim TypeNr As Integer, sBronNw As String, Geslacht As String, Varieteit As String, Soort As String
   
    TypeNr = Switch(UCase(sType) = "G", 0, UCase(sType) = "S", 1, UCase(sType) = "V", 2)
    sBronNw = Replace(Replace(Replace(sBron, "‘", "|"), "’", "|"), "'", "|")
   
    Geslacht = Split(sBron)(0)
    If InStr(1, sBronNw, "|") Then Varieteit = Split(sBronNw, "|")(1)
    Soort = Replace(Replace(sBronNw, Geslacht, ""), "|" & Varieteit & "|", "")
   
    GSV_splitsen = Trim(Array(Geslacht, Soort, Varieteit)(TypeNr))

End Function
De aanroep in de worksheet is dus:
=GSV_splitsen($A2;"g")
=GSV_splitsen($A2;"s")
=GSV_splitsen($A2;"v")

Doe er verder mee wat je wilt. Voor mij was het weer een grappig puzzeltje om lekker mee bezig te zijn.
______________________________

Groet, Leo

 


www.combell.com