13k Aufrufe
Gefragt in Tabellenkalkulation von
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

21 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

außerdem wäre es hilfreich, wenn du mal dein vorhandenes Makro hier posten würdest.

Gruß

M.O.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

ein makro wird doch schon eingesetzt,lasse von dem makro die berechnug durchfuehren

gruss nighty
0 Punkte
Beantwortet von berpre Mitglied (452 Punkte)
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
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von berpre Mitglied (452 Punkte)
Hallo Helmut ,

würde dir gerne die Tabellen per E-Mail zur Verfügung stellen.

Gruß Berpre
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

hier z.B. kannst du die Datei hochladen

rapidshare.com/index.html

und den Link hier hinterlegen

Gruß

Helmut
0 Punkte
Beantwortet von berpre Mitglied (452 Punkte)
Hallo Helmut,

hier ist die Datei.

http://rapidshare.com/files/418834123/Kalkul_Test.xls

Gruß Berpre
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von berpre Mitglied (452 Punkte)
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
...