Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Aus Liste auswählen und String erstellen
02.07.2007 08:37:00
Daniel
Hallo!
Ich habe eine Liste aus Werten und Zahlen in den Spalten A und E.
In A steht eine Art Artikelbezeichnung und in E eine Zahl.
Nun möchte ich gerne bestimmte Artikel und die zugehörigen Zahlen in
einen einzigen String in Zelle AA4 zusammenfassen.
Dabei muss jedoch ein genaues Format eingehalten werden.
Das Format der Artikelbezeichnung hat die Form ABC DE, wobei die Zeichenkette
vor und nach dem Leerzeichen eine beliebige Anzahl sein kann.
Mir geht es nun darum, alle Artikel die nach dem Leerzeichen nicht GY stehen haben,
in einen String zusammenzufassen.
Dieser soll die Form haben: ABC DE: Zahl aus E; FGH JK: Zahl aus E:
Also immer die Artikelbezeichnung komplett, dann ein ":", die Zahl aus E und dann zwei Leerzeichen.
Damit wird aus der Tabelle:
Spalte A__Spalte E____
ABF DE 1000
FKZ GY 500
ADEF FP 400
ARTD GY 100
der String:
ABF DE: 1000; ADEF FP: 400;
Wie kann ich das per Makro hinkriegen. Habe da leider kaum Ahnung von.
Schonmal vielen Dank für Tipps!

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 09:16:00
Matthias
Hallo Daniel
Ich weiß ja nicht, ob es in Betracht kommt, aber man könnte
Daten Text in Spalten nutzen - Trennung bei Leerzeichen.
somit hättest Du eine bessere Möglichkeit auf die Werte zuzugreifen in denen nicht der String "GY" steht.
Dannach könnte man sortieren nach der Spalte in der "GY" steht und die Zeilen nach unten verbannen.
Nun könnte man über eine Schleife die Strings einlesen bzw. in einer Zielzelle die Strings in Form von einer
Formel zurückgeben:
z.B. so: =A1 & ": " & E1 & "; " & A2 & ": " & E2 & "; " & A3 & ": " & E3 & "; " & ..............u.s.w

Das müsstest Du dann natürlich für Dich anpassen.
wenn es so für Dich nicht in Frage kommt, dann vergiß es einfach wieder ;-)
Gruß Matthias

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 10:02:00
Daniel
Hallo Matthias,
danke für de Vorschlag.
Das Prolem bei einer Lösung ber "Hilfsspalten" ist, dass die Datei schon sehr aufgebläht ist und ich
vor dem Hintergrund der Übersictlichkeit gerne eine Lösung hätte, die direkt das Ergebnis ausgibt.
Kann man das denn per Makro hinkriegen?

AW: Aus Liste auswählen und String erstellen
02.07.2007 10:56:00
Daniel
--vergessen: noch offen.

AW: Aus Liste auswählen und String erstellen
02.07.2007 11:30:00
Daniel
Hi Matthias!
Super! Vom Grundsatz her genau richtig.
Das Ganze müsste dann halt noch variabel sein, d.h. je nach gefüllten Zeilen, und ohne MessageBox.
Wäre super, wenn Du das auch noch machen würdest ;-)

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 11:23:37
Chaos
Servus Daniel,
probier das mal:

Sub liste()
Dim zeile As Integer, reihe As Integer, zeile1 As Integer, reihe1 As Integer, zeile2 As Integer, _
reihe2 As Integer
Application.DisplayAlerts = False
Application.ScreenUpdating = False
reihe = Range("A65536").End(xlUp).Offset(0, 0).Row
Sheets.Add
For zeile = 1 To reihe
If Right(Cells(zeile, 1), 2)  "GY" Then
ActiveSheet.Cells(zeile, 1).Value = Sheets("Tabelle1").Cells(zeile, 1).Value & ": " &  _
Sheets("Tabelle1").Cells(zeile, 5).Value & ";  "
End If
Next zeile
With ActiveSheet
reihe1 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile1 = reihe1 To 1 Step -1
If ActiveSheet.Cells(zeile1, 1).Value = "" Then
ActiveSheet.Cells(zeile1, 1).EntireRow.Delete
End If
Next zeile1
ActiveSheet.Cells(1, 2).Value = ActiveSheet.Cells(1, 1).Value & "  " & ActiveSheet.Cells(2,  _
1).Value
ActiveSheet.Cells(2, 2).Value = ActiveSheet.Cells(1, 2).Value
reihe2 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile2 = 3 To reihe2 Step 1
ActiveSheet.Cells(zeile2, 2).Value = ActiveSheet.Cells(zeile2 - 1, 2).Value & "  " &  _
ActiveSheet.Cells(zeile2, 1).Value
Next zeile2
Sheets("Tabelle1").Range("AA4").Value = ActiveSheet.Range("B65536").End(xlUp).Offset(0, 0). _
Value
ActiveSheet.Delete
End With
Sheets("Tabelle1").Range("AA4").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Gruß
Chaos

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 11:42:00
Daniel
Hallo!
Das sieht sehr gut aus, danke.
Allerdings werden im Moment die GY Werte mit in den String aufgenommen!
Wenn das noch verhindert werden würde, wäre es perfekt.

AW: Aus Liste auswählen und String erstellen
02.07.2007 11:56:38
Chaos
Servus Daniel,
bei mir nicht!
Mit Right(Cells(zeile, 1), 2) "GY" schließt das Makro das aus, außer der Aufbau deiner zelle ist doch anders.
Habe das so verstanden, dass die letzten beiden Zeichen GY sind, also etwa so:
ABE GY
oder ist das anders?
Gruß
Chaos

AW: Aus Liste auswählen und String erstellen
02.07.2007 12:34:00
Daniel
Hi Chaos,
hatte den Code in ein Modul geladen.
Jetzt im Codefenster in Tabelle1 geht es.
Versteh nur nicht wo der Unterschied liegt!?

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 12:43:00
Chaos
servus,
das liegt an der deklarierung in zeile
reihe = Range("A65536").End(xlUp).Offset(0, 0).Row
und
If Right(Cells(zeile, 1), 2) "GY" Then
Excel, weiß nicht welche da gemeint sind, wenn das in einem Modul steht.

Sub liste()
Dim zeile As Integer, reihe As Integer, zeile1 As Integer, reihe1 As Integer, zeile2 As  _
Integer, _
reihe2 As Integer
Application.DisplayAlerts = False
Application.ScreenUpdating = False
reihe = Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(0, 0).Row
Sheets.Add
For zeile = 1 To reihe
If Right(Sheets("Tabelle1").Cells(zeile, 1), 2)  "GY" Then
ActiveSheet.Cells(zeile, 1).Value = Sheets("Tabelle1").Cells(zeile, 1).Value & ": " & _
Sheets("Tabelle1").Cells(zeile, 5).Value & ";  "
End If
Next zeile
With ActiveSheet
reihe1 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile1 = reihe1 To 1 Step -1
If ActiveSheet.Cells(zeile1, 1).Value = "" Then
ActiveSheet.Cells(zeile1, 1).EntireRow.Delete
End If
Next zeile1
ActiveSheet.Cells(1, 2).Value = ActiveSheet.Cells(1, 1).Value & "  " & ActiveSheet.Cells( _
2, _
1).Value
ActiveSheet.Cells(2, 2).Value = ActiveSheet.Cells(1, 2).Value
reihe2 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile2 = 3 To reihe2 Step 1
ActiveSheet.Cells(zeile2, 2).Value = ActiveSheet.Cells(zeile2 - 1, 2).Value & "  " &  _
_
ActiveSheet.Cells(zeile2, 1).Value
Next zeile2
Sheets("Tabelle1").Range("AA4").Value = ActiveSheet.Range("B65536").End(xlUp).Offset(0, 0) _
. _
Value
ActiveSheet.Delete
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Tabelle1").Range("AA4").Select
End Sub


so geht's auch für das Modul.
Gruß
Chaos

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 12:58:42
Daniel
Ah, verstehe.
Was muss ich ändern, damit Zeile1 keine Berücksichtigung findet?
Hatt vergessen zu sagen, dass in Zeile1 nur Überschriften stehen.

AW: Aus Liste auswählen und String erstellen
02.07.2007 14:09:00
Daniel
Okay, das habe ich selbst hingekriegt.
Eine Kleinigkeit noch:
Wenn gar kein String in die Zelle geschrieben wird, weil die List leer ist oder keine anderen als GY da sind. Dann schreibt er im Moment trotzdem Leerzeichen in die Zelle. Was muss denn noch im Code geändert werden, wenn in diesem Fall die Zelle leer sein soll?

AW: Aus Liste auswählen und String erstellen
02.07.2007 14:59:28
Chaos
Servus,
zu 1. zeile:
For zeile = 1 To reihe wird For zeile = 2 To reihe 1.Schleife
und das mit den Leerzeichen:
If Right(Sheets("Tabelle1").Cells(zeile, 1), 2) "GY" Then
wird zu:
If Right(Sheets("Tabelle1").Cells(zeile, 1), 2) "GY" And Sheets("Tabelle1").Cells(zeile, 1).Value "" Then
Gruß
Chaos

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 15:09:00
Daniel
Ne, das meinte ich anders, sorry.
Es kommt vor, dass in der Spalte nur Werte mit GY stehen. Dann kommen ja keine Werte in den String. Das führt dann dazu, dass die Zelle AA4 den Wert "__" annimmt ( _= Leerzeichen). Die Zelle ist dann nicht mehr leer.

AW: Aus Liste auswählen und String erstellen
02.07.2007 15:32:00
Chaos
Servus,
glaube das Leerzeichen kommt aus der zeile:
Next zeile 1
ActiveSheet.Cells(2,2).Value = ActiveSheet.cells(zeile2 -1, 2).Value & " " & ... ' hier
mach hier draus:
If ActiveSheet.Range("A1").Value = "" Then
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Tabelle1") .Range("AA4").Select
Exit sub
Else
ActiveSheet.Cells(2,2).Value = ActiveSheet.cells(zeile2 -1, 2).Value & " " & ...
hier bis zu End with runter den Code übernehmen und noch ein End if einfügen
End if ' hier!!!
End With
dann müsste eigentlich die Zelle leer bleiben (ungetestet)
Gruß
Chaos

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 15:41:00
Daniel
Servus,
hmm. Werde da leider nicht schlau draus.
Was soll ich wie austauschen?

AW: Aus Liste auswählen und String erstellen
02.07.2007 15:51:10
Chaos
Servus Daniel,
Ich meinet so:

Sub liste()
Dim zeile As Integer, reihe As Integer, zeile1 As Integer, reihe1 As Integer, zeile2 As  _
Integer, _
reihe2 As Integer
Application.DisplayAlerts = False
Application.ScreenUpdating = False
reihe = Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(0, 0).Row
Sheets.Add
For zeile = 2 To reihe
If Right(Sheets("Tabelle1").Cells(zeile, 1), 2)  "GY" And Sheets("Tabelle1").Cells(zeile, _
1).Value  "" Then
ActiveSheet.Cells(zeile, 1).Value = Sheets("Tabelle1").Cells(zeile, 1).Value & ": " & _
Sheets("Tabelle1").Cells(zeile, 5).Value & ";  "
End If
Next zeile
With ActiveSheet
reihe1 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile1 = reihe1 To 1 Step -1
If ActiveSheet.Cells(zeile1, 1).Value = "" Then
ActiveSheet.Cells(zeile1, 1).EntireRow.Delete
End If
Next zeile1
If ActiveSheet.Range("A1").Value = "" Then
ActiveSheet.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Tabelle1").Range("AA4").Select
Exit Sub
Else
ActiveSheet.Cells(1, 2).Value = ActiveSheet.Cells(1, 1).Value & "  " & ActiveSheet. _
Cells(2, 1).Value
ActiveSheet.Cells(2, 2).Value = ActiveSheet.Cells(1, 2).Value
reihe2 = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
For zeile2 = 3 To reihe2 Step 1
ActiveSheet.Cells(zeile2, 2).Value = ActiveSheet.Cells(zeile2 - 1, 2).Value & "  " _
& _
ActiveSheet.Cells(zeile2, 1).Value
Next zeile2
Sheets("Tabelle1").Range("AA4").Value = ActiveSheet.Range("B65536").End(xlUp).Offset( _
0, 0).Value
ActiveSheet.Delete
End If
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Tabelle1").Range("AA4").Select
End Sub


Gruß
Chaos

Anzeige
AW: Aus Liste auswählen und String erstellen
02.07.2007 15:54:00
Daniel
Perfekt! Ich danke dir vielmals!

AW: Aus Liste auswählen und String erstellen
02.07.2007 16:02:38
Chaos
Bitteschön!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige