Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makroprogrammierung...

Forumthread: Makroprogrammierung...

Makroprogrammierung...
28.01.2006 00:41:29
gerald
Hallo,
folgende Prolemstellung habe ich, ein Datensatz mit ca. 17000 einträgen.
In folgender Form:
646465464sdfasdf8484
6464 64d8e e 488
usw.
nun sollen die letzen 3 Zahlen einfach 1 Spalte nach Rechts rücken also:
646465464sdfasdf8 - 484
6464 64d8e e - 488
Ich habe mich schon mit dem Aufnahmescript für Makros versucht, und bin kläglich gescheitert.
Evt. habt ihr hier ja einen Lösungsansatz.
Vielen Dank
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makroprogrammierung...
28.01.2006 00:52:02
Heinz
Hallo Gerald,
wie wär's mit einer einfachen Formel?
Tabelle1
 AB
1646465464sdfasdf8484484
26464 64d8e e 488488
Formeln der Tabelle
B1 : =RECHTS(A1;3)
B2 : =RECHTS(A2;3)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Und dann eben am Ziehpunkt der Zelle (rechts unten, das kleine Quadrat) nach unten Kopieren.
Gruß Heinz
Anzeige
AW: Makroprogrammierung...
28.01.2006 01:47:53
Gerald
Und wie werden die ersten 3Zeilen dann in A1 gelöscht?
AW: Makroprogrammierung...
28.01.2006 06:39:45
Heinz
Guten Morgen Gerald,
so:
Tabelle1
 ABC
1646465464sdfasdf8 - 484646465464sdfasdf8484
26464 64d8e e - 4886464 64d8e e488
3A1 später ausblenden  
Formeln der Tabelle
B1 : =LINKS(A1;LÄNGE(A1)-6)
C1 : =RECHTS(A1;3)
B2 : =LINKS(A2;LÄNGE(A2)-6)
C2 : =RECHTS(A2;3)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Gruß Heinz
Anzeige
AW: Makroprogrammierung...
28.01.2006 06:43:28
Heinz
Hallo Gerald,
falls du wirlich die ersten 3 Zechen LINKS meinst, in deinem Beispiel waren es die letzten 3, dann so:
Tabelle1
 ABC
1646465464sdfasdf8 - 484465464sdfasdf8 - 484484
26464 64d8e e - 4884 64d8e e - 488488
3A1 später ausblenden  
Formeln der Tabelle
B1 : =RECHTS(A1;LÄNGE(A1)-3)
C1 : =RECHTS(A1;3)
B2 : =RECHTS(A2;LÄNGE(A2)-3)
C2 : =RECHTS(A2;3)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Gruß Heinz
Anzeige
AW: Makroprogrammierung...
28.01.2006 00:58:08
Ralf
Hi Gerald,
Dir kann geholfen werden.
Sub Schnippeln() dim x% with sheets("DeinTabellenname"). for x = 1 to 17000 'von Zeile 1 bis 17000 'die letzten 3 Zeichen vom Wert aus Spalte A in Spalte B schreiben .range("B" & x )= right(.range("A" & x),3)) 'in Spalte A den Wert aus Spalte A um 3 Zeichen kürzen .range("A" & x )= left(.range("A" & x),Len(.range("A" & x) - 3)) next x end with End Sub
Ciao, Ralf
Anzeige
AW: Makroprogrammierung...
28.01.2006 02:00:25
Gerald
Hallo,
ich denke mal das ich da noch einen Fehler gemacht habe, denn ersagt mir "Fehler beim Kompilieren.
Erwartet: Bezeichner oder geklammerter Ausdruck"
der Code sieht derzeit folgend aus:
Sub Schnippeln() Dim x% with sheets("Tabelle1"). For x = 1 To 17000 'von Zeile 1 bis 17000 'die letzten 3 Zeichen vom Wert aus Spalte A in Spalte B schreiben .range("B" & x )= right(.range("A" & x),3)) 'in Spalte A den Wert aus Spalte A um 3 Zeichen kürzen .Range("A" & x) = Left(.Range("A" & x), Len(.Range("A" & x) - 3)) Next x End With End Sub
Anzeige
AW: Makroprogrammierung...
28.01.2006 06:40:28
Hajo_Zi
Hallo Gerald,
ich habe den Code jetzt nicht getestet, aber in desem Ausdruck ist die letzte Klammer zu viel.
right(.range("A" & x),3))

AW: Makroprogrammierung...
29.01.2006 09:50:35
Gerald
Hallo Hajo,
vielen Dank für die Hilfe, aber wenn man erstmal anfängt, siehe
https://www.herber.de/forum/messages/725370.html
Anzeige
AW: Makroprogrammierung...
28.01.2006 09:25:27
Josef
Hallo Gerald!
Sollte etwas schneller sein!
Sub splitText()
Dim lngLast As Long, lngIndex As Long
Dim var1 As Variant, var2() As Variant

lngLast = Cells(Rows.Count, 1).End(xlUp).Row

var1 = Range("A2:A" & lngLast)

Redim var2(1 To lngLast, 1 To 2)

For lngIndex = 1 To lngLast
  
  var2(lngIndex, 1) = Trim$(Left(var1(lngIndex, 1), Len(var1(lngIndex, 1)) - 3))
  var2(lngIndex, 2) = Right(var1(lngIndex, 1), 3)
  
Next

Range("A2:B" & lngLast) = var2

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Makroprogrammierung...
28.01.2006 11:55:30
Peter
Hallo Sepp,
ich glaube es muss heißen: For lngIndex = 1 To lngLast - 1, sonst gibt es Laufzeitfehler '9' Index außerhalb des gültigen Bereichs.
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
@Peter! Da hast du Recht! o.T.
28.01.2006 12:05:02
Josef
Gruß Sepp
Noch eine kleine Nachbesserung ...
29.01.2006 09:42:08
Gerald
Moin,
wenn man erstmal anfängt.. Das Script hat "wunderbar" funktioniert. Nur jetzt kommen die Leute auf die tollsten Ideen, ich solle das ganze doch einmal in eine MYSQL Datenbank schreiben und dann ein Script schrieben zum Auslesen.
Soweit so gut, das mit der Datenbank ist kein Problem auch das Auslesen ist nicht das Problem.
Nur die Daten im passenden Format vorzubereiten.
Gibt es evt. die möglichkeit den Ursprünglichen Datensatz von zb.
1829 P22 802
in
INSERT INTO `test` VALUES ('1829 P22', '802');
zu Formatieren?
Danke
Gerald
Anzeige
AW: Noch eine kleine Nachbesserung ...
29.01.2006 20:27:43
Peter
Hallo Gerald,
meintest du das so - siehe Spalte C
'
' folgende Prolemstellung: ein Datensatz mit ca. 17000 einträgen.
' In folgender Form:
' 646465464 sdfasdf8484
' 6464 64d8e e 488
' usw.
' nun sollen die letzen 3 Zahlen einfach 1 Spalte nach rechts rücken also:
' 646465464 sdfasdf8 -484
' 6464 64d8e e - 488
'
Sub SplitText() Dim lngLast As Long Dim lngIndex As Long Dim var1 As Variant Dim var2() As Variant lngLast = Cells(Rows.Count, 1).End(xlUp).Row var1 = Range("A2:A" & lngLast) ReDim var2(1 To lngLast, 1 To 3) For lngIndex = 1 To lngLast - 1 var2(lngIndex, 1) = Trim$(Left(var1(lngIndex, 1), Len(var1(lngIndex, 1)) - 3)) var2(lngIndex, 2) = Right(var1(lngIndex, 1), 3) var2(lngIndex, 3) = "INSERT INTO `test` VALUES ('" _ & var2(lngIndex, 1) & "', '" & var2(lngIndex, 2) & "');" Next lngIndex Range("A2:C" & lngLast) = var2 End Sub
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Noch eine kleine Nachbesserung ...
29.01.2006 20:38:57
Gerald
Super Super Super
Vielen Vielen Dank
Das hat geklappt, und die Datenbank ist und picke packe voll. Nochmals vielen Vielen Dank. Ich habe Excel bisher immer für ein langweiliges Stat. Tool gehalten.
Da ich mich bisher nur mit PHP und MSQL beschäftigt habe, werde ich das ganze mal auf C++ und VB ausdehnen.
Gruß
Gerald
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige