Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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)
Antworten 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.
Antworten 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
Antworten Top
#5
Hallo Atilla,

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


Gehe zu:


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