online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Berpre vom 08.09.2022, 16:54 Options

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 7 von Saarbauer vom 13.09.2022, 07:25 Options

hallo,

hier z.B. kannst du die Datei hochladen

http://rapidshare.com/index.html

und den Link hier hinterlegen

Gruß

Helmut

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.

Ähnliche Themen

vba kopieren ohne Formel
VBALehrling  14.10.2009 - 357 Hits - 4 Antworten

vba: zelle oberhalb der aktiven zelle suchen
EKG  21.11.2009 - 218 Hits - 3 Antworten

vba: zelle oberhalb der aktiven zelle suchen
EKG  24.11.2009 - 229 Hits - 9 Antworten

Fehler VBA Code -->In bestimmte Zelle kopieren
DOMMEl  03.12.2009 - 202 Hits - 1 Antwort

VBA- letztes Tabellenblatt kopieren
finger59  21.04.2010 - 308 Hits - 5 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026