Microsoft Excel

Herbers Excel/VBA-Archiv

Spalten bzw. Bereiche untereinander kopieren

Betrifft: Spalten bzw. Bereiche untereinander kopieren von: amn.ssy
Geschrieben am: 12.09.2014 14:07:05

Hallo,

ich habe ich ein Problem, das sich vordergründig trivaler anhört es es ist - zumindest für mich.

Ich habe in einer Exceldatei auf einem bestimmten Sheet einen festen Bereich mit Daten (D13-D28,E13-E28,...H13-H28).
Nun benötige ich diese Daten in einer Zieldatei alle in einer Spalte (ab I2)untereinander (unabhängig davon ob in der Zelle etwas steht oder nicht).

Der Workflow sähe also verkürzt so aus: öffne Quelle, hole spltenweise die daten ab d13 bis h28 und scheibe alles untereinander in die spalte i.

Wie gesagt höt sich einfacher an als es ist.
Freu mich über jeden guten Anstz der weiterhilft.

LG
amn

  

Betrifft: Bereiche untereinander kopieren von: Erich G.
Geschrieben am: 12.09.2014 15:11:57

Hi Vorname(?),
aus deinem Beitrag geht nicht hervor, was du eigentlich brauchst - eine Excelformel oder eine VBA-Prozedur
oder ein geschicktes Verfahren zum manuellen kopieren?

Was soll kopiert werden? Die ganzen Zellen (mit allen Eigenschaften)? Nur Werte? Auch Formeln? ...

Durch eine Formel wie die folgende wird die Zielmappe mit der Quellmappe verknüpft:

 I
213x4
314x4
415x4
516x4
617x4
718x4
819x4
920x4
1021x4
1122x4
1223x4
1324x4
1425x4
1526x4
1627x4
1728x4
1813x5
1914x5
2015x5
2116x5
2217x5

Formeln der Tabelle
ZelleFormel
I2=INDEX('[eine Exceldatei.xlsx]bestimmtes Sheet'!D$13:H$28;REST(ZEILE(D16); 16)+1;KÜRZEN(ZEILE(D16)/16))
I3=INDEX('[eine Exceldatei.xlsx]bestimmtes Sheet'!D$13:H$28;REST(ZEILE(D17); 16)+1;KÜRZEN(ZEILE(D17)/16))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

(Formel runterkopieren bis Zelle I81)

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Bereiche untereinander kopieren von: amn.ssy
Geschrieben am: 12.09.2014 15:34:27

Hallo Erich,

vielen Dank für den Tipp mit den Formeln.
In der Tat hatte ich vergessen zu schreiben, daß VBA ganz geschickt wäre und ich auch nur die Werte benötige, aber das mit den Formeln probiere ich in jedem Fall.

amn steht übrigens für
uwe

Gruß und Danke
amn


  

Betrifft: Bereiche untereinander mit VBA von: Erich G.
Geschrieben am: 12.09.2014 23:43:40

Hi Uwe,
zu einer guten Fragestellung gehört meist auch die Darstellung der eigenen Versuche, das Problem zu lösen.

Warum hast du nicht alle Teile, die sich leicht z. B. mittels Makroaufzeichnung erstellen lassen, hier mitgeteilt?
Das Öffnen und Schließen der Quellmappe kann wohl wirklich kein Problem sein...

Zum einen hätte man daran sofort gesehen, dass du eine VBA-LÖsung suchst. Zum anderen stünden im Code
die Namen von Mappen und Blättern, so dass sich der Antworter nicht erst etwas ausdenken muss.

Probier mal (wobei hier überhaupt nicht kopiert wird):

Option Explicit

Sub SpaltenUntereinander()
   Dim arQ, arZ(), zz As Long, cc As Long

   Workbooks.Open "c:\tmp\eine Exceldatei.xlsx", ReadOnly:=True      ' Quellmappe
   arQ = Sheets("auf einem bestimmten Sheet").Range("D13:H28").Value ' Quellbereich
   ActiveWorkbook.Close False

   ReDim arZ(1 To UBound(arQ) * UBound(arQ, 2), 0)                   ' Zielarray
   For zz = 1 To UBound(arQ)
      For cc = 1 To UBound(arQ, 2)
         arZ(UBound(arQ) * (cc - 1) + zz, 0) = arQ(zz, cc)           ' Zielarray füllen
      Next cc
   Next zz                                                           ' Ausgabe
   ThisWorkbook.Sheets("Zieltabelle").Cells(2, 9).Resize(UBound(arZ)) = arZ
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Spalten bzw. Bereiche untereinander kopieren von: Adis
Geschrieben am: 12.09.2014 16:20:55

Hallo

hier eine doppelte Makro Lösung. Je nachdem ob man alles kopieren will,
Bereich D13:D28 usw. mit Formate und Rahmen, oder nur die Zell Inhalte.

Die Ziel Adresse steht in Const und kann beliebig geaendert werden.
Ich habe "L2" genommen falls in "L1" eine Überschrift stehen soll.
Bei Zeile Range(xxx) habe ich Rows.Count + 1 gewaehlt für 1 Leerzeile.
Ohne +1 wird alles untereinander kopiert. Ich bevorzuge 1-2 Leerzeilen.

Const ZAdr = "L2" 'Zelle L1 freigelassen für Überschrift

Sub Bereiche_inSpalte_kopieren()
Dim QTab As Object, ZTab As Object, Zeile As Integer
Set QTab = Sheets("Tabelle1")
Set ZTab = Sheets("Tabelle2")
   'Zeile als Offset für weiteres kopieren
   Zeile = QTab.Range("D13:D28").Rows.Count + 1
   'Kopiere Bereich D13:D28 - H13:H28 -mit Formate- in Ziel Tabelle
   QTab.Range("D13:D28").Copy ZTab.Range(ZAdr)
   QTab.Range("E13:E28").Copy ZTab.Range(ZAdr).Offset(Zeile, 0)
   QTab.Range("H13:H28").Copy ZTab.Range(ZAdr).Offset(Zeile * 2, 0)
   Application.CutCopyMode = False
End Sub
Sub Nur_Werte_inSpalte_kopieren()
Dim QTab As Object, ZTab As Object, Zeile As Integer
Set QTab = Sheets("Tabelle1")
Set ZTab = Sheets("Tabelle2")
   'Zeile als Offset für weiteres kopieren
   Zeile = QTab.Range("D13:D28").Rows.Count + 1
   'Kopiere -nur Werte- von D13:D28 - H13:H28 in Ziel Tabelle
   QTab.Range("D13:D28").Copy
     ZTab.Range(ZAdr).PasteSpecial xlValues
   QTab.Range("E13:E28").Copy
     ZTab.Range(ZAdr).Offset(Zeile, 0).PasteSpecial xlValues
   QTab.Range("H13:H28").Copy
     ZTab.Range(ZAdr).Offset(Zeile * 2, 0).PasteSpecial xlValues
   Application.CutCopyMode = False
End Sub
Gruss Adis


 

Beiträge aus den Excel-Beispielen zum Thema "Spalten bzw. Bereiche untereinander kopieren"