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

kopieren zellinhalte mit zeilenumbruch

kopieren zellinhalte mit zeilenumbruch
09.07.2014 07:32:45
Toni
Guten Morgen,
hier habe ich noch den alten Eintrag hineingestellt und eine geänderte Beispieldatei:
https://www.herber.de/bbs/user/91418.xlsm
Liebe Grüße
Toni
Liebe Excel-Spezialisten,
Ich habe eine Excel-Mappe mit 2 Sheets; einem Quellsheet "Zusammenfassung" und einem Zielsheet "Export".
Im Quellsheet sind in der Spalte A Probennummern (z.B BX0055488, BX00554557, usw.) eingetragen Ein und diesselbe Probennummer kann unterschiedlich oft vorkommen. Dann gibt es in der Spalte C Einträge der Zeichen x oder n.
Das makro soll bei ausführung folgendes tun:
überall wo ein x oder n steht soll der Zellinhalt von A (Zusammenfassung) nach A (Export) kopiert werden; aber nur einmal; dann sollen alle (mit x oder n ) markierten Zellinhalte von D mit integriertem Zeilenumbruch nach b, aber in eine Zelle, kopiert werden.
Klingt kompliziert;is es auch; zum besseren Verständnis hab ich mal eine Arbeitsmappe hochgeladen:
https://www.herber.de/bbs/user/69169.xls
Ich habe bereits sehr viel Zeit (Stunden) das online-Forum durchgestöbert; habe aber nix (nicht mal annähernd) passende makros oder formeln gefunden, mit denen ich das Problem hätte lösen können.
Ich hoffe Ihr könnt mir vielleicht weiterhelfen.
LG
Markus
Hallo,
kannst ja mal testen, müsstest nur noch die Farben anpassen und eventuelle Rahmen einbauen.
Sub Übertragen()
Dim oDic(1)
Dim nCount As Long, MaxRow&
Dim meAr(), meAr_S_M()
For nCount = 0 To 1
Set oDic(nCount) = CreateObject("Scripting.Dictionary")
Next nCount
With Tabelle2
MaxRow = .Cells(.Rows.Count, 3).End(xlUp).Row
meAr = .Range("A3", .Cells(MaxRow, 4)).Value2
meAr_S_M = .Range("M3", .Cells(MaxRow, 13)).Value
End With
For nCount = 1 To Ubound(meAr)
If InStr(";n;x;", LCase(meAr(nCount, 3))) > 0 Then
If oDic(0).exists(meAr(nCount, 1)) Then
oDic(0)(meAr(nCount, 1)) = oDic(0)(meAr(nCount, 1)) & Chr(10) & meAr(nCount, 4)
Else
oDic(0)(meAr(nCount, 1)) = meAr(nCount, 4)
oDic(1)(meAr(nCount, 1)) = meAr_S_M(nCount, 1)
End If
End If
Next nCount
With Tabelle28
MaxRow = .UsedRange(.UsedRange.Rows.Count, 1).Row
If MaxRow > 1 Then
.Range("A2", .Cells(MaxRow, 3)).Clear
If oDic(0).Count > 0 Then
With .Range("A2").Resize(oDic(0).Count)
.Cells.Value = Application.Transpose(oDic(0).keys)
.Cells.Interior.ColorIndex = 4
.Offset(0, 1) = Application.Transpose(oDic(0).items)
.Offset(0, 1).Interior.ColorIndex = 6
.Offset(0, 2) = Application.Transpose(oDic(1).items)
.Offset(0, 2).Interior.ColorIndex = 4
End With
End If
End If
End With
End Sub

Gruß Tino
Hallo,
bin jetzt nicht mehr Online,
hier meine Testdatei zum spielen, hab noch was geändert und hinzugefügt.
https://www.herber.de/bbs/user/69171.xls
Viel Spaß
Gruß Tino
Hallo Tino,
Danke für deine Bemühungen; dein Makro funktioniert echt super; du bist ein wahres Genie !!!
Schönen Abend noch und
LG
Markus

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kopieren zellinhalte mit zeilenumbruch
09.07.2014 09:50:09
Toni
Hallo liebe Tüftler,
kann jemand sich dieser Sache annehmen?
Ich komme einfach nicht drauf, wo die Einschränkung auf 10 Zeilen definiert wird.
Vielen dank im Voraus!
Toni

AW: kopieren zellinhalte mit zeilenumbruch
10.07.2014 17:39:36
fcs
Hallo Toni,
wo jetzt das Problem beim Transponieren des mehrzeiligen Item-Inhalts des Dictionairy-Objektes ist kann ich dir leider nicht sagen. Es funktioniert einfach nicht.
Nachfolgend eine Alternative.
Gruß
Franz
Sub Uebertragen_2()
Dim wks_Q As Worksheet, wks_Z As Worksheet
Dim Zeile_Q As Long, Zeile_Z As Long, StatusCalc As Long
Dim arrQ As Variant, arrZ() As Variant
Dim Zeile As Long, Zeile2 As Long, Spalte As Long
Dim strProbNr As String, strD As String, varMessSerie
Set wks_Q = ActiveWorkbook.Worksheets("Zusammenfassung")
Set wks_Z = ActiveWorkbook.Worksheets("Export")
With wks_Z
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
'Altdaten Löschen
If Zeile_Z >= 2 Then
.Range(.Rows(2), .Rows(Zeile_Z)).Clear
End If
End With
'Quelldaten in Array einlesen
With wks_Q
Zeile_Q = .Cells(.Rows.Count, 1).End(xlUp).Row
arrQ = .Range(.Cells(1, 1), .Cells(Zeile_Q, 14))
'Zeilen in Array als noch nicht verarbeitet markieren
For Zeile = 1 To Zeile_Q
arrQ(Zeile, 14) = False
Next
End With
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
End With
With wks_Z
'Daten für Export zusammenstellen und in Export-Tabelle eintragen
Zeile_Z = 0
ReDim arrZ(1 To Zeile_Q, 1 To 3)
For Zeile = 3 To Zeile_Q
If arrQ(Zeile, 14) = False And (arrQ(Zeile, 3) = "n" Or arrQ(Zeile, 3) = "x") Then
varMessSerie = arrQ(Zeile, 13)
strProbNr = arrQ(Zeile, 1)
strD = arrQ(Zeile, 4)
arrQ(Zeile, 14) = True
For Zeile2 = Zeile + 1 To Zeile_Q
If arrQ(Zeile2, 1) = strProbNr Then
If arrQ(Zeile2, 3) = "n" Or arrQ(Zeile2, 3) = "x" Then
strD = strD & Chr(10) & arrQ(Zeile2, 4)
End If
arrQ(Zeile2, 14) = True
End If
Next Zeile2
Zeile_Z = Zeile_Z + 1
arrZ(Zeile_Z, 1) = strProbNr
arrZ(Zeile_Z, 2) = strD
arrZ(Zeile_Z, 3) = varMessSerie
End If
Next Zeile
'Werte eintragen
.Range(.Cells(2, 1), .Cells(1 + UBound(arrZ, 1), 3)) = arrZ
'Formatieren
With .Range(.Cells(2, 1), .Cells(1 + Zeile_Z, 3))
.VerticalAlignment = xlTop
Call FormatiereBereich(.Cells) 'Rahmen ziehen
End With
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
.EnableEvents = True
End With
End Sub

Anzeige
AW: kopieren zellinhalte mit zeilenumbruch
11.07.2014 08:57:20
Toni
Hallo Franz!
Vielen Dank für deine Mühe, es macht genau das, was ich brauche!
Toni

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige