3.3k Aufrufe
Gefragt in Tabellenkalkulation von manzur Einsteiger_in (59 Punkte)
Hallo,

es ist wiedermal soweit. Ich sitze vor einem Problem und komme nicht mehr weiter. Da ist eure Expertentip wiedermal für mich sehr hilfreich.

ich habe eine Ansammlung von Datensätzen, welche folgendermaßen aussehen.

Beispiel:

http://www.fileuploadx.de/961503

Danke im voraus

9 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo manzur,

was ist das für ein Link? Der funktioniert nicht und mit den waagen Beschreibungen Deines Problems ist keine Hilfe möglich.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von manzur Einsteiger_in (59 Punkte)
Sorry,

ich habe jetzt die Beispieldatei neu hochgeladen.

http://www.file-upload.net/download-1885472/Mappe2.xls.html


gruß
0 Punkte
Beantwortet von manzur Einsteiger_in (59 Punkte)
Hallo,

leider weiss ich mir immernoch nicht selbst zu helfen.

Hat vielleicht jemand eine Idee?


Gruß


Manzur
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Manzur,

sorry, Dein Beitrag ist bei mir total untergegangen.

Nachfolgend nun ein Makro, dass das machen sollte, was Du Dir vorstellst.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Test()
Dim lngRow As Long
Dim lngWert As Long
Dim lngRowEnde As Long
Dim lngRowBeginn As Long
Dim lngVerbinden As Long
Dim strKombi As String
Dim lngKomponente As Long
Dim lngFirstRow As Long

lngWert = Sheets("Daten").Cells(2, 1)
lngRowBeginn = 2

For lngRow = 2 To Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
If Sheets("Daten").Cells(lngRow, 1) <> lngWert Then
lngKomponente = 0
strKombi = ""
lngRowEnde = lngRow - 1

For lngVerbinden = lngRowBeginn To lngRowEnde
If lngKomponente <> Sheets("Daten").Cells(lngVerbinden, 2) Then
strKombi = strKombi & ", " & Sheets("Daten").Cells(lngVerbinden, 2)
End If
lngKomponente = Sheets("Daten").Cells(lngVerbinden, 2)
Next
lngRowBeginn = lngRow
With Sheets("Übersicht")
lngFirstRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(lngFirstRow, 1) = Sheets("Daten").Cells(lngRowEnde, 1)
.Cells(lngFirstRow, 2) = Mid(strKombi, 3, Len(strKombi))
End With
End If
lngWert = Sheets("Daten").Cells(lngRow, 1)
Next
End Sub

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo,

ich nochmal. Ich hatte vergessen zu erwähnen, dass in dem Blatt "Daten" die Daten erst nach Spalte A und dann nach Spalte B sortiert sein müssen. Wenn Du möchtest, kann man das auch noch automatisieren.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Manzur,

nachfolgend nun nochmal das Makro mit der Sortierung im Blatt Daten.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Test()
Dim lngRow As Long
Dim lngWert As Long
Dim lngRowEnde As Long
Dim lngRowBeginn As Long
Dim lngVerbinden As Long
Dim strKombi As String
Dim lngKomponente As Long
Dim lngFirstRow As Long


Sheets("Daten").Range("A1:B" & Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row).Sort _
Key1:=Sheets("Daten").Range("A2"), Order1:=xlAscending, _
Key2:=Sheets("Daten").Range("B2"), Order2:=xlAscending, Header:=xlGuess

lngWert = Sheets("Daten").Cells(2, 1)
lngRowBeginn = 2

For lngRow = 2 To Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
If Sheets("Daten").Cells(lngRow, 1) <> lngWert Then
lngKomponente = 0
strKombi = ""
lngRowEnde = lngRow - 1

For lngVerbinden = lngRowBeginn To lngRowEnde
If lngKomponente <> Sheets("Daten").Cells(lngVerbinden, 2) Then
strKombi = strKombi & ", " & Sheets("Daten").Cells(lngVerbinden, 2)
End If
lngKomponente = Sheets("Daten").Cells(lngVerbinden, 2)
Next
lngRowBeginn = lngRow
With Sheets("Übersicht")
lngFirstRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(lngFirstRow, 1) = Sheets("Daten").Cells(lngRowEnde, 1)
.Cells(lngFirstRow, 2) = Mid(strKombi, 3, Len(strKombi))
End With
End If
lngWert = Sheets("Daten").Cells(lngRow, 1)
Next
End Sub

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von manzur Einsteiger_in (59 Punkte)
Hallo Leute,

habe leider immernoch das Problem. Neue Datei Upload...Altes Problem!!

http://rapidshare.de/files/48505389/Mappe1.xlsx.html


Hoffe, daß ihr mir mit einer Formel helfen könnt.


Gruß und Danke
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Moin,

was funktioniert, bzw. was gefällt Dir denn an dem was ich Dir hier vorgeschlagen habe nicht?

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von manzur Einsteiger_in (59 Punkte)
hallo oliver,

vielen dank für deine unterstützung. allerdings brauche ich diese lösung als formel.
auf der arbeit darf ich keine makros benutzen. daher wäre ich für eine formellösung dankbar.


gruß
...