Zelle mit Formel mit VBA in ein anderes Tabellenblatt kopieren
Hallo,
Ich brauche Eure Hilfe!
Eine Excel Quell Tabelle 1 wird mittels VBA Code Markierung ( „X“ in Spalte „ E „ ) in eine Ziel Excel Tabelle 2 ohne Lücken untereinander kopiert.
In den Zellen von Tabelle 1 = ( Spalte „ D „ ) ist eine Summenberechnung mittels Formel hinterlegt. Format dieser Spalte „ D „ ist Währung.
Diese kopierten Zellen werden in der Ziel Excel Tabelle 2 automatisch angelegt, wobei in der Spalte „ D „ der Wert in den einzelnen Zellen falsch wiedergegeben wird. (falsche Formel und mit den falschen Zellwerten ).
Die Spalte „ A „ der Quell Excel Tabelle 1 ist eine eindeutige Zuordnung und wiederholt sich nicht.
Meine Frage:
Wie ist dies zu realisieren, dass die Zellinhalte in der Spalte „ D „ in der Ziel Excel Tabelle 2 richtig wiedergegeben werden?
Gruß berpre
Antwort schreiben
Antwort 1 von Saarbauer vom 08.09.2022, 20:39 Options
Hallo,
aus meiner Sicht hängt dasganze mit deiner Summenberechung zusammen. Da wir aber nicht wissen wie diese aufgebaut ist, können wir auch keinen Lösungsvorschlag machen
Gruß
Helmut
Antwort 2 von M.O. vom 09.09.2022, 08:40 Options
Hallo,
außerdem wäre es hilfreich, wenn du mal dein vorhandenes Makro hier posten würdest.
Gruß
M.O.
Antwort 3 von nighty vom 09.09.2022, 10:36 Options
hi all :-)
ein makro wird doch schon eingesetzt,lasse von dem makro die berechnug durchfuehren
gruss nighty
Antwort 4 von Berpre vom 12.09.2022, 19:56 Options
Hallo M.O.
Sorry, habe einen Fehler gemacht und einen neuen Thread geöffnet.
Hallo M.O.
Quellcode in der Quell Excel Tabelle 1:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'im Klassenmodul des Blattes "Daten"
Dim rngVeränderung As Range
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim rngSuche As Range
Set wsQuelle = Worksheets("Daten")
Set wsZiel = Worksheets("Beschläge")
If Not Intersect(Target, Columns("E")) Is Nothing Then
For Each rngVeränderung In Intersect(Target, Columns("E"))
If UCase(rngVeränderung) = "X" Then 'Wenn ein "X" gesetzt wurde
'Prüfen, ob Wert in Zieltabelle vorhanden
With wsZiel
Set rngSuche = .Columns("A").Find(wsQuelle.Cells(rngVeränderung.Row, 1), lookat:=xlWhole)
End With
If rngSuche Is Nothing Then 'Wenn Wert aus Spalte A nicht gefunden wurde...
With wsQuelle
.Cells(rngVeränderung.Row, "A").Resize(, 4).Copy _
Destination:=wsZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End With
Else 'Datensatz existiert bereits
MsgBox "Der Datensatz " & wsQuelle.Cells(rngVeränderung.Row, 1) & " existiert bereits!"
End If
ElseIf IsEmpty(rngVeränderung) Then 'Wenn das "X" gelöscht wurde bzw. die Zelle leer ist
'Prüfen, ob Wert in Zieltabelle vorhanden ist
With wsZiel
Set rngSuche = .Columns("A").Find(wsQuelle.Cells(rngVeränderung.Row, 1), lookat:=xlWhole)
End With
If Not rngSuche Is Nothing Then 'Wert gefunden
rngSuche.EntireRow.Delete
End If
End If
Next rngVeränderung
End If
Set rngSuche = Nothing
Set wsZiel = Nothing
Set wsQuelle = Nothing
End Sub
Gruß Berpre
Antwort 5 von Saarbauer vom 12.09.2022, 20:36 Options
Hallo,
aus dem Makro ist der Fehler nicht zu erkennen, da hier nur geprüft wird ob der Datensatz vorhanden ist und wenn dies nicht der Fall ist wird er in die andere Tabelle kopiert.
Gruß
Helmut
Antwort 6 von Berpre vom 12.09.2022, 20:43 Options
Hallo Helmut ,
würde dir gerne die Tabellen per E-Mail zur Verfügung stellen.
Gruß Berpre
Antwort 8 von Berpre vom 13.09.2022, 18:20 Options
Hallo Helmut,
hier ist die Datei.
http://rapidshare.com/files/418834123/Kalkul_Test.xls
Gruß Berpre
Antwort 9 von Saarbauer vom 13.09.2022, 21:15 Options
Hallo,
das Problem ist ganz einfach da du deine Daten einschlielich Formel von "Daten" nach "Beschläge" kopierst kann er in der Formel die Daten nicht mehr finden. deine Formel sucht auf dem Blatt Beschläge die Daten.
Daher habe ich mit deine Kopierformel etwas ergänzt
If rngSuche Is Nothing Then 'Wenn Wert aus Spalte A nicht gefunden wurde...
With wsQuelle
.Cells(rngVeränderung.Row, "A").Resize(, 4).Copy _
Destination:=wsZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
wsZiel.Cells(Rows.Count, 4).End(xlUp).Formula = "=IF(RC[-2],VLOOKUP(RC[-3],Daten!R2C1:R18C4,4,FALSE))"
End With
damit müsste es gehen
Gruß
Helmut
Antwort 10 von Berpre vom 13.09.2022, 22:07 Options
Hallo Helmut,
kannst Du mir anzeigen wo diese Zeilen sinnvollerweise eingesetzt werden?
Oder diese Zeilen in die Beispieldatei einsetzen und mir diese zusenden?
Gruß Berpre
Antwort 11 von Berpre vom 13.09.2022, 22:22 Options
Hallo Helmut,
ich hatte bei dem Versuch deine Zeilen einzusetzen, nicht abgespeichert.
Mit Deiner Zeile funktioniert dies nun so wie ich es gewünscht habe hervorragend.
Helmut allerbesten Dank
Gruß Berpre
Antwort 12 von Berpre vom 14.09.2022, 13:49 Options
Hallo Helmut,
Eine Nachfrage zu der Tabelle.
Das Tabellenblatt " Daten" möchte ich gerne in "Daten-Tabelle 1" und "Daten-Tabelle 2" aufteilen.
Tabelleninhalt von "Daten" in 2 Tabellen aufteilen.
Was muß ich eingeben? wie heißt dies in Deiner Formel?
Gruß Berpre
Antwort 13 von Saarbauer vom 14.09.2022, 14:22 Options
Hallo,
ich hoffe ich habe es richtig verstanden, deine Daten stehen in 2 Tabellen und sollen Entsprechd aus diesen Tabellen genommen werden.
Gruß
Helmut
Antwort 14 von coros vom 14.09.2022, 14:40 Options
Hallo Helmut,
ich habe das so verstanden, dass er ein Tabellenblatt (Daten) hat und dieses in 2 Tabellenblätter (Daten-Tabelle 1 und Daten-Tabelle 2) teilen möchte.
@Berpre: Nach welchem Kriterium sollen denn die Daten aufgeteilt werden?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von Berpre vom 14.09.2022, 15:22 Options
Hallo Helmut,
Hallo Oliver,
Tabellenblatt in Zwei Tabellenblätter ( Daten-Tabelle 1 und Daten-Tabelle 2 ) aufteilen, wie Oliver beschrieben hat.
Die Spalte „ A „ der Tabelle " Daten" hat und ist eine eindeutige Zuordnung und wiederholt sich nicht. ( 6 stellige Nummer) bei Kleiner als 6 Stellen werden führende Nullen vorangestellt )
Damit die Anzahl der Zeilen in einer Tabelle nicht so groß wird möchte ich diese aufteilen in Gruppen ( z.B. "Tabelle 1" 1 Gruppe, auswählen von Nummer bis Nummer. Tabelle 2 dito.) eventuell mehr.
Gruß Berpre
Antwort 16 von Saarbauer vom 14.09.2022, 21:03 Options
Hallo,
schlage vor du stellst eine entsprechende Beispieldatei ein.
Gruß
Helmut
Antwort 17 von Berpre vom 16.09.2022, 13:41 Options
Hallo Helmut,
entschuldige, bin erst jetzt zu Deiner Beantwortung gekommen.
Ich habe die Beispieldatei hier abgelegt:
http://rapidshare.com/files/419374089/Kalkul_Test_1_.xlsm
für deine Hilfe besten Dank
Gruß Berpre
Antwort 18 von coros vom 16.09.2022, 17:52 Options
Hallo Berpre,
auch wenn ich nicht Helmut bin möchte ich Dir trotzdem mal eine Lösung präsentieren.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche.
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Kopieren()
Dim lngRow As Long
Dim lngFirstRow As Long
For lngRow = 2 To Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row
Select Case Sheets("Daten").Cells(lngRow, 1)
Case 1 To 199999
lngFirstRow = Sheets("Daten_Gruppe1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheets("Daten").Rows(lngRow).Copy _
Sheets("Daten_Gruppe1").Cells(lngFirstRow, 1)
Case 200000 To 399999
lngFirstRow = Sheets("Daten_Gruppe2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheets("Daten").Rows(lngRow).Copy _
Sheets("Daten_Gruppe2").Cells(lngFirstRow, 1)
End Select
Next
End Sub
Mit dem Makro werden die Daten entsprechend Deinen Vorgaben in die Blätter aufgeteilt. Bei weiteren Kriterien, einfach die" Anweisung Case" kopieren, unter der letzen "Case-Anweisung" einfügen und anpassen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 19 von Berpre vom 16.09.2022, 21:19 Options
Hallo Oliver
besten Dank für Deine Lösung.
Da ich kein großer VBA Kenner bin, bitte ich Dich, Deine Lösung eventuell in meine Beispiel-Datei einzuarbeiten und stellst diese entsprechende Beispieldatei im Netz ein.
Gruß Berpre
Antwort 20 von coros vom 17.09.2022, 05:48 Options
Hallo Berpre,
da Du in Deinen Fragen bzw. Antworten Makros erwähnt bzw. aufgeführt hast, bin ich davon ausgegangen, dass Du darin etwas fit bist.
Lade Dir die Datei unter
http://www.excelbeispiele.de/Beispiele_Supportnet/Kalkul_Test_1_.xlsm herunter.
Alternativ kannst Du aber auch mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nachlesen. Dort stelle ich eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird, das Makro selber in Deine Datei einzufügen..
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.