zinnen scheiden op basis van een compleet (!) woord

  • Onderwerp starter Onderwerp starter keb
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

keb

Gebruiker
Lid geworden
20 feb 2011
Berichten
153
Ik wil zinnen scheiden waarin het oud-Hollandse woord "genaemt" in voorkomt. De bestaande kolom wil ik splitsen in twee nieuwe kolommen.

VOORBEELD
"een weijde landts genaemt langhcamp" moet worden "een weijde landts genaemt " en "langhcamp".

De VBA-instructie InStr werkt niet omdat op de afzonderlijke letters "g", "e", "n", "a", "e", "m" en "t" wordt gezocht.

Wie weet een oplossing? Zie bijgeloten voorbeeld-bestand.
Code:
Sub Scheiden_titel()
'
' Scheiden_titel Macro
Dim intPos, intRow
Dim rngRange, cell As Range
Dim strZoek As String

strZoek = "genaemt"

Set rngRange = Range("A2:A15")

For Each cell In rngRange
    intPos = InStr(1, Cells(cell.Row, 1).Value, strZoek, 1)
    Cells(cell.Row, 2) = Left(Cells(cell.Row, 1).Value, intPos)
    Cells(cell.Row, 3) = Right(Cells(cell.Row, 1).Value, intPos)
    Next

End Sub
 

Bijlagen

Er wordt niet op afzonderlijke letters gezocht, maar hij geeft de positie van de eerste letter van "genaemt". je moet er dus nog 7 bij optellen.

Code:
Sub Scheiden_titel()
'
' Scheiden_titel Macro
Dim intPos, intRow
Dim rngRange, cell As Range
Dim strZoek As String

strZoek = "genaemt"

Set rngRange = Range("A2:A15")

For Each cell In rngRange
    'MsgBox cell.Row
    'MsgBox cell.Value
    intPos = InStr(1, Cells(cell.Row, 1).Value, strZoek) [COLOR="#FF0000"]+ 7[/COLOR]
    If intPos > 0 Then MsgBox Right(Cells(cell.Row, 1).Value, intPos)
    Cells(cell.Row, 2) = Left(Cells(cell.Row, 1).Value, intPos)
    Cells(cell.Row, 3) = Right(Cells(cell.Row, 1).Value, [COLOR="#FF0000"]Len(cell) -[/COLOR] intPos)
Next

End Sub

aanpassing op jouw code in het rood weergegeven.
 
Voor het splitsen bestaat de functie Split

Code:
Sub VenA()
  c00 = "genaemt"
  ar = Cells(1).CurrentRegion
  For j = 2 To UBound(ar)
    y = Split(ar(j, 1), c00)
    ar(j, 2) = y(0) & c00
    ar(j, 3) = Trim(y(1))
  Next j
  Cells(1).CurrentRegion = ar
End Sub
 
Of eenvoudig (laat Excel voor jou het werk doen) zo:

Code:
Sub M_snb()
  Columns(1).Replace "genaemt", "|genaemt", 2
  Columns(1).TextToColumns , , , , 0, 0, 0, 0, 1, "|"
End Sub

Zoals je ziet kan dit ook in de UI (= handmatig: replace in tab find en texttocolumns in tab data)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan