Stringanalyse - übersichtliche Darstellung eines Zeichenkettenvergleichs
#1
Hallo liebe Leute,

ich habe folgendes Problem. Wir sollen eine Stringanalyse zweier Strings vstr1 und vstr2 durchführen.  Dies kann man ja nun so machen, das z.B. mittels Mid(vstr1, i, 1) = Mid(vstr2, i, 1) die einzelnen Zeichen mittels der Zählvariablen i der Stringlänge nach durchlaufen und dann verlgichen werden.

Die Schwierigkeit in der gestellten Aufgabe liegt aber darin, dass die Ergebnisse dieses Vergleichs sinnvoll zusammengefasst werden sollen.

In der Spalte 1 des Tabellenblattes sollen dabei alle Fundstellen für die Stellen stehen, wo die beiden Strings gleich sind,
in der Spalte 2 daneben, alle Ergebnisse wo Ungleichheit zwischen den beiden Strings besteht. Damit das Gesamtresultat übersichtlich bleibt, werden die Ergebnisse des Zeichenvergleich außerdem falls nötig, mit einem Bindestrich zusammengefaßt und sollten auf dem Arbeitsblatt in Excel (exemplarisch) dann so aussehen:

Beispiel für die Ausgabe:
Zelle A1: 1-5          für die Gleichheit von Zeichen 1 bis 5 der beiden Strings
Zelle B1: 6-10        für die Ungleichheit von Zeichen 6 bis 10 der beiden Strings
Zelle A2: 11-12      für die Gleichheit von Zeichen 11 bis 12 der beiden Strings
Zelle B2: 13           Zeichen Nummer 13 der beiden Strings ist ungleich
Zelle A3: 14           Zeichen Nummer 14 der beiden Strings ist gleich
Zelle B3: 15-18      Zeichen 15 bis 18 der beiden Strings sind ungleich.

Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im voraus.
Top
#2
Hallo!
Zitat:Die Schwierigkeit in der gestellten Aufgabe liegt aber darin […]

Es wäre glaube ich zielführender, wenn Du den Wortlaut der Aufgabe hier reinkopierst.
Ich zumindest empfinde Deine "Wunschauswertung" extrem unübersichtlich.
Zumal Du ja Texte in der Auswertung hast ("1-5") mit denen man doch nichts anfangen kann?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Hallo Ralf,
danke für deine superschnelle Antwort. Leider habe ich die Aufgabe nur stichpunktartig von der Tafel abgeschrieben. Deshalb hier mal ein Beispiel wie das Ganze im Ergebnis aussehen sollte:

Stringanalyse zweier Strings mit je 13 Zeichen:

vstr1 = "aaabbgmmmmjdd"
vstr2 = "aaaccgmumidhh"

Mit Positionen der einzelnen Zeichen:
1  2  3  4  5  6  7  8  9  10 11 12 13
a  a  a  b  b  g  m  m  m  m  j  d  d
a  a  a  c  c  g  m  u   m   i   d  h   h

Ausgabe des Ergebnis auf Excel Tabellenblatt:
Spalte A (Gleich)  |  Spalte B (ungleich)
1 - 3                    |   4 - 5
6 - 7                    |   8
9                         |   10 - 13

Ich hoffe das ist jetzt verständlicher.
Top
#4
Hallo,

Spalten A und B als Text formatieren und folgenden Code ausführen:


Code:
Sub mach()
Dim i As Long, j As Long, k As Long
Dim vStrg1 As String
Dim vStrg2 As String
Dim merkP As Long

vStrg1 = "aaabbgmmmmjdd"
vStrg2 = "aaaccgmumidhh"

j = 1
k = 1
For i = 1 To Len(vStrg1)
 If Mid(vStrg1, i, 1) = Mid(vStrg2, i, 1) Then
   merkP = i
   Do Until Mid(vStrg1, i, 1) <> Mid(vStrg2, i, 1)
     i = i + 1
   Loop
   If merkP = i - 1 Then
     Cells(j, 1).Value2 = merkP
   Else
     Cells(j, 1).Value2 = merkP & " - " & i - 1
   End If
   j = j + 1
   i = i - 1
 Else
   merkP = i
   Do While Mid(vStrg1, i, 1) <> Mid(vStrg2, i, 1)
     i = i + 1
   Loop
   If merkP = i - 1 Then
     Cells(k, 2).Value2 = merkP
   Else
     Cells(k, 2).Value2 = merkP & " - " & i - 1
   End If
   k = k + 1
   i = i - 1
 End If
Next i
End Sub
Gruß Atilla
Top
#5
Hallo Atilla,

dein Code funktioniert ja super! Deshalb Danke! Danke! Danke!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste