Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

String ergänzen

String ergänzen
15.08.2013 11:23:49
JACKD
Hallo Gemeinde
mal eine optimierungsfrage
Ich möchte für eine Vielzahl von Zellwerten die strings ergänzen
Sprich:
beliebige Zeichenkette 234578g
soll zu 2-345.78g werden
hierbei sind die Strings zwar unterschiedlich lang aber die Position von Bindestrich und Punkt ist immer gleich
Sub opszerlegen()
With Worksheets("Tabelle1")
For i = 1 To 20
If InStr(.Cells(i, 1), "-") = 0 Then
Links = Left(.Cells(i, 1), 1)
Mitte = Mid(.Cells(i, 1), 2, 3)
Rechts = Mid(.Cells(i, 1), 5)
Select Case Rechts
Case Is = ""
Neu = Links & "-" & Mitte
Case Is  ""
Neu = Links & "-" & Mitte & "." & Rechts
End Select
Else
Neu = .Cells(i, 1)
End If
.Cells(i, 2) = Neu
Next i
End With
So Funktioniert es zwar, ist aber vermutlich relativ langwierig wenn es viele Zellen sind.
Gibt es dafür eine schnellere / günstiger Lösung?
Grüße und Thanks in advance

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ja,oder so, is vllt die bessere Lösung..owT
15.08.2013 11:40:06
Oberschlumpf

2- fest verdrahten?! Denke eher nicht... oT
15.08.2013 11:43:06
{Boris}
VG, Boris

AW: 2- fest verdrahten?! Denke eher nicht... oT
15.08.2013 11:50:29
JACKD
Hall Hajo, Torsten und Boris
Die Lösung mit dem Format ist vielleicht nicht die schlechteste.
Allerdings (hier hat Boris recht) ist die Führende nicht immer eine "2" das habe ich [mea culpa] aber leider nicht so eineindeutig formuliert.
Lässt sich aber auch beheben mit
 0"-"00.000
Was sich damit aber leider nicht lösen lässt, sind Buchstaben in der Zeichenkette
Also sprich aus 534411f soll 5-344.11f werden
Hier komm ICh an der stelle nicht weiter...
Grüße

Anzeige
hast du denn...
15.08.2013 12:46:52
Oberschlumpf
...meine Idee mal ausprobiert?!
Hi
Mein Code macht doch genau das, was du haben willst...glaub ich zumindest.
Kann sein, dass du im Code anstelle von -6 vllt -7 oder -5 eintragen musst.
Wie gesagt, ich hatte meinen Code nicht getestet, aber ich verhaspel mich gern mal mit der Anzahl richtiger Stellen.
Und? Nun getestet?
Ciao
Thorsten

AW: hast du denn...
15.08.2013 12:51:02
JACKD
Hallo Torsten..
Nein hab ich nicht probiert.
Ist ja auch der gleiche Lösungsansatz wie der meinige wenn ich nicht ganz falsch liege.
Nur das du es etwas anders aufgebaut hast..
Bringt das denn vorteile?
Grüße

Anzeige
AW: hast du denn...
15.08.2013 12:55:41
Oberschlumpf
Hi
Bringt das denn vorteile?
ähh?!..warum probierst du es nicht aus? Dann könntest du diese Frage selbst beantworten.
Deinen Code mit Stoppuhr testen
Meinen Code mit Stoppuhr testen
Ciao
Thorsten

AW: hast du denn...
15.08.2013 13:05:26
JACKD
Hallo Torsten
also hab es getest. (hab zwar keine Stoppuhr zur Hand) aber das ist auch gleich.. ich hätt dir auch geglaubt das es schneller ist ..
unabhängig dessen gibt es ein Problem, was in meiner nicht exakten Beschreibung zugrunde liegt.
und zwar gibt es auch Zellen die nur 4 Stellen haben. Was insofern ungünstig ist das ich dann bei dir im Debugger lande (len(Zelle)-5) muss ja so kommen. (konntest du aber nicht wissen)
Jetzt müsste ich den Fehler auch noch abfangen.
Grüße

Anzeige
AW: hast du denn...
15.08.2013 14:28:51
Oberschlumpf
Hi
Dann versuch es mal so:
For...
If Instr(...) Then
If Len(.Cells(i, 1), 1)) = 7 Then
Neu = Left(.Cells(i, 1), 1) & "-" & Right(.Cells(i, 1), Len(.Cells(i, 1)) - 1)
Neu = Left(.Cells(i, 1), 5) & "." & Right(.Cells(i, 1), Len(.Cells(i, 1)) - 5)
Else
'und hier dann Code, der Werte mit nur 4 Stellen bearbeitet
End If
End If
Next

Unterhalb musst du dann Code entwickeln, der durchgeführt werden soll, wenn die Anzahl Zeichen NICHT 7 ist.
Da kann ich (noch) nichts reinschreiben, weil du ja (auch) dafür nichts geschrieben hast, was passieren soll, wenn Anzahl NICHT 7.
Hilfts denn erst mal?
Ciao
Thorsten

Anzeige
AW: hast du denn...
15.08.2013 14:52:31
JACKD
Hallo Torsten
Danke für deine Mühe.
Also es ist so, dass es Zeichen einer Beliebigen Länge mit aber mindestens 3 Zeichen sein können.
Wenn sie 3 oder 3-4 Zeichen haben dann wird
1"-"234
bei mehr als 4
1"-"234"."5
Wichtig ist dann dass (bei weniger als 5 Zeichen) kein Punkt erscheint
Also so in etwas



Tabelle1
 A
11-23
21-234
31-234.5
41-234.5g
51-234.5gn6
6usw

XHTML Tabelle für Darstellung in Foren,
einschl. Bedingter Formatierung ab Version 2007
XHTML-Version 11.26



Ich weiß halt nicht, ob es ob der ganzen Bedinungen immernoch effizienter ist, wie mein Code.. ?
With Worksheets("OPS")
ReDim arrTmp(1 to .UsedRange.Rows.Count - 1,1 to 1)
For i = 2 To .UsedRange.Rows.Count
If InStr(.Cells(i, 6), "-") = 0 Then
Links = Left(.Cells(i, 6), 1)
Mitte = Mid(.Cells(i, 6), 2, 3)
Rechts = Mid(.Cells(i, 6), 5)
Select Case Rechts
Case Is = ""
Neu = Links & "-" & Mitte
Case Is  ""
Neu = Links & "-" & Mitte & "." & Rechts
End Select
Else
Neu = .Cells(i, 6)
End If
arrTmp(i - 2,1) = Neu
Next i
.Cells(2, 6).Resize(i - 2) = arrTmp
End With

Grüße

Anzeige
AW: hast du denn...
15.08.2013 15:38:49
Oberschlumpf
mein Name wird MIT h gechrieben!
Hi
Ich war gerad am testen und stelle nun, leider nach erst ca 20 Minuten fest, dass ich an deinem Bsp etwas nicht verstehe.
1-234.5
1-234.5g
Woran sollder Code erkennen, dass nach 1-234.5 ein g kommt oder eben auch nicht?
Am allerallerbesten zeig uns doch mal eine Bsp-DATEI. Du hast diese Datei doch schon. Wieso müssen wir sie erneut erstellen?
Ciao
Thorsten

AW: hast du denn...
15.08.2013 15:45:26
JACKD
Hallo THorsten
kann ja mal passieren :-D
Danke für deine Anteilnahme.
Woher das g kommt, kann er natürlich nicht wissen. muss er auch nicht.
Wie gesagt es sind Zeichenfolgen die aus Buchstaben und Zahlen bestehen (können)
so kann eine Zeichenfolge auch 5-45f.34 oder 1-af5.45g sein
Es spielt also schlicht auch keine Rolle.
Und ihr müsst nichts erstellen ...
Ich hab nur nach einer optmierung für meinen Code gefragt. Der auch genau das macht was er soll.
Aber ich möchte euch nicht quälen, wenn es sozusagen keine offensichtliche Verbesserung dafür gibt.
Grüße

Anzeige
jetzt verstehe ich das erst
15.08.2013 11:52:05
JACKD
mit dem "g" - löschen
geht leider nicht Hajo, da verschiedene Buchstaben vorkommen können und drin bleiben müssen..
Grüße

AW: String ergänzen
15.08.2013 11:38:48
Oberschlumpf
Hi
ist aber vermutlich relativ langwierig wenn es viele Zellen sind
Hast du es denn schon mal mit vielen Zeilen ausprobiert und dabei die Zeit gestoppt, damit du den Unterschied zwischen wenigen + vielen Zeilen siehst?
Versuch mal (ungetestet):
For...
If Instr(...)
Neu = Left(.Cells(i, 1), 1) & "-" & Right(.Cells(i, 1), Len(.Cells(i, 1)) - 1)
Neu = Left(.Cells(i, 1), 5) & "." & Right(.Cells(i, 1), Len(.Cells(i, 1)) - 5)
End If
Next
Für die ... trägst du wieder deinen Code ein, der in den jeweiligen Zeilen steht.
Hilfts?
Ciao
Thorsten

Anzeige
AW: String ergänzen
15.08.2013 11:42:40
JACKD
Hallo Torsten
nee hab ich nicht probiert / gemessen
Ich bin nur davon ausgegangen, dass (das predigen Luc und Rudi ja immer :-D ) dass es mit Array schneller geht...?
Daher meine Frage
Grüße

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige