Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

nur Zellen und Spalten mit Inhalt kopieren

Forumthread: nur Zellen und Spalten mit Inhalt kopieren

nur Zellen und Spalten mit Inhalt kopieren
04.12.2003 18:48:59
Christian
Hallo VBA-Freunde,

habe letztens schon ein Problem behoben .... Rainer half mir dabei


Private Sub Kopieren()
Dim c As Range
Dim i As Long
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Set wks1 = Worksheets("Tabelle1")
Set wks2 = Worksheets("Tabelle2")
Dim V(1 To 36) As String
Dim R(1 To 36) As String
i = 1
For Each c In wks1.Range("G5:G40")
If c <> "" Then
R(i) = c.Offset(0, -5)     ' Spalte B
V(i) = c                   ' Spalte G
i = i + 1
End If
Next c
For i = 1 To 36
wks2.Cells(i + 4, 4) = R(i)
wks2.Cells(i + 4, 5) = V(i)
Next i
End Sub


Das Problem, das ich habe ist nun jedoch, wenn ich auch gleichzeitig die Spalte H prüfen und kopieren möchte, sollen diese Werte auch in Tabellenblatt zwei geschrieben werden.

Kurz gesagt: Wie kann man nur die belegten Zellen einer Matrix kopieren und gleichzeitig die Zeilen- und Spaltennamen zuweisen und alles in ein neues Tabellenblatt forlaufend einfügen.

-------1------2------3------4

--1--- ----- x ----- ------
--2--- ----- ----- ------ (soll entfallen)
--3--- ----- -----x------
--4--- ----- ----- ------x

Der Rest soll mit Zeilen- und Spaltenüberschriften in gleicher Matrixform in eine beliebige Zelle (nicht A1, z.B.: D5) kopiert werden.

Ich verzweifel hier noch ....... maaaaan ..... Danke für Eure Hilfe.
Gruß Christian
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Meinst du das so?
04.12.2003 21:48:44
Günther Abel

Private Sub Kopieren()
Dim c As Range
Dim i As Long
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Dim V(1 To 36, 1 To 3) As String
Dim V1
Set wks1 = Worksheets("Tabelle1")
Set wks2 = Worksheets("Tabelle2")
For Each c In wks1.Range("G5:G40")
If c <> "" And c.Offset(0, 1) <> "" Then
i = i + 1
V(i, 1) = c.Offset(0, -5)   ' Spalte B
V(i, 2) = c                 ' Spalte G
V(i, 3) = c.Offset(0, 1)    ' Spalte H
End If
Next c
V1 = V()
'   In einem Rutsch, kommt aber als Text....
Range(wks2.Cells(i + 4, 4), wks2.Cells(5, 6)) = V1
'   Oder halt einzeln mit Excel-Anpassung...
'   For i = 1 To 36
'       wks2.Cells(i + 4, 4) = V(i, 1)
'       wks2.Cells(i + 4, 5) = V(i, 2)
'       wks2.Cells(i + 4, 6) = V(i, 3)
'   Next i
End Sub

Anzeige
Fast
05.12.2003 02:04:22
Christian
Oha ... das ging ja fix ... komme jetzt erst wieder zum tippen .... es funkt ....

If c <> "" And c.Offset(0, 1) <> "" Then

Habe lediglich And in Or gesetzt, so dass er alle Zeilen mit Werten mitschleift.

Tausend Dank
Gute N8 Christian

Forumthreads zu verwandten Themen

Anzeige