Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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

@Sepp: Help!

@Sepp: Help!
09.10.2012 19:06:09
Claudia
Hallo Sepp,
ich stecke mal wieder fest.
Ich lese aus einem Host Daten aus.
Hinter Wert1 könnte sich dann z.B. AF01, EB500, PB0, SB2, AAZ-A, TTT verbergen.
Wie kann ich Wert1 nun so zerlegen, dass ich mit folgenden Daten weiterarbeiten kann.
Wert2 = AF01
Wert3 = EB500
Wert4 = PB0
Wert5 = SB2
Wert6 = AAZ-A
Wert7 = TTT
Die Trennung erfolgt also immer mit dem Komma. Das Komma und die Leerstelle zwischen Komma und dem Begriff soll raus.
Weißt Du was ich meine? Kannst Du mir helfen?
Liebe Grüße
Claudia

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Split-Funktion
09.10.2012 19:14:02
Tino
Hallo,
bin zwar nicht Sepp, aber so könnte es gehen.
Mit der Split-Funktion, kannst Du den String mit dem entsprechenden delimiter in ein Array schreiben.
Sub Beispiel()
Dim Wert1$, ArrWerte, n&
Wert1 = "AF01, EB500, PB0, SB2, AAZ-A, TTT"
ArrWerte = Split(Wert1, ", ")
For n = LBound(ArrWerte) To UBound(ArrWerte)
Debug.Print ArrWerte(n)
Next n
End Sub
Gruß Tino

AW: Split-Funktion
09.10.2012 19:37:08
Claudia
Hallo Tino,
das klappt bestens. Aber wie kann ich mit den ArrWerten weiterarbeiten? Ich sehe sie zwar wenn ich mit der Maus drüberfahre, aber ich weiß nicht, wie ich sie im Code weiternutzen kann.
Irgendwo müsste im Code dann stehen:
Wert2 = ....
Wert3 = ....

Anzeige
AW: Split-Funktion
09.10.2012 19:41:40
Tino
Hallo,
anstatt halt Wert1, Wert2 usw. kommt ArrWerte(0), ArrWerte(1) usw.
Gruß Tino

AW: Split-Funktion
09.10.2012 19:44:43
Claudia
Ah, das ist ja easy! Wenn man es denn weiß.
Vielen lieben Dank!

AW: Split-Funktion
09.10.2012 21:52:36
Claudia
Hallo Tino,
ich frage 8 ArrWerte ab. Nun laufe ich aber auf Fehler, wenn beispielsweise nur 2 oder 7 vorhanden sind.
Wie kann ich das denn noch abfaangen? Es kommt ein Laufzeitfehler (ausserhalb des Bereiches).
So sieht es aus:
Dim Wert$, ArrWerte, a&
Wert = Tarif
ArrWerte = Split(Wert, ", ")
For a = LBound(ArrWerte) To UBound(ArrWerte)
Debug.Print ArrWerte(a)
Next a
tarif01 = ArrWerte(0)
tarif02 = ArrWerte(1)
tarif03 = ArrWerte(2)
tarif04 = ArrWerte(3)
tarif05 = ArrWerte(4)
tarif06 = ArrWerte(5)
tarif07 = ArrWerte(6)
tarif08 = ArrWerte(7)
Vielen Dank!
Liebe Grüße
Claudia

Anzeige
AW: Split-Funktion
09.10.2012 21:53:50
Claudia
Laufzeitfehler 9 = Index außerhalb des gültigen Bereichs.
So muss der Fehler korrekt lauten.

AW: Split-Funktion
09.10.2012 21:53:53
Claudia
Laufzeitfehler 9 = Index außerhalb des gültigen Bereichs.
So muss der Fehler korrekt lauten.

Deshalb hat Tino für die ...
09.10.2012 22:03:20
Luc:-?
…Ausgabe im VBE-Direktfenster ja die Index-Grenzwerte abgefragt, Claudia;
das musst du bei deiner Übertragung natürl auch tun und bei späterer Verwendung der EinzelKonstt natürl fragen, ob sie leer sind oder nicht. Aber eigentlich brauchst du die gar nicht…
Gruß Luc :-?

...u.Matze solltest du auch 1er AW würdigen!
09.10.2012 22:05:46
Luc:-?
:-?

AW: @Sepp: Help!
09.10.2012 19:23:48
Matze,Matthias
Hallo Claudia,
hab das nur für eine einzelne Zelle (A1) gemacht, da ich nicht weis wo deine Daten(Wert1) stehen.
Sub Splitten() 'Zelle A1 splitten
Dim strText As String
Dim i As Integer
With Tabelle1
strText = Cells(1, 1) 'dies muss später variabel werden
For i = 0 To UBound(Split(strText, ", "))
'Zieltabell anpassen, Bereich anpassen
'hier Tabelle1 Zelle B1
Sheets("Tabelle1").Cells(1, 2 + i) = Split(strText, ", ")(i)
Next
End With
End Sub
Gruß Matze

Anzeige
AW: @Sepp: Help!
10.10.2012 05:46:02
Claudia
Hallo zusammen,
wer kann mir nochmals helfen und mir die Frage von gestern Abend hinsichtlich des Laufzeitfehlers beantworten?
Bitte beachtet mein schlechtes VBA-Wissen. Vielen lieben Dank!
Matze: Deinen Vorschlag kann ich nicht umsetzen, weil ich nicht weiß, wie ich das in meinem Code - dort benötige ich die Werte ja schon - unterbringen soll.
Luc: Deine Himweise haben mir gar nichts gebracht. Wenn Du mir helfen möchtest, dann mach doch einen konkreten Vorschlag.
Vielen Dank!

AW: @Sepp: Help!
10.10.2012 08:52:40
Matze,Matthias
Hallo Claudia,
zu dem Laufzeitfehler kann ich nichts beitragen, aber mal im Allgemeinen gesagt wäre für diese Aufgabe wissenswert:
A) Wert1 = hier stehen X beliebe Angaben die getrennt werden sollen?
B) gibt es weitere Werte?
C) Wo stehen diese Werte?
D) Wo sollen die Werte ausgelesen werden?
E) in einer Zeile oder einer Spalte oder sogar in einer neuen Tabelle?
Du siehst hier wäre eine kleine Musterdatei die nach deinen Vorstellungen aufgebaut ist sinnvoll.
Gruß Matze

Anzeige
AW: @Sepp: Help!
10.10.2012 09:49:50
Claudia
Hallo Matze,
der Tabellenaufbau ist hier egal, da ich die Daten aus einer Hostanwendung per Makro ziehe.
In diesem Makro möchte ich dann den Wert1 zerlegen.
Hinter Wert1 könnte sich dann z.B. AF01, EB500, PB0, SB2, AAZ-A, TTT verbergen.
Wie kann ich Wert1 nun so zerlegen, dass ich mit folgenden Daten weiterarbeiten kann.
Wert2 = AF01
Wert3 = EB500
Wert4 = PB0
Wert5 = SB2
Wert6 = AAZ-A
Wert7 = TTT
Bei Wert1 kann auch z.B. nur der ATU05 oder PT5, AM9 rauskommen.
Ich benötige also eine Zerlegung eines variablen Strings.
Im Makrocode geht es nach der Ermittlung dann so weiter:
With ActiveSheet
zeile = .Cells(.Rows.Count, 6).End(xlUp).Row + 1 'Spalte d
.Cells(zeile, 6).Value = ArrWerte(0)
.Cells(zeile, 7).Value = ArrWerte(1)
.Cells(zeile, 8).Value = ArrWerte(2)
.Cells(zeile, 9).Value = ArrWerte(3)
.Cells(zeile, 10).Value = ArrWerte(4)
.Cells(zeile, 11).Value = ArrWerte(5)
.Cells(zeile, 12).Value = ArrWerte(6)
.Cells(zeile, 13).Value = ArrWerte(7)
End With
Ich kann es leider nicht anders erklären. Sofern Du nicht weiterhelfen kannst, bitte offen lassen.
Vielen lieben Dank!
Liebe Grüße
Claudia

Anzeige
versuch es so.
10.10.2012 16:16:28
Tino
Hallo,
sorry das ich mich jetzt erst melde.
Habe mal noch die anderen Beiträge gelesen, entsprechend müsste es so gehen.
Wenn es immer 7 Werte sein müssen, kannst Du es so machen.
Dim Wert1$, ArrWerte, n&, Zeile&
Wert1 = "AF01, EB500, PB0, SB2, AAZ-A, TTT"
ArrWerte = Split(Wert1, ", ")
ReDim Preserve ArrWerte(6)
With ActiveSheet
Zeile = .Cells(.Rows.Count, 6).End(xlUp).Row + 1 'Spalte d
For n = LBound(ArrWerte) To UBound(ArrWerte)
.Cells(Zeile + n, 6).Value = ArrWerte(n)
Next n
End With
Gruß Tino

AW: versuch es so.
10.10.2012 16:24:08
Claudia
Hallo Tino,
das ist die Lösung! :-)
Jetzt müsste es nur noch nebeneinander, statt untereinander. Sicher eine KLeinigkeit für Dich; hoffe ich zumindest.
Die Start-Spalte wäre weiterhin Spalte F und dann halt G, H.....
Vielen vielen Dank!
Liebe Grüße
Claudia

Anzeige
AW: versuch es so.
10.10.2012 16:27:27
Tino
Hallo,
dann machen wir den Zähler von der Schleife auf die Spalte.
Dim Wert1$, ArrWerte, n&, Zeile&
Wert1 = "AF01, EB500, PB0, SB2, AAZ-A, TTT"
ArrWerte = Split(Wert1, ", ")
ReDim Preserve ArrWerte(6)
With ActiveSheet
Zeile = .Cells(.Rows.Count, 6).End(xlUp).Row + 1 'Spalte d
For n = LBound(ArrWerte) To UBound(ArrWerte)
.Cells(Zeile, 6 + n).Value = ArrWerte(n)
Next n
End With
Gruß Tino

und noch die Variante ohne Schleife
10.10.2012 16:36:09
Tino
Hallo,
wenn Du damit zurecht kommst, habe ich noch eine zweite Variante ohne Schleif.
Dim Wert1$, ArrWerte, Zeile&
Wert1 = "AF01, EB500, PB0, SB2, AAZ-A, TTT"
ArrWerte = Split(Wert1, ", ")
ReDim Preserve ArrWerte(6)
With ActiveSheet
Zeile = .Cells(.Rows.Count, 6).End(xlUp).Row + 1 'Spalte d
.Cells(Zeile, 6).Resize(, UBound(ArrWerte) + 1).Value = ArrWerte
End With
Gruß Tino

Anzeige
AW: @Sepp: Help!
10.10.2012 16:51:22
Matze,Matthias
Hallo Claudia,
da ich nicht der VBA Experte hier bin, möchte ich trozdeman diesem Beispiel/Aufgabe beiwohnen.
Du liest Daten aus einer Anwendung ein:
könnten wir dies Makro mal sehen? Denn es muss doch einer "ZELLE" der Wert1(oder welcher auch immer) zugewiesen werden.
Somit wird die "Zelle" doch zu deiner Abfrage die den "variablen String" enthält:
Bei Tino' Lösungsweg sehe ich das doch so,das er nach "AF01, EB500, PB0, SB2, AAZ-A, TTT" sucht und "NIX" Anderem.
Teste mal die Ausgabe:
For n = LBound(ArrWerte) To UBound(ArrWerte)
With ActiveSheet
zeile = .Cells(.Rows.Count, 6).End(xlUp).Row + 1 'Spalte d?/6 ist F oder?
.Cells(zeile, 6).Value = ArrWerte(n)
End With
Next n
Gruß Matze
PS offen für weiteres!!

Anzeige
AW: @Sepp: Help!
10.10.2012 18:36:48
Claudia
Hallo Tino,
ist perfekt - vielen vielen Dank für Deine Hilfe!
@Matze: Den Code kann ich nicht zeigen, da hier auch firmeninterne Dinge aufgeführt werden. Tut mir leid!
Allen einen schönen Abend!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige