Anzeige
Archiv - Navigation
1876to1880
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
Inhaltsverzeichnis

Bestimmte Werte Kopieren und Einfügen

Bestimmte Werte Kopieren und Einfügen
21.03.2022 11:14:12
Markus
Hallo,
folgende Aufgabenstellung bekomme ich nicht gelöst:
Es müssen Werte aus der Tabelle "Massen" in die Tabelle "1" aufgrund bestimmter Bedingungen kopiert werden.
Wenn D8 auf dem Tabellenblatt "1" identisch ist wie in der Spalte 1 ab Zeile 6 in dem Tabellenblatt "Massen", sollen die Zellen C bis K von dem Tabellenblatte "Massen" in das Tabellenblatt "1" ab der Zeile 13 kopiert werden. Und das natürlich fortlaufend.
Ich hatte es zuerst mit Formeln gemacht (Verweis) aber bei 97 Tabellenblättern hat Excel extram lange gebraucht und auch das Eingeben von Daten wurde erschwert.
Um es zu veranschaulichen, habe ich einen Ausschnitt meiner Datei hochgeladen.
https://www.herber.de/bbs/user/151930.xlsm
Ich hoffe ihr könnt mir helfen.
Mfg Markus

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 11:17:13
Gabo
Moin Markus,
hast du es mal mit Power-Query probiert, sollte einfach machbar sein und du kannst jederzeit erweitern und per Knopfdruck aktualisieren.
Gruß
Gabo
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 13:24:30
Markus
Hallo Gabo,
nein das habe ich noch nicht probiert. Ich wüsste auch garnicht wie so etwas geht. Kannst du mir da vieleicht weiterhelfen?
Gruß Markus
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 12:51:10
UweD
- immer diese Verbundenen Zellen :-( die stören, bzw. machen es wieder kompliziert)
- Teilweise mehr Zeile 001 als Platz im Zielbereich. Was dann? Erweiten? Und dann Später?
- sollen die Formeln kopiert werden, oder nur die Werte?
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 13:38:05
Markus
Hallo UweD,
Ja das mit den verbunden Zellen ist echt doof, aber ich benötige diese unterschiedlichen Designs. (oberen Tabellenbereich und unteren).
Die Formeln sollen nicht mit kopiert werden sondern nur die Werte.
Ich hatte es mal mit der Formel

If Worksheets("Massen").Cells(6, 1).Value = Range("D8") Then
Worksheets("Massen").Range("C6:K6").Copy Destination:=Worksheets("1").Range("A13")
probiert. Aber wie du schon geschrieben hast, gibt es dann das Problem mit den verbundenen Zellen. Ich hätte es dann noch in einen Loop umgebaut.
Gruß Markus
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 14:03:15
UweD
Hallo nochmal
- Also, für Zellen B13- D.. die verbundenen Zellen habe ich aufgehoben (Bedingung). Das sieht auch nicht anders aus.
- Wenn weniger Zeilen im Ziel (hier 15) und mehr Zeilen in der Quelle (bei 001 sind es 18) füre ich die Differenz oben ein und lösche Sie weiter unten
das bleibt aber dann so
- Rechtsclick in den Tabellenblattreiter von Blatt "1"
- Code anzeigen
- den Code dort einfügen

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim Tb1 As Worksheet, TbM As Worksheet
Dim LrM As Integer, Z1 As Integer, ZM As Integer
Dim Anz As Integer, Z1x As Integer, Zus As Integer
Const APPNAME = "Worksheet_Change"
Set Tb1 = Sheets("1")
Set TbM = Sheets("Massen")
Z1 = 13 ' erste Zielzeile
ZM = 6 ' Ab Zeile..
If Not Intersect(Range("D8"), Target) Is Nothing Then
Z1x = Tb1.Cells(Tb1.Rows.Count, "K").End(xlUp).Row 'Zeile mit der Summe
Anz = WorksheetFunction.CountIf(TbM.Columns(1), Target) ' Anzahl gefunden
If Anz > 0 Then
If Anz > Z1x - Z1 Then
Zus = Anz - Z1x + Z1 'Zusätzlich benötigte Zeilen
Application.EnableEvents = False
Tb1.Rows(Z1).Copy
Tb1.Rows(Z1 + 1).Resize(Zus).Insert Shift:=xlDown 'oben einfügen
Tb1.Rows(Z1x + 1 + Zus).Resize(Zus).Delete Shift:=xlUp 'unten löschen
Application.CutCopyMode = False
Application.EnableEvents = True
End If
'Reset Zielbereich
Application.EnableEvents = False
Tb1.Cells(Z1, 1).Resize(Z1x - Z1 + Zus, 11).ClearContents
Application.EnableEvents = True
With TbM
LrM = .Cells(.Rows.Count, "A").End(xlUp).Row 'Letzet Zeile in A
If .FilterMode Then .ShowAllData ' Autofilter alle
.ListObjects("tb_Massen").Range.AutoFilter Field:=1, Criteria1:=Target.Text
Application.EnableEvents = False
'C:D nach A:B
.Cells(ZM, 3).Resize(LrM - ZM + 1, 2).Copy
Tb1.Cells(Z1, 1).Resize(Anz, 2).PasteSpecial Paste:=xlPasteValues
'Ab E
.Cells(ZM, 5).Resize(LrM - ZM + 1, 7).Copy
Tb1.Cells(Z1, 5).Resize(Anz, 1).PasteSpecial Paste:=xlPasteValues
.ShowAllData ' Autofilter alle
Application.EnableEvents = True
End With
Else
MsgBox "Keine Daten für '" & Target.Text & "' gefunden"
End If
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 15:02:18
Markus
Hallo UweD,
muss noch etwas angepasst werden? Wenn ich im VBA Editor F5 drücke zeigt Excel mir kein Makro an, obwohl privat

Sub und End 

Sub vorhanden ist?
Gruß Markus

AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 15:23:42
Markus
Sorry habe nicht drauf geachtet, das es sich um die Funktion "Change" handelt.
Jetzt bekomme ich aber den Fehler:
Fehler in Sub "Worksheet_Change"
Fehlernummer: 1004
Für diese Aktion müssen alle verbundenen Zellen dieselbe Größe haben.
Gruß Markus
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 15:36:16
UweD
Ich hab doch geschrieben, dass die Zellen B13- D xx NICHT verbunden sein dürfen.
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 15:23:52
UweD
Hi
das Makro läuft automatisch ab, wenn du in der Zelle D8 eine Eingabe machst und Enter drückst.
LG UweD
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 16:18:33
Markus
Hallo UweD,
jetzt funktioniert es nur, dass meine Formatierung vom Tabellenblatt 1 zerschossen wird.
Gruß Markus
AW: Bestimmte Werte Kopieren und Einfügen
21.03.2022 16:33:39
UweD
&GT&GTdass meine Formatierung vom Tabellenblatt 1 zerschossen wird.
In wie fern?
meinst du das?
Da bei Eingabe 001 in D8 :18 Zeilen in 15 mögliche Zielzeilen passen sollen, fügt das Makro oben 3 Zeilen ein und löschen 3 unterhalb der Summe weg
Wie möchtest du das anders lösen?
hier deine Originaldatei
- mit der einen Änderung, dass VOR dem ersten Lauf B13:D27 die Zellverbindung aufgehoben wurde
- Das Aussehen verändert sich dadurch nicht
https://www.herber.de/bbs/user/151945.xlsm
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
22.03.2022 08:41:54
Markus
Guten Morgen UweD,
in der Bsp. Datei funktioniert es ja auch.
Bei der originalen Datei ist es so, sobald der Text zu viele Zeichen hat wird der Rahmen entfernt. Es ist noch genügend Freiraum bis zur nächsten Zelle und nach Formatierung ist der Rahmen auch noch vorhanden, aber man sieht ihn nicht und er wird auch nicht mit gedruckt.
Um das Problem besser Darstellen zu können, habe ich in der Datei mal die original Texte eingefügt und auf dem Tabellenblatt "1" die Zeile gelb markiert wo der Fehler aufgetreten ist.
https://www.herber.de/bbs/user/151950.xlsm
Gruß Markus
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
22.03.2022 10:31:58
UweD
Hallo
Der Grund sind 26 Leerzeichen, die an deinem Text angehängt sind.
Mach mal auf Blatt "Massen" in D6

aus     =VERWEIS([@[Pos. Nr.]];Tb_Preis_Werk[Pos. Nr.];Tb_Preis_Werk[Text])
Dieses  =GLÄTTEN(VERWEIS([@[Pos. Nr.]];Tb_Preis_Werk[Pos. Nr.];Tb_Preis_Werk[Text]))
Das wird ja automatisch in die Folgezellen nach unten übernommen
Dadurch werden die Leerzeichen hinten abgeschnitten
LG UweD
AW: Bestimmte Werte Kopieren und Einfügen
22.03.2022 12:42:38
Markus
Hallo UweD,
das hat geholfen. Jetzt habe ich aber noch eine Frage, können wir den Befehl

Set Tb1 = Sheets("1")
dynamisieren? Sprich sobald ich das Tabellenblatt kopiere und umbenenne, das der Befehl auf den neuen Namen reagiert?
Gruß Markus
Anzeige
AW: Bestimmte Werte Kopieren und Einfügen
22.03.2022 14:55:02
UweD
Hi
versuch es mal so

Set Tb1 = ActiveSheet
LG UweD
noch eleganter
22.03.2022 15:41:35
UweD
geht es so
lösche das Makro im Codebereich der Tabelle und füge das hier im Codebereich von "DieseArbeitsmappe" ein
Dann hast du das Makro nur an einer Stelle uns es wird nicht immer mitkopiert

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Fehler
Dim Tb1 As Worksheet, TbM As Worksheet
Dim LrM As Integer, Z1 As Integer, ZM As Integer
Dim Anz As Integer, Z1x As Integer, Zus As Integer
Const APPNAME = "Worksheet_Change"
Set Tb1 = ActiveSheet
Set TbM = Sheets("Massen")
Z1 = 13 ' erste Zielzeile
ZM = 6 ' Ab Zeile..
Select Case Tb1.Name
Case "Preisliste", "Übersicht", TbM.Name
'mach nix
Case Else
If Not Intersect(Tb1.Range("D8"), Target) Is Nothing Then
Z1x = Tb1.Cells(Tb1.Rows.Count, "K").End(xlUp).Row 'Zeile mit der Summe
Anz = WorksheetFunction.CountIf(TbM.Columns(1), Target) ' Anzahl gefunden
If Anz > 0 Then
If Anz > Z1x - Z1 Then
Zus = Anz - Z1x + Z1 'Zusätzlich benötigte Zeilen
Application.EnableEvents = False
Tb1.Rows(Z1).Copy
Tb1.Rows(Z1 + 1).Resize(Zus).Insert Shift:=xlDown 'oben einfügen
Tb1.Rows(Z1x + 1 + Zus).Resize(Zus).Delete Shift:=xlUp 'unten löschen
Application.CutCopyMode = False
Application.EnableEvents = True
End If
'Reset Zielbereich
Application.EnableEvents = False
Tb1.Cells(Z1, 1).Resize(Z1x - Z1 + Zus, 11).ClearContents
Application.EnableEvents = True
With TbM
LrM = .Cells(.Rows.Count, "A").End(xlUp).Row 'Letzet Zeile in A
If .FilterMode Then .ShowAllData ' Autofilter alle
.ListObjects("tb_Massen").Range.AutoFilter Field:=1, Criteria1:=Target.Text
Application.EnableEvents = False
'C:D nach A:B
.Cells(ZM, 3).Resize(LrM - ZM + 1, 2).Copy
Tb1.Cells(Z1, 1).Resize(Anz, 2).PasteSpecial Paste:=xlPasteValues
'Ab E
.Cells(ZM, 5).Resize(LrM - ZM + 1, 7).Copy
Tb1.Cells(Z1, 5).Resize(Anz, 1).PasteSpecial Paste:=xlPasteValues
.ShowAllData ' Autofilter alle
Application.EnableEvents = True
End With
Else
MsgBox "Keine Daten für '" & Target.Text & "' gefunden"
End If
End If
End Select
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
hast du mal über office 365 nachgedacht?
22.03.2022 15:50:18
UweD
dann ginge das ganze ohne VBA mit nur zwei Formeln

A13:     =FILTER(tb_Massen[[Pos. Nr.]:[Text]];tb_Massen[Nr.]=D8;"")
E13:     =FILTER(tb_Massen[[Menge / Stunden]:[GP]];tb_Massen[Nr.]=D8;"")
LG UweD
AW: hast du mal über office 365 nachgedacht?
22.03.2022 15:58:48
Markus
Meine Firma möchte nicht auf 365 umsteigen. Ich bin schon froh, dass wir nicht mehr Office 97 benutzen müssen :-).
Gruß Markus
AW: Bestimmte Werte Kopieren und Einfügen
22.03.2022 15:54:35
Markus
Hallo UweD,
das Funktioniert jetzt, so wie ich es mir vorgestellt habe. Ich danke dir für deine Unterstützung.
Gruß Markus

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige