Thema Datum  Von Nutzer Rating
Antwort
11.08.2018 00:32:06 Keyhan
NotSolved
Blau Per Makro Werte harmonisieren und in Spalten teilen
11.08.2018 11:18:17 Gast83135
NotSolved
11.08.2018 13:31:06 Gast78827
NotSolved
11.08.2018 15:51:29 Gast99065
NotSolved

Ansicht des Beitrags:
Von:
Gast83135
Datum:
11.08.2018 11:18:17
Views:
546
Rating: Antwort:
  Ja
Thema:
Per Makro Werte harmonisieren und in Spalten teilen

Hi.

Was du suchst ist in etwa folgendes:

Option Explicit

Public Sub Test()
  
  Dim vntExpr As Variant
  Dim vntTokenList, vntToken, vntItem
  
  'einfach mal drei Beispiele
  vntExpr = Array("Apfel100gelb", "Äpfel98ge lb", "Ap-fel1.00Farbegelb")
  
  For Each vntItem In vntExpr
    
    'mittels /ExtractTokens/ Inhalt in Wörter und Zahlen zerlegen (alle anderen Zeichen werden ignoriert)
    Debug.Print ">> Expression '"; CStr(vntItem); "' contains ["; CStr(ExtractTokens(vntItem, vntTokenList)); "] tokens <<"
    
    For Each vntToken In vntTokenList
      Debug.Print Spc(2); ">> '"; vntToken & "'"
    Next
    
  Next
  
End Sub

Public Function ExtractTokens(ByVal Expression As Variant, ByRef TokenList As Variant) As Long
  
  Dim c As String * 1
  Dim t, b, i&
  
  b = Array(False, False, False)
  
  For i = 1 To Len(Expression)
    c = Mid$(Expression, i, 1)
    Select Case LCase$(c)
      Case "a" To "z", "ä", "ö", "ü", "ß"
        b = Array(b(LBound(b) + 1), True, True)
      Case "0" To "9"
        b = Array(b(LBound(b) + 1), False, True)
      Case Else
        b(LBound(b) + 2) = False
    End Select
    If (i > 1) And (b(LBound(b) + 0) Xor b(LBound(b) + 1)) And b(LBound(b) + 2) Then t = t & vbNullChar
    If b(LBound(b) + 2) Then t = t & c
  Next
  
  TokenList = Split(t, vbNullChar)
  ExtractTokens = UBound(TokenList) - LBound(TokenList) + 1
  
End Function

Die Ausgabe sieht so aus:

>> Expression 'Apfel100gelb' contains [3] tokens <<
  >> 'Apfel'
  >> '100'
  >> 'gelb'
>> Expression 'Äpfel98ge lb' contains [3] tokens <<
  >> 'Äpfel'
  >> '98'
  >> 'gelb'
>> Expression 'Ap-fel1.00Farbegelb' contains [3] tokens <<
  >> 'Apfel'
  >> '100'
  >> 'Farbegelb'

Im hervorgehobenen Teil werden die einzelnen Wörter und Zahlen zur Anschauung ausgegeben.

Hier würde man dann ansetzen, um die "Harmonisierung" vorzunehmen. Das wäre wohl am einfachsten, indem man in Excel eine Liste der Möglichkeiten erstellt, wobei das erste Wort in der Liste gleichzeitig die harmonisierte Version davon darstellt. Man geht dann einfach die Liste durch und schaut ob das Wort darin enthalten ist, wenn ja: schaut man ob es das erste in der entspr. Liste ist, wenn nicht: nimmt man das erste aus dieser Liste und ersetzt das Wort damit.

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
11.08.2018 00:32:06 Keyhan
NotSolved
Blau Per Makro Werte harmonisieren und in Spalten teilen
11.08.2018 11:18:17 Gast83135
NotSolved
11.08.2018 13:31:06 Gast78827
NotSolved
11.08.2018 15:51:29 Gast99065
NotSolved