online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon finger59 vom 27.11.2019, 17:20 Options

Lösung

VBA- Fehler beim übertragen einer Formel

Hallo Excel-Liebhaber,
in dem nachstehendem Makro habe ich einen Fehler drin, den ich leider nicht gelöst bekomme.
In der Hoffnung das mir jemand weiterhelfen kann.
Es geht darum das eine Formel, die in Zelle C13 steht in die Zeilen ab C20 reinkopiert wird, in denen ein "X" in Spalte A steht.
Das selektieren der korrekten Zeilen funktioniert, aber anstelle der Formel erhalte ich je nachdem was ich an dem Makro ändere entweder den Wert 0 oder =0.
Die Formel ist eine Summenproduktformel. (Nicht das das nachher das ausschlaggebende wäre).

Vielen Dank schon mal an alle vorab die sich die Zeit zum reinschauen genommen haben.
Gruß Helmut

Das Makor wird über eine Befehlsbutton gestartet.


Private Sub CommandButton1_Click()

Dim a As String
Dim i As Long
Dim lz As Long

'letzte Zeile ermitteln
lz = Sheets(1).Cells(Rows.Count, "a").End(xlUp).Row

'Formel auf Variable zuweisen
a = "=" & Cells(13, 3).Value


'Durchlauf
For i = 20 To lz
If Cells(i, 1).Value = "X" Then
Range("c" & i & ":da" & i).Value = a
End If
Next i

'Inhalte einfügen
Range("c20:fz" & i).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("A1").Select
Application.CutCopyMode = False

MsgBox "fertig"
End Sub


Antwort schreiben

Antwort 1 von Denkanstoßer vom 27.11.2019, 17:56 Options

Ho,

anstelle von a = "=" & Cells(13, 3).Value würde ich empfehlen:
a=Cells(13,3).Formula

mfg

Antwort 2 von finger59 vom 28.11.2019, 07:14 Options

Hallo Denkanstoßer,
leider immer noch nicht das gewünschte Ergebnis.
Bei der Änderung kam leider auch nur 0 als Ergebnis raus.
Mit Deiner Änderung habe ich dann nochmal die Zeile...

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=

in

Selection.PasteSpecial Paste:=xlPasteFormulars, ....

geändert und erhalte jetzt zumindest schon mal die Formel
reingestellt.

Allerdings ohne Anpassung der Zellbezüge. Sprich er greift die Formel aus C13 und kopiert die 1:1 in alle selektierten Zeilen.
(d.h. aus $B13 bleibt auch $B13 und wird nicht zu $B20)

Hast Du da evtl. noch eine Idee?
Natürlich auch die Bitte an andere Leser, die mir evtl. da weiterhelfen könnten....

Vielen Dank für die erhaltene Hilfe

Gruß Helmut

Antwort 3 von Denkanstoßer vom 28.11.2019, 12:46 Options

Hi,

das liegt wohl an den 'absoluten Bezügen' in der Ursprungsformel in C13 - entferne das $-Zeichen aus der Formel

mfg

Antwort 4 von finger59 vom 28.11.2019, 15:02 Options

Hallo,

nein.. leider ist das nicht mein Problem... habe es getestet, aber dann werden die Formel in den weiteren Zellen auch falsch gefüllt.

Der Bezug in meiner Formel bezieht sich auf die Spalte B und wenn ich dann das $-Zeichen vor dem B wegnehme, dann würde er beim Füllen der Zeile z.B. in D20 den Bezug auf C20 machen und somit könnte wieder kein Ergebnis rauskommen.

Manuell funktioniert das mit der Formel nur irgendwie kriege ich
es in dem Makro nicht rein.

Problem wie gehabt. Entweder erhalte ich als Wert eine 0, oder meine Formel ohne Anpassung.

Vielen Dank auf jeden Fall für den Tip, auch wenn er leider nicht mein erhofftes Resultat brachte.

Gruß Helmut

Antwort 5 von DukeNT vom 28.11.2019, 15:20 Options

Hallo Helmut,
schreib doch mal wie deine Summenprodukt-Formel in C13 aussieht und wie die Formel dann in z.B. Zelle C20 und D20 aussehen soll.
Gruß Niels

Antwort 6 von finger59 vom 28.11.2019, 15:44 Options

Hallo Niels,

in der Zelle C13 im Arbeitsblatt erfasste Werte steht diese Formel:

=SUMMENPRODUKT(('alle Daten'!$A$2:$A$1000='erfasste Werte'!$B13)*('alle Daten'!$C$2:$C$1000='erfasste Werte'!C$19)*('alle Daten'!$F$2:$F$1000))


Mein bisheriges Problem ist, je nachdem was ich im Makro eingebe, ob Values oder Formulas erhalte ich den Wert 0 oder die Formel, so wie sie oben steht.

Formel in C20 sollte dann sein:

=SUMMENPRODUKT(('alle Daten'!$A$2:$A$1000='erfasste Werte'!$B20)*('alle Daten'!$C$2:$C$1000='erfasste Werte'!C$19)*('alle Daten'!$F$2:$F$1000))

Formel in D20 sollte dann identisch mit C20 sein.

Wenn ein "X" wieder in Zelle A22 stehen sollte dann:

=SUMMENPRODUKT(('alle Daten'!$A$2:$A$1000='erfasste Werte'!$B22)*('alle Daten'!$C$2:$C$1000='erfasste Werte'!C$19)*('alle Daten'!$F$2:$F$1000))

Die Fettmarkierten Zahlen dürften sich nur anpassen, der Rest müsste bleiben.

Vielen Dank für Deine Anfrage.

Gruß Helmut

Antwort 7 von DukeNT vom 28.11.2019, 16:20 OptionsLösung

Lösung
Ok änder die Formal in C13 mal wie folgt:
=SUMMENPRODUKT(('alle Daten'!$A$2:$A$1000='erfasste werte'!$B13)*('alle Daten'!$C$2:$C$1000='erfasste werte'!$C$19)*('alle Daten'!$F$2:$F$1000))

den Teil:
Zitat:
'Inhalte einfügen
Range("c20:fz" & i).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
verstehe ich nicht. Du kopierst Bereich C20 bis z.B. FZ40 und überschreibst den gleichen Bereich wieder?
Den Teil hab ich erstmal weg gelassen.
Versuch mal folgenden Code:

Private Sub CommandButton1_Click()
Dim a As String
Dim i As Long
Dim lz As Long
'letzte Zeile ermitteln
lz = Sheets(1).Cells(Rows.Count, "a").End(xlUp).Row
'Durchlauf
For i = 20 To lz
If Cells(i, 1).Value = "X" Then
Cells(13, 3).Copy Destination:=Cells(i, 3)
Cells(i, 3).Copy Destination:=Range("d" & i & ":da" & i)
End If
Next i
Range("A1").Select
Application.CutCopyMode = False
MsgBox "fertig"
End Sub

Gruß Niels

Antwort 8 von finger59 vom 28.11.2019, 16:35 Options

Hi Niels....

vielen vielen Dank.

Jetzt sieht das Ergebnis als Formeleintragung wie gewünscht aus und alle Daten werden entsprechend richtig gerechnet.

Endlich ! Vielen vielen Dank...

Allerdings...
den festen Bezug in $C$19 habe ich wieder auf C$19 geändert, weil dort ja einer der beiden Suchfaktoren für das andere Arbeitsblatt steht.

Warum ich die eingetragene Formel gleich wieder gelöscht haben wollte... nun, das ist eine Frage des Arbeitsspeichers, der in der Vergangenheit bei meinen Versuchen in die Kniee gegangen ist.

Ich wollte die Formel eintragen lassen und dann mit kopieren und Inhalte einfügen - Werte nur noch die Zahl stehen lassen, so daß der Arbeitsspeicher nicht wirklich belastet wird, zumal die Datei mit den vermehrten Formeleinträgen sich unnötig aufbläht. Aber das kriege ich jetzt auch noch gelöst in dem ich einfach den gesamten Tabellenbereich markiere und dann mit Inhalte einfügen - Werte drübergehe.

Vielen Dank all denjenigen die an meinem Problem mitgeholfen oder einfach nur teilgehabt haben und vielleicht konnte mein Problem ja auch das von einem anderen Excel-User mit gelöst haben.

Gruß Helmut

Ähnliche Themen

Wenn-Formel
JoeKe  25.10.2006 - 15888 Hits - 3 Antworten

daten mit leerzeilen untereinander schreiben
manzur  18.01.2007 - 89 Hits - 2 Antworten

VBA Datentyp - 2 Nachkommastellen
Catze  22.08.2007 - 32 Hits - 2 Antworten

Eingabe auf Formel anwenden
Fighter_XP  08.09.2007 - 41 Hits - 1 Antwort

Formel per VBA in Zelle schreiben
Kauz  17.04.2008 - 82 Hits - 2 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