28.07.2016, 12:39
(Dieser Beitrag wurde zuletzt bearbeitet: 31.07.2016, 12:13 von Rabe.
Bearbeitungsgrund: redundante Zeilenumbrüche entfernt
)
Hallo,
für eine sehr einfache Aufgabe habe ich wahrscheinlich eine viel zu komplizierte Formel entwickelt, die es zu optimieren gilt.
Aus einem durch die Prozedur Stringkonstruktion (s.Code) in die Zelle A1 geschriebenen String sollen Teilstrings in einen zweiten String kopiert werden, der in der Zelle A2 steht. Die entsprechenden Zeichen des Strings in A2 werden dabei überschrieben.
Bei Wiederholung des Kopiervorgangs mit anderen Startparametern (s. Code) bleiben die Ergebnisse aus vorhergehenden Kopiervorgängen im String der Zelle A2 bestehen. Für diesen einfachen Kopiervorgang habe ich eine funktionierende Formel entwickelt. Diese Formel erscheint mir jedoch zu lang und zu kompliziert. D.h. ich habe entweder die Replace nicht richtig verstanden oder bin damit einen völlig falschen Weg gegangen.
für eine sehr einfache Aufgabe habe ich wahrscheinlich eine viel zu komplizierte Formel entwickelt, die es zu optimieren gilt.
Aus einem durch die Prozedur Stringkonstruktion (s.Code) in die Zelle A1 geschriebenen String sollen Teilstrings in einen zweiten String kopiert werden, der in der Zelle A2 steht. Die entsprechenden Zeichen des Strings in A2 werden dabei überschrieben.
Bei Wiederholung des Kopiervorgangs mit anderen Startparametern (s. Code) bleiben die Ergebnisse aus vorhergehenden Kopiervorgängen im String der Zelle A2 bestehen. Für diesen einfachen Kopiervorgang habe ich eine funktionierende Formel entwickelt. Diese Formel erscheint mir jedoch zu lang und zu kompliziert. D.h. ich habe entweder die Replace nicht richtig verstanden oder bin damit einen völlig falschen Weg gegangen.
Code:
Sub Stringkonstruktion()
'Schreiben von 2 Strings in die Zellen A1 + A2
'Einstellung der Proportionalschrift zum besseren Vergleich des Ergebnis
Range("A:A").Font.Name = "Courier New"
Range("A1") = "Teile dieses Strings sollen in Zelle A2 kopiert werden. Dabei wird der Startpunkt vbStart und " & _
"die Länge vbLänge angegeben. Wird der Kopiervorgang wiederholt, bleiben die kopierten Zeichen aus dem " & _
"vorhergenden Vorgang bestehen."
'Einstellen der Zellenbreite
Columns(1).EntireColumn.AutoFit
'String in Zelle A2 muss Aufgabe entsprechend mindestens so lang sein wie der in Zelle A1
Range("A2") = String(Len(Range("A1")) + 10, "X")
End Sub
'******************* Eigentlicher Kopiervorang mit Problemformel:
Sub Kopieren_von_Teilstrings_in_Zelle_A2()
Dim vbZelleA1 As String, vbZelleA2 As String, vbStart As Integer, vbLänge As Integer
'Parameter um Teilstring aus Zelle A1 in Zelle A2 zu kopieren
'Beliebige Zahlen innerhalb der durch die Länge von A1 gegebenen Grenzen
vbStart = 55
vbLänge = 7
If vbStart + vbLänge <= Len(Range("A1")) Then
vbZelleA1 = Range("A1")
vbZelleA2 = Range("A2")
'!!! Problemstelle: Diese Formel soll optimiert werden !!!:
vbZelleA2 = Left(vbZelleA2, vbStart - 1) & Replace(Mid(vbZelleA2, vbStart, vbLänge), _
Mid(vbZelleA2, vbStart, vbLänge), Mid(vbZelleA1, vbStart, vbLänge), 1, 1) & Right(vbZelleA2, Len(vbZelleA2) - _
vbStart - vbLänge + 1)
'Ausgabe
Range("A2") = vbZelleA2
End If
End Sub