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

Kopieren von Tabelle1 in Tabelle2

Kopieren von Tabelle1 in Tabelle2
16.02.2004 11:02:27
Torsten K.
Guten Morgen beisammen,
in einer Tabelle1 habe ich im Range (B4:G1269) Daten stehen, die ich selektiert (nach Spalte N4:N1269) - in Tabelle2 kopieren möchte. In Tabelle2 Range("H7")möchte ich das Suchkriterium eingeben (z.B. 110) und über den Code sollen alle Datensätze aus der Tabelle1 Range (B4:G1269), die in der Spalte (N4:N1269) das Suchkriterium aufweisen, in die Tabelle2 Range (B8:G1273) kopiert werden.
Ich hatte erst vorgehabt, den Range (B4:G1269) nach dem Suchkriterium zu filtern und dann den gefilterten Bereich zu kopieren. Ich hab' zwar den Code für das Filtern schon hinbekommen, aber ich denke, das der andere Weg der direktere ist. Oder bin auch auf dem Holzweg?
Kann mir jemand beim Code für das oben beschriebene Kopieren helfen? Als VBA-Einsteiger bin ich da noch etwas überfordert. Vielen Dank im voraus.
Gruß
Torsten

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
16.02.2004 16:37:20
Roland Hochhäuser
Hallo Torsten,
versuchs mal damit:

Sub Kopieren()
Dim i As Integer, j As Integer
j = 8
For i = 4 To 1269
If Sheets("Tabelle1").Range("N" & i) = Sheets("Tabelle2").Range("H7") Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy Destination:=Sheets("Tabelle2").Range("B" & j)
j = j + 1
End If
Next
Application.CutCopyMode = False
End Sub

Gruß
Roland
AW: Kopieren von Tabelle1 in Tabelle2
16.02.2004 17:24:31
Torsten K.
Hallo Roland,
vielen Dank für Deine Rückmeldung.
Den Code habe ich gerade in meine Datei eingebunden und ausprobiert - es passiert leider gar nichts. Ich habe versucht, Deinen Code einmal nachzuvollziehen, kann da aber keinen Fehler entdecken (wäre auch merkwürdig, dann hätt' ich das auch gleich selber machen können :-)).
Kannst Du Dir das nochmal anschauen? Vielen Dank und
Gruß
Torsten
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 09:44:46
Roland Hochhäuser
Hallo Torsten,
der Code sollte das machen, was du als Aufgabenstellung beschrieben hast. Eine denkbare Fehlerquelle wären unterschiedliche Formate der zu vergleichenden Zellen.
Wenn du das nicht selbst findest, dann schieb die Datei einfach mal hoch.
Gruß
Roland
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 10:07:52
Torsten K.
Guten Morgen Roland,
ich bin gerade dabei herauszufinden, warum Dein Code bei mir nicht läuft. Ich habe festgestellt, daß es tatsächlich an der unterschiedlichen Formatierung der Zellen Tab2!H7 und Tab1!SpalteN handelt. Der Code läuft jetzt durch und macht das, was ich mir gewünscht habe.
Ich habe jetzt nur ein Formatierungsproblem, bei dem Du mir behilflich sein könntest:
Hintergrund meiner Anfragen ist eine Kontierungshilfe, die ich unseren Buchhaltungskräften zur Verfügung stellen möchte. Die Kolleginnen sollen eine Kostenstelle eingeben, aus der ein P&L-Code abgeleitet wird, der bestimmt, welche Kostenarten im Zusammenhang mit diesem P&L-Code überhaupt zulässig sind.
Z.B. KST 661052 => P&L-Code 110 / KST 141252 => P&L-Code 112 usw..Mit der Formel ="1"&TEIL(C3;3;2) bekomme ich das zwar hin, aber dann funktioniert Dein Code nicht. Dein Code läuft zur Zeit, weil ich den P&L-Code manuell eingebe, ich möchte aber bei der Ableitung durch die Formel bleiben. Wie kriege ich das denn hin? (Datei habe ich beigefügt).
Dann habe ich noch eine kleine Bitte: Nach dem Kopieren möchte in der letzten Zeile in Tabelle2 Spalte C ein "End of File" stehen haben. Ist das möglich?
Vorab schon einmal vielen Dank für Deine Bemühungen.
Gruß
Torsten
https://www.herber.de/bbs/user/3713.xls
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 11:08:06
Roland Hochhäuser
Hallo Torsten,
wenn du die Formel verwenden willst, kannst du das hier nehmen:
If Sheets("Tabelle2").Range("H7") = "110" Then
For i = 4 To 1269
If Sheets("Tabelle1").Range("N" & i).Value - Sheets("Tabelle2").Range("C5").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Sheets("Tabelle2").Range("C" & J) = "End of File"
End If
M.E. solltest du dir mal grundsätzliche Gedanken über die Tabellenstruktur machen, selbsterklärend ist die nicht.
Gruß
Roland
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 14:01:21
Torsten K.
Hallo Roland,
zunächst mal herzlichen Dank für Deine Hilfe bis hierher. Mit Deinem ergänzten Code kann ich nunmehr auch die Formel drinlassen, so wie ich mir das vorgstellt habe.
Deine Bemerkung bzgl. meiner Tabellenstruktur kann ich nicht ganz nachvollziehen. Auch wenn ich berücksichtige, daß ich es als Ersteller natürlich einfacher habe, mich da reinzudenken, finde ich die Tabellen durchaus strukturiert: Es gibt eine Tabelle, in der die zu filternden Daten drinstehen und eine 2. Tabelle, in der ich die Suchkriterien eingeben (grün unterlegte Felder für den User) und das Ergebnis der Suche abbilden kann. Und beide Tabellen haben im Prinzip den gleichen Aufbau. Da ich aber gerne hinzulerne, kannst Du mir vielleicht die Unstrukturiertheiten, die Du erkannt hast, in 1 oder 2 Sätzen erläutern.
Nachdem Dein Code bis hierher wunderbar läuft, möchte ich mich nun dem nächsten Schritt zuwenden. In Tabelle2 Range("F3") gibt's ein Eingabefeld für den ExpenseType. Diesen gibt's aber nur für die P&L-Codes 108,110,111,112 und 113. Wenn nun der User neben der Kostenstelle, die dann zum P&L-Code führt, auch diesen ExpenseType anführt, sollen in der Liste auch nur die Datensätze angezeigt werden, die dem P&L-Code und dem ExpType (Tabelle2 Range("E6") bzw. Tabelle1 Range E4:E1273) entsprechen.
Frage: Kann man das mit einer Und-Verknüpfung in Deinem Code realsieren oder muß man vorher den Autofilter über die Tabelle1 legen? Ich hoffe, ich bin nicht lästig, aber das sind Dinge, die ich als VBA-Einsteiger (und als diesen sehe ich mich nach wie vor, da ich mich erst seit einem halben Jahr ein wenig mit VBA beschäftige - ein wenig, weil ich als Controller (leider) auch andere Aufgaben habe als VBA) noch nicht selber auf die Beine stellen kann. Allerdings lerne ich durch die Antworten von Euch Profis auch dazu.
Falls Du nun immer noch Lust hast mir zu helfen, habe ich die Tabelle nochmals eingestellt.
Gruß
Torsten
https://www.herber.de/bbs/user/3722.xls
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 16:02:19
Roland Hochhäuser
Hallo Torsten,
ich wollte dir nicht zu nahe treten. Mir ist bei der bisherigen Kopieraktion nur aufgefallen, dass der Zielbereich bereits Daten enthält, die überschrieben werden, wobei dies nur zum Teil geschieht (deshalb wohl auch dein "End of File"). In deiner jetzigen Fassung hast du das geändert.
Mit den inhaltlichen Vorgaben habe ich mich nicht befasst, dazu fehlt mir als (vielleicht etwas besseren) VBA-Laien und einfachen Referenten auch der Background.
Zum Thema selbst setze am Schluss des Makros folgende Zeilen
- schnipp -
Application.CutCopyMode = False
Application.ScreenUpdating = True
Range("B7:G1273").AutoFilter _
Field:=4, Criteria1:=Range("E6").Value, Operator:=xlAnd
End Sub
- schnipp -
Kommt das dem nahe, was du dir vorstellst?
Gruß
Roland
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 17:13:23
Torsten K.
Hallo Roland,
ich hab' mich auch nicht "auf den Schlips getreten" gefühlt :-).
Das der Zielbereich noch Daten enthielt lag einfach daran, daß ich vergessen hatte, ein .clearcontents vor der nächsten Suche zu setzen. Das habe ich geändert.
Und daß Du ein etwas besserer Laie wärst, kann ich nun wirklich nicht bestätigen. Dein erster Entwurf war schließlich genau das, was ich erfragt hatte!!
So, nun zu Deiner Ergänzung: Ich bin etwas unsicher, an welcher Stelle ich das in meinen Code einbinden soll. Du schreibst, daß es am Ende stehen soll. Nur dann ist doch der Kopiervorgang in die Tabelle2 bereits erfolgt, also eigentlich doch zu spät. Es müßte meiner Meinung nach hier hin:
If Sheets("Tabelle2").Range("H7") = "110" Then
Sheets("Tabelle1").Range("B3:G1273").AutoFilter _
Field:=4, Criteria1:=Sheets("Tabelle2").Range("E6").Value, Operator:=xlAnd
For i = 4 To 1269
If Sheets("Tabelle1").Range("N" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
Else
End If
Next
Sheets("Tabelle2").Range("C" & J) = "End Of File"
'Sheets("Tabelle1").ShowAllData
Else
End If
Wenn Du das mal probierst und laufen läßt, sieht man in Tabelle1 zwar, daß Excel richtig gefiltert hat, aber dann doch alle Datensätze kopiert, die in Spalte "N" die 110 aufweisen und nicht die nimmt, die sowohl in Spalte "N" den Code 110 als auch in Spalte "E" den gesuchten ExpensType stehen haben (Bei Code 110 also beide Bedingungen). Ich hätte dann gerne, daß Excel die in Tabelle1 gefilterten Daten in Tabelle2 kopiert. Wär' nett, wenn Du das nochmal prüfen könntest.
Vielen Dank und Gruß
Torsten
(Da ich gleich das Büro verlasse, werde ich erst morgen auf Deine Rückmeldung antworten können - Schönen Abend noch, bis morgen)
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 18:31:02
Roland Hochhäuser
Hallo Torsten,
da der Dateiupload nicht funktionieren will:
Option Explicit
'###108,110,111,112 und 113 zwei Kopierbedingungen, die anderen Felder eine

Private Sub cmb_ACCOUNTSSHOW_Click()
Dim i As Integer, J As Integer
Application.ScreenUpdating = False
J = 8
Sheets("Tabelle2").Range("B8:G1273").ClearContents
Select Case Sheets("Tabelle2").Range("H7")
Case Is = 102
For i = 4 To 1269
If Sheets("Tabelle1").Range("I" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 104
For i = 4 To 1269
If Sheets("Tabelle1").Range("J" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 105
For i = 4 To 1269
If Sheets("Tabelle1").Range("K" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 108
For i = 4 To 1269
If Sheets("Tabelle1").Range("M" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 _
And Sheets("Tabelle1").Range("E" & i).Value - Sheets("Tabelle2").Range("E6").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 109
For i = 4 To 1269
If Sheets("Tabelle1").Range("M" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 110
For i = 4 To 1269
If Sheets("Tabelle1").Range("N" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 _
And Sheets("Tabelle1").Range("E" & i).Value - Sheets("Tabelle2").Range("E6").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 111
For i = 4 To 1269
If Sheets("Tabelle1").Range("O" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 _
And Sheets("Tabelle1").Range("E" & i).Value - Sheets("Tabelle2").Range("E6").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 112
For i = 4 To 1269
If Sheets("Tabelle1").Range("P" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 _
And Sheets("Tabelle1").Range("E" & i).Value - Sheets("Tabelle2").Range("E6").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 113
For i = 4 To 1269
If Sheets("Tabelle1").Range("Q" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 _
And Sheets("Tabelle1").Range("E" & i).Value - Sheets("Tabelle2").Range("E6").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 115
For i = 4 To 1269
If Sheets("Tabelle1").Range("R" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 117
For i = 4 To 1269
If Sheets("Tabelle1").Range("S" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
Case Is = 119
For i = 4 To 1269
If Sheets("Tabelle1").Range("T" & i).Value - Sheets("Tabelle2").Range("H7").Value = 0 Then
Sheets("Tabelle1").Range("B" & i & ":G" & i).Copy _
Destination:=Sheets("Tabelle2").Range("B" & J)
J = J + 1
End If
Next
End Select
Sheets("Tabelle2").Range("C" & J) = "End Of File"
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Gruß
Roland
Anzeige
AW: Kopieren von Tabelle1 in Tabelle2
17.02.2004 18:33:45
Roland Hochhäuser
Bei 108 natürlich L, nicht M
. . .
Case Is = 108
For i = 4 To 1269
If Sheets("Tabelle1").Range("L" & i).Value
. . .
AW: Vielen Dank Roland!
18.02.2004 10:06:52
Torsten K.
Hallo Roland,
ich habe Deinen Code gerade eingebunden und getestet - ist perfekt! Das hätte ich allein natürlich niemals hinbekommen. Deshalb möchte ich Dir an dieser Stelle für Deine Unterstützung (und Deine Geduld) ganz herzlich danken.
Ich wünsche Dir noch eine schöne Woche.
Bis bald mal wieder im Forum.
Viele Grüße
Torsten
Dir auch eine schöne Restwoche :-) oT
18.02.2004 10:32:29
Roland Hochhäuser

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige