Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nicht zusammenhängende Zellen kopieren

nicht zusammenhängende Zellen kopieren
11.05.2005 09:29:33
Harald
Guten Morgen,
nur ne kurze Frage.
Ich hab gaaaaaaaaanz viele Zellen in einer Zeile per vba zu kopieren.
Range("c15:i15, r15, ax15:az15, .....etc gibt einen schönen Dreizeiler und ist jede Menge Tipparbeit, zumal sich im Zuge von Umbaumaßnahmen die Spalten aus denen ich die Daten benötige öfter mal ändern.
Ich frage mich, ob es nicht elegantere Methoden gibt. Die Zeile bleibt immer gleich, nur muss ich aus ca. 120 Spalten 60 unregelmäßig verteilte Werte rauskopieren. Die Verteilung ändert sich manchmal wöchentlich und daher wäre mir eine Lösung lieb, in der ich die 15 nur einmal schreiben muß.
Bitte nicht
i = 15
Range("c" & i & ":i" & i...etc ;-)))
Schätze es geht in Richtung Array. In der vba-Hilfe gabs aber nur den "BillGates-Adler" (Schulterzucken)
Vielen Dank und nette Grüße
Harald

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nicht zusammenhängende Zellen kopieren
11.05.2005 12:07:00
u_
Hallo,
...zumal sich im Zuge von Umbaumaßnahmen die Spalten aus denen ich die Daten benötige öfter mal ändern.
Bleiben die Überschriften gleich?

Sub kopieren()
Dim strRng, Rng As Range, i As Integer, iCol As Integer
'Spaltenüberschriften (viel Spaß beim Tippen ;-))
strRng = Array("Test2", "Test5", "Test9", "Test10", "Test11", "Test14")
With Sheets(1)
For i = 0 To UBound(strRng)
iCol = .Range("1:1").Find(strRng(i)).Column
With .Rows(15)
If Rng Is Nothing Then
Set Rng = .Cells(iCol)
Else
Set Rng = Union(Rng, .Cells(iCol))
End If
End With
Next i
End With
Rng.Copy Sheets(2).Range("a65536").End(xlUp).Offset(1, 0)
End Sub

Gruß
Anzeige
AW: nicht zusammenhängende Zellen kopieren
11.05.2005 12:55:02
Harald
Hi u
boah. Hab ja schon ein bisschen gebraucht, bis ich durchgestiegen bin.
Zum Einen meldet er mir in Zeile
iCol = .Range("1:1").Find(strRng(i)).Column
Cursor vor strRng(i)
Objektvariable nicht festgelegt, zum Anderen ist das mit den Überschriften auch nicht so einfach, da ab Spalte 83 in Zeile 15 Werte stehen, die aus einer 6-stelligen Ziffer (Text) in Zeile 2, 3 oder 4 nach 3 Stellen rechts und 3 Stellen links getrennt sind.
Zu dieser Geschichte hatte ich gestern einen Thread (mit Beispieldatei).
Eine Oracle-Datenbank generiert ein Excelsheet (meine Quelldatei) mit diversen Daten. Dabei gibt es belegte und nicht belegte Spalten.
Ich bin aber mittlerweile zuweit, dass ich wegen der ständigen Änderungen, einen anderen Weg einschlagen wollte.
In meiner Summary trag ich einfach ausnahmslos alle Überschriften ein, blende die nicht benötigten Zeilen aus und kopier aus dieser Quelldatei alle Daten hinein.
Hat nur einen Haken. In dieser Quelldatei passiert es häufiger, das in nicht belegten Spalten dennoch Zahlen größer 0 stehen können, die sich in der Summary bemerkbar machen.
(mistige Oracle-Datenbank)
Das wollt ich abfangen, indem ich in der Summary in alle ausgeblendeten Zellen eine 0 schreibe und per Schleife nur die leeren Zellen füllen lasse.
Da bin ich aber noch am knuspern.
Hmmm...ich glaube nicht, dass das jetzt irgendjemand verstanden hat. ;-))
Nur soviel. Die Array-Lösung bleibt jetzt mal aussen vor.
Trotzdem vielen Dank. Hab den Code gespeichert und werd ihn in einem anderen Projekt (Pareto-Analyse) einsetzen.
Gruß
Harald
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige