Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

Formeln nicht in Werte umwandeln

Formeln nicht in Werte umwandeln
18.09.2022 11:59:05
Fred
Hallo Excel Experten,
ich hatte die Tage von snb ein "schnelles Makro" erhalten:

Sub vergleich_Auswahl()
sn = Sheets("Live_2").ListObjects(1).DataBodyRange
sp = Sheets("Lager1").ListObjects(1).DataBodyRange
With CreateObject("scripting.dictionary")
For j = 1 To UBound(sp)
.Item(sp(j, 1)) = Array(sp(j, 62), sp(j, 63), sp(j, 64), sp(j, 65), sp(j, 66))
Next
For j = 1 To UBound(sn)
If .Exists(sn(j, 1)) Then
sn(j, 311) = .Item(sn(j, 1))(0)
sn(j, 312) = .Item(sn(j, 1))(1)
sn(j, 313) = .Item(sn(j, 1))(2)
sn(j, 314) = .Item(sn(j, 1))(3)
sn(j, 315) = .Item(sn(j, 1))(4)
End If
Next
End With
Sheets("Live_2").ListObjects(1).DataBodyRange = sn
End Sub
Hier werden Daten aus "Lager1" nach "Live_2" zugeordnet,- wenn der Wert in der ersten Spalte identisch ist. Funzt bisher bestens!
Nun würde ich gerne in "Live_2" Formeln einsetzen. Leider werden diese bei Ausführung des oberen Makros in Werte umgewandelt.
Es gibt nun die Möglichkeit, das ich nach dem Ausführen des Makros die Formel durch ein weiteres Makro wieder eintrage.
Meine Frage:
Läßt sich das Makro von snb dahin ergänzen, das die Formeln in "Live_2" erhalten bleiben?
Gruss
Fred

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

Betreff
Datum
Anwender
Anzeige
AW: Formeln nicht in Werte umwandeln
18.09.2022 12:42:52
ralf_b
welchen Sinn macht es , erst Werte einzutragen und diese dann durch Formeln zu ersetzen?
AW: Formeln nicht in Werte umwandeln
18.09.2022 12:47:08
Fred
Hallo ralf_b,
im Moment habe ich Formeln in "Live_2". Diese werden durch das Makro in Werte umgewandelt.
Kann ich das durch eine Ergänzung des Makros verhindern?
Gruss
Fred
AW: Formeln nicht in Werte umwandeln
18.09.2022 12:51:00
ralf_b
stellt sich die Frage neu nur anders herum. Warum sollte man Formeln mit Werten überschreiben wenn man doch die Formeln behalten möchte?
Schon möglich das du in deinem Arbeitsablauf etwas überdenken müsstest.
AW: Formeln nicht in Werte umwandeln
18.09.2022 12:58:48
Fred
.. glaub mir ralf_b, die "erneuerung"der Werte ist sinnvoll.
Hast du evt. eine Lösung für das Makro?
Gruss
Fred
Anzeige
AW: Formeln nicht in Werte umwandeln
18.09.2022 13:08:27
ralf_b
aus meiner Sicht kann in einer Zelle entweder ein Wert stehen oder eine Formel, die dann einen Wert berechnet.
Evtl. hilft es ja die einzutragenden festen Werte nur mit dem Formelergebnissen zu vergleichen, anstatt die Formeln zu überschreiben.
AW: Formeln nicht in Werte umwandeln
19.09.2022 09:45:10
Yal
Moin Fred,
schnell wird folgendes Code mit Sicherheit nicht mehr (zumdindest nicht mehr so schnell wie snb's Code):

Sub vergleich_Auswahl()
Set LoQ = Sheets("Lager1").ListObjects(1) 'Q wie Quelle
Set LoZ = Sheets("Live_2").ListObjects(1) 'Z wie Ziel
Application.ScreenUpdating = False
With CreateObject("scripting.dictionary")
For Each J In LoQ.ListRows
Set .Item(J.Range(1).Value) = J.Range("A62:A66")
Next
For Each J In LoZ.ListRows
If .Exists(J.Range(1).Value) Then
.Item(J.Range(1).Value).Copy J.Range(311)
End If
Next
End With
End Sub
(unvollständig getestet, wegen unvollständiger Bereitstellung von Test-Material)
Die Formeln vom Quell-Tabelle werden ins ZIel-Tabelle übernommen. Es sollten Formel mit relativen Bezüge sein. Ein =SUMME(Tabelle1[@[Spalte2]:[Spalte3]]) wird sonst unverändert übernommen.
VG
Yal
Anzeige
Tja, erste Fehler gefunden
19.09.2022 10:05:59
Yal
korrigierte Code:

Sub vergleich_Auswahl()
Dim LoQ, LoZ, J
Set LoQ = Sheets("Lager1").ListObjects(1) 'Q wie Quelle
Set LoZ = Sheets("Live_2").ListObjects(1) 'Z wie Ziel
Application.ScreenUpdating = False
With CreateObject("scripting.dictionary")
For Each J In LoQ.ListRows
Set .Item(J.Range(1).Value) = J.Range.Cells(1, 62).Resize(1, 5)
Next
For Each J In LoZ.ListRows
If .Exists(J.Range(1).Value) Then
.Item(J.Range(1).Value).Copy J.Range(2)
End If
Next
End With
End Sub
VG
Yal
AW: Tja, erste Fehler gefunden
19.09.2022 10:27:17
Fred
Yal,
SUPER!!!

.Item(J.Range(1).Value).Copy J.Range(311)
Range"311"
.. und nu passt es.
Vielen DANK !
Gruss
Fred
Anzeige
Vielen Dank für die Rückmeldung
19.09.2022 10:40:20
Yal
Hallo Fred,
ja, auch an der Stelle müsste ich auf meiner Datei anpassen und habe vergessen, zurückzudrehen. Aber Du bist doch ein bischen weiter als "VBA nru mit Rekorder".
Nur ein Frage meinerseits: wie sieht es aus mit Performance?
Und um es zu zuordnen: wieviel Zeile in der Quelltabelle und wieviel in der Ziel?
Ein Credit Point geht an snb für das orignales Coding.
VG
Yal
AW: Vielen Dank für die Rückmeldung
19.09.2022 11:06:00
Fred
Yal,
die Quelle beinhaltet am Wochenende im Durchschnitt 300 Zeilen und die Zieltabelle im Schnitt 200 Zeilen. Beide Tabelle werden alle 2 Minuten aktualisiert.
Das ich nun ohne ein "Dummi-Sheet" die Daten direkt in der Zieltabelle zuordnen kann (ohne das dort in weiteren Spalten Formeln in Werte umgewandelt werden) ist ansich schon Performance-Gewinn.
Gruss
Fred
PS: Nö! Solch Code-Akrobatik wie von Dir, snb und anderen Experten hier im Forum könnte ich wohl nie schreiben ....
Anzeige
Code-Akrobatik
19.09.2022 21:59:33
Yal
;-)
Danke für die Rückmeldung.
Wir haben alle klein angefangen. In diesem Stück Code steckt eine Menge Wissen und Erfahrung über die Excel-Objekte (u.a. Listobject), die weit vom Anfängerlevel sind. Das sollte man nicht als Messlatte nehmen, um sich als "VBA-tauglich" zu bezeichnen. Wenn du verstehst, was da passiert, ist es ein erste gute Schritt.
Aber bleibt dran. Es wird nach und nach kommen:
Lesen, auseinandernehmen, verstehen, nachmachen.
VG
Yal
AW: Formeln nicht in Werte umwandeln
19.09.2022 10:10:19
Fred
Hallo Yal,
wohl in Bezug auf die "Quellspaltenwerte" kommt die Fehlermeldung:
"Ungültiger Prozeduraufruf oder ungültiges Argument"
Gelb:

Set .Item(J.Range(1).Value) = J.Range("A62:A66")
Gruss
Fred
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige