Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Teil aus einer Zelle in eine andere Kopieren
zurück: Makro in Modul kopieren weiter: OL Posteingang mehrer Konten einlesen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
littnis
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Jan 2009, 15:44
Rufname:

Teil aus einer Zelle in eine andere Kopieren - Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Folgendes Problem stellt sich:

Ein Excel. In einer Zelle wurden Daten (mehrere Zeilen mit ALT - ENTER) eingegeben.

Nun möchte ich aus der Zelle die Zeilen 1 - 24 in eine andere Zelle kopieren. Und dann die nächsten 10 Zeilen und dann wieder die nächsten 10 Zeilen usw. bis es keine Zeilen mehr hat.

Die Anzahl der Zeichen sind verschieden. Ebenfalls befinden sich die Daten in einer Spalte (mehrere Zellen) und deshalb muss die Lösung aus einem Loop bestehen.

Deshalb geht dieses VBA nicht.

Sub range_copy()
'
' range_copy Makro
'
'
Range("B4") = Mid(Range("D4").Value, 1, 24)
Range("B5") = Mid(Range("D4").Value, 25, 10)
Range("B6") = Mid(Range("D4").Value, 35, 10)

End Sub

Wer hat mir eine Lösung für das Problem?
bst
Programmierer


Verfasst am:
21. Jan 2009, 16:35
Rufname: Bernd
Wohnort: Ilsfeld


AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hi,

nimm Split um den Wert einer Zeile zeilenweise zu trennen.

Reicht Dir sowas als Ansatz?

cu, Bernd
--
Code:
Option Explicit

Sub x()
   Dim ar As Variant
   
   ar = Split(Range("D4").Value, vbLf)
   Range("B4").Resize(UBound(ar) + 1).Value = Application.Transpose(ar)
End Sub
littnis
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Jan 2009, 17:20
Rufname:

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Nicht ganz, aber ansatzweise ok.

Das Problem ist, dass jetzt jede Zeile innerhalb der Zelle D4 einzeln ab dem Feld B4 aufsteigend kopiert wird. Also d. h. am Schluss habe ich pro Zeile eine Zelle befüllt.

Das Ziel ist es aber, die erste Zelle B4 mit 24 Zeilen zu befüllen und dann jede weiteren 10 Zeilen z. B. in der Spalte C4 usw.

Danke erstmals für den Ansatz. Hoffe aber noch auf den Rest.
Gast



Verfasst am:
22. Jan 2009, 08:33
Rufname:

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hat jamend noch eine Idee?
bst
Programmierer


Verfasst am:
22. Jan 2009, 10:28
Rufname: Bernd
Wohnort: Ilsfeld


AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Morgen,

sowas vielleicht?

cu, Bernd
--
Code:
Option Explicit

Sub x()
   Dim arTemp As Variant, rngDst As Range, i As Long
   
   arTemp = Split(Range("D4").Value, vbLf)
   
   Set rngDst = Range("B4")
   rngDst.Value = Join(Slice(arTemp, 0, 23), vbLf)
   i = 24
   Do While UBound(arTemp) >= i
      Set rngDst = rngDst.Offset(1)
      rngDst.Value = Join(Slice(arTemp, i, i + 9), vbLf)
      i = i + 10
   Loop
End Sub

Function Slice(ar As Variant, iUnten As Long, iOben As Long) As Variant
   Dim arNeu As Variant, iMin As Long, iMax As Long, i As Long
   
   Slice = Array()
   If IsArray(ar) Then
      iMin = Application.Max(LBound(ar), iUnten)
      iMax = Application.Min(UBound(ar), iOben)
      If iMax >= iMin Then
         ReDim arNeu(0 To iMax - iMin)
         For i = 0 To iMax - iMin
            arNeu(i) = ar(iMin + i)
         Next
         Slice = arNeu
      End If
   End If
End Function
Gast



Verfasst am:
22. Jan 2009, 11:30
Rufname:

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Guten morgen

Ja genau. Nun noch zum Feinschliff:

Im Moment werden nach den 24 Zeilen die nächsten 10 Zeilen unterhalb geschrieben.

Sprich B4, dann B5 und dann B6.

Nun möchte ich, dass das Resultat nebeneinander geschrieben wird, nämlich so B4, C4, D4 usw.

Die Ausgangszelle soll nun nicht mehr die D4 fix sein, sondern die ganze Spalte A.

Somit liest er alle Zellen der Spalte A aus und schreibt die ersten 24 Zeilen in die Spalte B, dann die nächsten 10 Zeilen in die Spalte C usw.

Ich möchte mich aber zuvor schon mal bedanken für den Super Einsatz. Lässig zu so einer Lösung gekommen zu sein.
bst
Programmierer


Verfasst am:
22. Jan 2009, 12:06
Rufname: Bernd
Wohnort: Ilsfeld

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hi,

Zitat:
Nun möchte ich, dass das Resultat nebeneinander geschrieben wird, nämlich so B4, C4, D4 usw.


Ändere:

Code:
Set rngDst = rngDst.Offset(1)


in sowas ab:

Code:
Set rngDst = rngDst.Offset(,1)


Zitat:
Die Ausgangszelle soll nun nicht mehr die D4 fix sein, sondern die ganze Spalte A.


Steht denn dort je Zelle exakt eine Zeile oder können dort auch mehrere Zeilen drin stehen?

Versuche vielleicht mal sowas.

cu, Bernd
--
Code:
Option Explicit

Sub x()
   Dim arTemp As Variant, rngSrc As Range, rngDst As Range, i As Long
   
   Set rngSrc = Range("A1", Range("A1").End(xlDown))
   arTemp = Split(VerkettenBereich(rngSrc, vbLf), vbLf)
   
   Set rngDst = Range("B4")
   rngDst.Value = Join(Slice(arTemp, 0, 23), vbLf)
   i = 24
   Do While UBound(arTemp) >= i
      Set rngDst = rngDst.Offset(, 1)
      rngDst.Value = Join(Slice(arTemp, i, i + 9), vbLf)
      i = i + 10
   Loop
End Sub

Function Slice(ar As Variant, iUnten As Long, iOben As Long) As Variant
   Dim arNeu As Variant, iMin As Long, iMax As Long, i As Long
   
   Slice = Array()
   If IsArray(ar) Then
      iMin = Application.Max(LBound(ar), iUnten)
      iMax = Application.Min(UBound(ar), iOben)
      If iMax >= iMin Then
         ReDim arNeu(0 To iMax - iMin)
         For i = 0 To iMax - iMin
            arNeu(i) = ar(iMin + i)
         Next
         Slice = arNeu
      End If
   End If
End Function

Function VerkettenBereich(r As Range, Optional Delimiter As String = "") As String
   Dim arr As Variant, i&
   
   ReDim arr(1 To r.Count)
   For i = 1 To r.Count
      arr(i) = r(i)
   Next
   VerkettenBereich = Join(arr, Delimiter)
   ReDim arr(0)
End Function
Gast



Verfasst am:
22. Jan 2009, 15:18
Rufname:

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hallo Bernd

Wir sind nahe am Ziel. Es ist nun so, dass wenn ich in der Zelle A1 was drin stehen habe, dann schreibt das Excel nun die Daten wie gewünscht in die Zelle B1 & ff.

Hat es aber in der Zelle A2 auch was drin, dann schreibt er es an den Schluss in der Zeile 1 angefügt an die letzt ausgefüllte Zelle, sofern nicht schon 10 Zeilen in der Zelle abgefüllt sind.

Ziel ist es aber, dass wenn ich in der Zelle A1 was drin habe, dass er dann die Zellen B & ff. befüllt, wenn aber die Zelle A2 auch was drin hat, dass er dann die Zelle B2 & ff. befüllt.

Danke nochmals für die Korrektur.
bst
Programmierer


Verfasst am:
22. Jan 2009, 16:32
Rufname: Bernd
Wohnort: Ilsfeld

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hi,

versuche mal so eine Sub x, die Funktion Slice übernimm von vorhin.

HTH, Bernd
--
Code:
Option Explicit

Sub x()
   Dim arTemp As Variant, rngSrc As Range, rngDst As Range, rngCell As Range, i As Long
   
   Set rngSrc = Range("A1", Range("A1").End(xlDown))
   
   For Each rngCell In rngSrc
      Set rngDst = rngCell.Offset(, 1)
      arTemp = Split(rngCell.Value, vbLf)
      rngDst.Value = Join(Slice(arTemp, 0, 23), vbLf)
      i = 24
      Do While UBound(arTemp) >= i
         Set rngDst = rngDst.Offset(, 1)
         rngDst.Value = Join(Slice(arTemp, i, i + 9), vbLf)
         i = i + 10
      Loop
   Next
End Sub
Gast



Verfasst am:
22. Jan 2009, 18:03
Rufname:

AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Super Lösung, Nun sind wir dort wo wir sein müssen.

Einzig noch:
Ist eine Zelle leer, macht er nicht mehr weiter. Dies wäre noch der letzte Schliff.

Gibt es mehr als 3 leerzellen, dann muss das VBA aufhören.
bst
Programmierer


Verfasst am:
22. Jan 2009, 18:05
Rufname: Bernd
Wohnort: Ilsfeld


AW: Teil aus einer Zelle in eine andere Kopieren - AW: Teil aus einer Zelle in eine andere Kopieren

Nach oben
       Version: Office 2007

Hi,

ändere mal:

Code:
Set rngSrc = Range("A1", Range("A1").End(xlDown))


in:

Code:
Set rngSrc = Range("A1", Range("A" & Rows.Count).End(xlUp))


o.ä.

cu, Bernd
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Zelle soll automatisch farbig sein 14 claudy 3176 19. Jun 2006, 00:03
Gast Zelle soll automatisch farbig sein
Keine neuen Beiträge Excel Formeln: SVERWEIS, Wert aus der nächsten zelle 9 Dave 5483 11. Okt 2004, 13:50
Dave SVERWEIS, Wert aus der nächsten zelle
Keine neuen Beiträge Excel Formeln: Formel kopieren 4 Manfred50 893 24. Sep 2004, 21:31
Manfred50 Formel kopieren
Keine neuen Beiträge Excel Formeln: Letzten drei Ziffern aus einer Zelle filtern?? 7 Ben 3398 23. Sep 2004, 13:39
Gast Letzten drei Ziffern aus einer Zelle filtern??
Keine neuen Beiträge Excel Formeln: Kopieren von Zellen, Problem mit Datumsformatierung 4 Mick 1431 08. Sep 2004, 18:59
Mick Kopieren von Zellen, Problem mit Datumsformatierung
Keine neuen Beiträge Excel Formeln: Autom. Farbänderung einer Zelle. 1 Stefan 66 5197 19. Aug 2004, 14:51
fl618 Autom. Farbänderung einer Zelle.
Keine neuen Beiträge Excel Formeln: Auslesen mehrer Zahlen aus einer Zelle 7 coatin27 3379 11. Aug 2004, 15:18
Arnim Auslesen mehrer Zahlen aus einer Zelle
Keine neuen Beiträge Excel Formeln: Eigabe nur in einer Zelle zulassen 1 pkegelking 1645 11. Aug 2004, 10:42
icke Eigabe nur in einer Zelle zulassen
Keine neuen Beiträge Excel Formeln: Suche Zelle nach einem ähnlichem Wert ab... (wildcart) 2 Ranzi 2538 09. Aug 2004, 18:22
icke Suche Zelle nach einem ähnlichem Wert ab... (wildcart)
Keine neuen Beiträge Excel Formeln: Löschen des Zellinhaltes/von anderer Zelle 2 Gast 1962 07. Aug 2004, 23:32
Gast Löschen des Zellinhaltes/von anderer Zelle
Keine neuen Beiträge Excel Formeln: Hyperlink per VBA kopieren 1 Gast 1118 03. Aug 2004, 16:57
ae Hyperlink per VBA kopieren
Keine neuen Beiträge Excel Formeln: Einfügen des Datei- oder Tabellennamens in eine Zelle 5 Atomteilchen 5024 29. Jul 2004, 12:43
Atomteilchen Einfügen des Datei- oder Tabellennamens in eine Zelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum