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

Forumthread: Bestimmte Spalten einer Zeite kopieren

Bestimmte Spalten einer Zeite kopieren
16.05.2015 20:05:24
Martin
Hallo liebe Community,
ich bin gerade dabei mir VBA-Kenntnisse anzueignen mit mehr oder weniger Erfolg :)
Denke bei der Sub werden einige den Kopf schütteln, aber ist halt mit meinen geringen Kenntnissen etwas zusammengestückelt.
Gerade stehe ich vor folgendem Problem. Ich habe in Tabelle1 Daten verschiedener Abteilungen und Ressourcen gesammelt. In der Tabelle7 möchte ich, wenn zwei Kriterien erfüllt sind (Kann ich per dropdown ändern), bestimmte Zellen einer Zeile von Tabelle1 per Button kopieren. Die Kriterien sind: KST-A, B, C,.. (Anlagengruppen) und 1,2,3,4 (Anlagengruppen der Aufträge). Ich habe es nun soweit hinbekommen, dass jeweils die ganze Zeile kopiert wird. Ich möchte aber nur B, C, E, F,G kopieren.
Danke schon mal für jede Hilfe.
Option Explicit
Sub DatenAusTabelleKopieren()
Dim Zeile As Long
Dim Zeilemax As Long
Dim n As Long
Dim intOben As Long
Dim intLinksGruppe As Long
intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
Tabelle7.Range("A4:J200").ClearContents
With Tabelle1
Zeilemax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To Zeilemax
If Tabelle7.Cells(1, 4).Value = "KST-A" And .Cells(Zeile, 1).Value = 1 Then
.Rows(Zeile).Copy
Tabelle7.Rows(intOben + n).PasteSpecial xlValues
n = n + 1
ElseIf Tabelle7.Cells(1, 4).Value = "KST-B" And .Cells(Zeile, 1).Value = 2 Then
.Rows(Zeile).Copy
Tabelle7.Rows(intOben + n).PasteSpecial xlValues
n = n + 1
ElseIf Tabelle7.Cells(1, 4).Value = "KST-C" And .Cells(Zeile, 1).Value = 3 Then
.Rows(Zeile).Copy
Tabelle7.Rows(intOben + n).PasteSpecial xlValues
n = n + 1
ElseIf Tabelle7.Cells(1, 4).Value = "KST-D" And .Cells(Zeile, 1).Value = 4 Then
.Rows(Zeile).Copy
Tabelle7.Rows(intOben + n).PasteSpecial xlValues
n = n + 1
End If
Next Zeile
End With
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 11:10:51
Gerd
Hallo Martin,
ich habe unterstellt, dass "vorne" u. am Stück in Tabelle7 eingefügt werden soll.
Sub DatenAusTabelleKopierenII()
Dim Zeile As Long, n As Long, intOben As Long
intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
Tabelle7.Range("A4:J200").ClearContents
With Tabelle1
For Zeile = 2 To .UsedRange.Rows.Count
Select Case Tabelle7.Cells(1, 4).Value
Case "KST-A", "KST-B", "KST-C", "KST-D"
Select Case .Cells(Zeile, 1).Value
Case 1, 2, 3, 4
n = n + 1
Union(.Range(.Cells(Zeile, 2), .Cells(Zeile, 3)), _
.Range(.Cells(Zeile, 5), .Cells(Zeile, 7))).Copy
Tabelle7.Cells(intOben + n, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Select
End Select
Next Zeile
End With
End Sub
Gruß Gerd

Anzeige
AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 12:16:56
Martin
Hallo Gerd,
danke für deine Hilfe, ich habe dein Programm getestet.
Es gibt mir die richtigen Spalten aus, finde ich gut, aber leider für alle Gruppen A,B,C,D / 1,2,3,4 auf einmal, egal was ich in Tabelle 7 einstelle.
Wahrscheinlich hab ich mich auch ungenau ausgedrückt. Immer nur bei KST-A und 1 / KST-B und 2 / usw. sollten die Werte zurückgegeben werden. Denke daran hapert es, oder ich verstehe nicht (kann gut sein), wie er die beiden Werte verheiratet.
Ich habe noch einen Vorschlag von jemand bekommen, der funktioniert.
Wenn du trotzdem prüfst was nicht geklappt hat, sehe ich mir das gerne an.
Gruß,
Martin

Anzeige
AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 15:44:02
Gerd
Hallo Martin,
ich hatte deine Beschreibung nur ungenau gelesen.
Ersetze
Case 1, 2, 3, 4
durch
Case Asc(Right$(Tabelle7.Cells(1, 4).Value, 1)) - 64
Gruß Gerd

AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 16:32:54
Martin
Hallo Gerd,
hab es gleich getestet und es funktioniert bestens :)
Vielen Dank für deine Hilfe,
Martin

Anzeige
AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 11:13:07
Uwe
Hallo Martin,
teste mal so:
Sub DatenAusTabelleKopieren()
Dim Zeile As Long
Dim Zeilemax As Long
Dim n As Long
Dim intOben As Long
Dim intLinksGruppe As Long
Dim rngSpalten As Range
intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
Tabelle7.Range("A4:J200").ClearContents
With Tabelle1
Zeilemax = .UsedRange.Rows.Count
Set rngSpalten = .Range("B:B,C:C,E:E,F:F,G:G")
n = 1
For Zeile = 2 To Zeilemax
If Tabelle7.Cells(1, 4).Value = "KST-A" And .Cells(Zeile, 1).Value = 1 Or _
Tabelle7.Cells(1, 4).Value = "KST-B" And .Cells(Zeile, 1).Value = 2 Or _
Tabelle7.Cells(1, 4).Value = "KST-C" And .Cells(Zeile, 1).Value = 3 Or _
Tabelle7.Cells(1, 4).Value = "KST-D" And .Cells(Zeile, 1).Value = 4 Then
Application.Intersect(rngSpalten, .Rows(Zeile)).Copy
Tabelle7.Cells(intOben + n, 1).PasteSpecial xlValues
n = n + 1
End If
Next Zeile
End With
End Sub
Gruß Uwe

Anzeige
AW: Bestimmte Spalten einer Zeite kopieren
17.05.2015 12:23:27
Martin
Guten Morgen Uwe,
vielen Dank für deine Hilfe, dein Programm funktioniert sehr gut.
Ich bin nicht faul im Googeln und suchen, aber Set rngSpalten habe ich nicht gefunden / gesehen.
Manchmal sucht man auch nach dem falschen, wenn man nicht genau weiß, was.
Gruß,
Martin

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige