Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
148to152
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
148to152
148to152
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formelvariable

Formelvariable
23.08.2002 13:54:03
Michael
Hallo,

ich möchte einer Variablen eine Formel zuweisen
z.B. V = WENN(AN8="";"";HEUTE()-AN8)
(V ist die Variable) Wie muß ich vorgehen um die Variable später leicht in VBA einsetzten zu können.
Gruß
Michael

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Formelvariable
23.08.2002 14:22:25
Gabor
Hi,

ich glaube das geht nicht ... Aber du kannst Tabellenfunktionen mit Application.WorksheetFunction benutzen in VBA.

Gruß

Gábor

Re: Formelvariable
23.08.2002 14:22:54
Charlie
Hallo Michael,

wenn Du das in einer Tabelle machen willst, geht es nur indem Du einen Namen "V" festlegst und die Formel als "Bezieht sich auf:" eingibst. Also Menü "Einfügen" - "Namen" - "Definieren" und die Formel =WENN(Tabelle1!$AN$8="";"";HEUTE()-Tabelle1!$AN$8)

Mit VBA kannst Du dann wie folgt auf diesen Namen zugreifen:

Viel Erfolg,
Charlie

Re: Formelvariable
23.08.2002 17:57:11
Michael
Danke für die Antworten, ich glaub ich hab mich nicht gut ausgedrückt.
Ich möchte über VBA in ganz bestimmte Zellen eine "Wenn-Formel" eintragen lassen.

Gruß Michael

Anzeige
Re: Formelvariable
23.08.2002 18:05:45
Charlie
Hallo Michael,

Viel Erfolg,
Charlie

Re: Formelvariable
23.08.2002 18:39:06
Michael
Der Ansatz ist schon super, allerdings muß sich die Eingabe auf die Spalte AN der jeweiligen Zeile - also nicht AN8 - beziehen

Vielen Dank für die Antworten

Michael

Re: Formelvariable
23.08.2002 19:05:04
Charlie
Hallo Michael,

dann wäre es aber gut, wenn Du zumindest jetzt mit den Details zu Deiner Problemstellung rüberkommen würdest. In welche Zellen sollen diese Formeln mit Bezug auf die Zeilzeile eingetragen werden. Vielleicht kann man das auch ganz bequem und elegant mit einer Schleife lösen.

Aber immer irgend etwas zu basteln, das dann wieder haarschaf am richtigen Ergebnis vorbeigeht, macht nicht wirklich Spaß. Patentlösungen gibt es selten und zu erahnen, was Du tatsächlich brauchst, ist schwierig.

Gruß,
Charlie

Anzeige
Re: Formelvariable
23.08.2002 19:50:29
Michael
Hallo Charlie,
Tabellenblatt 1 hat in jeder Zeile (ca. 500 Zeilen) einen Artikel der verschiedene Ereignisse (ca. 50 Spalten) durchläuft.
In diesem Tabellenblatt kann ich per Makro verschiedene Abfagen machen. Die meisten Zellen enthalten ein Datum manche eine Formel die eine neues Datum aus vorhandenen errechnet (z.B. Datum der letzten Aktivität =WENN(MAX(AV22;AQ22;AP22;AL22;AJ22)=0;"";MAX(AV22;AQ22;AP22;AL22;AJ22))
Tabellenblatt 2 enthält importierte "Rohdaten". Ich bastle grad an einem Makro das diese Daten in Tabellenblatt 1 übernimmt (Schleife). Klappt auch soweit.
Nun möchte ich aber, dass auch die Zellen die keine Daten aus dem Importblatt erhalten mit den entsprechenden Formeln belegt werden. Dies ist dann wichtig, wenn durch den Import eine Neue Zeile hinzugefügt wird - die Formeln würden in dieser Zeile fehlen. Ich hoffe mit meiner Beschreibung ist was anzufangen.

Gruß Michael

Anzeige
Re: Formelvariable
24.08.2002 14:50:26
Michael
Hallo Charlie, ich habs nachfolgend nochmal ausführlicher beschrieben:
Tabellenblatt 1 hat in jeder Zeile (ca. 500 Zeilen) einen Artikel der verschiedene Ereignisse (ca. 50 Spalten) durchläuft.
In diesem Tabellenblatt kann ich per Makro verschiedene Abfagen machen. Die meisten Zellen enthalten ein Datum manche eine Formel die eine neues Datum aus vorhandenen errechnet (z.B. Datum der letzten Aktivität =WENN(MAX(AV22;AQ22;AP22;AL22;AJ22)=0;"";MAX(AV22;AQ22;AP22;AL22;AJ22))
Tabellenblatt 2 enthält importierte "Rohdaten". Ich bastle grad an einem Makro das diese Daten in Tabellenblatt 1 übernimmt (Schleife). Klappt auch soweit.
Nun möchte ich aber, dass auch die Zellen die keine Daten aus dem Importblatt erhalten mit den entsprechenden Formeln belegt werden. Dies ist dann wichtig, wenn durch den Import eine Neue Zeile hinzugefügt wird - die Formeln würden in dieser Zeile fehlen. Ich hoffe mit meiner Beschreibung ist was anzufangen.
Gruß Michael
Anzeige
Re: Formelvariable
24.08.2002 15:36:50
Charlie
Hallo Michael,

ich blicke leider nicht durch:
1) Die Formel, die Du gepostet hast, steht in Tabelle 1, richtig?
2) Der Verweis auf die einzelnen Zellen bezieht sich immer auf die Zeile, in der die Formel steht. Auch richtig?
2) Wie übernimmst Du die Daten aus dem Blatt 2? Werden die Werte durch Deine Schleife in das Blatt 1 kopiert oder werden Bezüge zu den Quelldaten eingetragen, die die Werte nur übernehmen?
3) Wenn Du die Daten mit der Schleife von Blatt 2 nach Blatt 1 kopierst, warum lässt Du nicht gleich die Leerzeilen in Blatt 2 unberücksichtigt?
4) Wozu sollen Leerzeilen im Blatt 1 überhaupt gut sein? Was sollen die Formeln darin?
5) Wie sieht die Schleife derzeit aus?

Sorry, aber ich kann mir Dein Vorhaben nicht wirklich vorstellen. Daher ist es mir auch nicht möglich, einen vernünftigen Ansatz zu finden.

Gruß,
Charlie

Anzeige
Re: Formelvariable
25.08.2002 13:11:07
Michael
Hallo Charlie,

erst mal vielen Dank dass du dir die Mühe machst.
Ich übertrage per Makro einfach Datumseinträge von Blatt 2 in mein Originalblatt 1 (keine Bezüge sondern fester Eintrag) nun möchte ich einfach, dass zwischendrin in eine Zelle die Formel eingetragen wird die dann das Datum der letzten Aktivität errechnet.

Spalte A = Kennnummer
Spalte B = 1. Datum
Spalte C = 2. Datum
.
.
.
Spalte X = Formel
.
.
und das ganze Zeile für Zeile

Die Formel soll über das Makro mit einfliesen, damit sichergestellt ist, dass jede Zeile auch wirklich die Formel erhält.

Wenn du nicht klar kommst vergiß einfach alles, ich habe dir schon zu viel Mühe bereitet. Vielen Dank für alles.

Gruß

Michael

Anzeige
Re: Formelvariable
25.08.2002 14:02:45
Charlie
Hallo Michael,

ich verstehe Dich wirklich nicht. Du fragst nach Rat bzw. Hilfe und hoffst scheinbar auf hellseherische Fähigkeiten der Forumsteilnehmer. Selbst auf Rückfragen bist Du nicht bereit, die notwendigen Details und Infos zu liefern, nein: nur das Unvermeidbare wird preisgegeben. Wären alle hier im Forum so geizig mit der Preisgabe Ihres "geistigen Eigentums", dann könnte das Forum wahrscheinlich seine Pforten schließen.

"Ich übertrage per Makro einfach Datumseinträge von Blatt 2 in mein Originalblatt 1 (keine Bezüge sondern fester Eintrag)"
--> soweit ist es klar.

"Nun möchte ich einfach, dass zwischendrin in eine Zelle die Formel eingetragen wird die dann das Datum der letzten Aktivität errechnet."
--> Wie und wo "zwischendrin"? Woher soll ich wissen, wie Du die Bereiche abklapperst und die Daten überträgst und wo daher vielleicht (oder vielleicht auch nicht?) die Formel eingetragen werden soll?

"Spalte X = Formel" --> Genau das ist ja die große Preisfrage: Wie soll ich (zum zigsten Mal) wissen, wohin die Formel kommen soll?

"und das ganze Zeile für Zeile" --> Ohne zu wissen, wie Deine Schleife aussieht, könnte ich wieder einmal nur raten. Wir sind hier aber in einem Excelforum und nicht in einer Quizshow.

"Die Formel soll über das Makro mit einfliesen, damit sichergestellt ist, dass jede Zeile auch wirklich die Formel erhält." --> Hier passen eigentlich alle Anmerkungen von oben bzw. alle Fragen meiner vorherigen Rückfrage, ich wiederhole mich nicht.

Wenn Du Deine VBA-Geheimnisse weiterhin hüten willst wie Deinen Augapfel, dann tut es mir leid. Mehr als Nachbohren kann und will ich nicht. Warum sollte ich mir die Mühe machen, irgend etwas annehmen und programmieren, das dann so wie meine bisherigen Ansätze doch wieder haarscharf am Problem vorbeigeht?

"Wenn du nicht klar kommst vergiß einfach alles, ich habe dir schon zu viel Mühe bereitet. Vielen Dank für alles." --> Du machst scheinbar nicht nur Dir, sondern auch den Helfern hier im Forum das Leben schwerer, als es ohnehin schon ist. Wie easy es ist, Dir nach Deinen überschwenglichen Problembeschreibungen zu helfen, zeigen auch die massenhaften Reaktionen auf Dein Posting.

Sorry Michael, aber so werden wir wohl auf keinen grünen Zweig kommen: Ich will in meiner Schleife, die irgend etwas von irgend woher kopiert, irgend eine Formel in irgend eine Zelle schreiben und das Zeile für Zeile, die aus irgend welchen Datumswerten irgend ein anderes Datum errechnet. Klarer geht's wohl nicht.

Gruß,
Charlie

Anzeige
Re: Formelvariable
25.08.2002 17:56:05
Michael
Hallo Charlie,
nachfolgend ein Ausschnitt meines Makros:
Sub DatenUebertragen()
'Dim rng As Range
Worksheets("Arbeitsblatt").Activate
Dim wksQ As Worksheet, wksZ As Worksheet
Dim SuBe As Range, C As Range
Dim s As String
Dim i As Long, ZanzQ As Long, ZanzZ As Long, laR2 As Long, _
laR3 As Long, frR As Long
Dim platz As Boolean
Set wksQ = ThisWorkbook.Worksheets("rohdaten")
Set wksZ = ThisWorkbook.Worksheets("Arbeitsblatt")
ZanzQ = wksQ.Cells(Rows.Count, 1).End(xlUp).Row 'Zeilenanzahl Quelle
ZanzZ = wksZ.Cells(Rows.Count, 1).End(xlUp).Row 'Zeilenanzahl Ziel
For i = 3 To ZanzQ

s = wksQ.Cells(i, 1).Value
With wksZ
Set SuBe = .Range(.Cells(3, 1), .Cells(ZanzZ, 1)). _
Find(s, lookat:=xlWhole) 'Kom. Nr. Spalte durchsuchen
If Not SuBe Is Nothing Then 'wenn Nr. gefunden übertragen von
'.Cells(SuBe.Row, 1).Value = wksQ.Cells(i, 1).Value
.Cells(SuBe.Row, 2).Value = wksQ.Cells(i, 2).Value
.Cells(SuBe.Row, 3).Value = wksQ.Cells(i, 3).Value
.Cells(SuBe.Row, 4).Value = wksQ.Cells(i, 4).Value
.Cells(SuBe.Row, 5).Value = wksQ.Cells(i, 5).Value
' Hier soll eine Zeile eingefügt werden, die in die 6. Spalte eine Formel schreibt
.Cells(SuBe.Row, 7).Value = wksQ.Cells(i, 7).Value
.Cells(SuBe.Row, 8).Value = wksQ.Cells(i, 8).Value
.Cells(SuBe.Row, 9).Value = wksQ.Cells(i, 9).Value
Else
platz = False
laR2 = .Cells(Rows.Count, 2).End(xlUp).Row
laR3 = ZanzZ
If laR2 > laR3 Then laR3 = laR2
For Each C In .Range("A3:A" & laR3)
If IsEmpty(C.Value) Then
frR = C.Row
platz = True
Exit For
End If
Next C
If platz = True Then
.Cells(frR, 1).Value = wksQ.Cells(i, 1).Value 'Kom. Nr.
.Cells(frR, 2).Value = wksQ.Cells(i, 2).Value
.Cells(frR, 3).Value = wksQ.Cells(i, 3).Value
.Cells(frR, 4).Value = wksQ.Cells(i, 4).Value
.Cells(frR, 5).Value = wksQ.Cells(i, 5).Value
' Hier soll eine Zeile eingefügt werden, die in die 6. Spalte eine Formel schreibt
.Cells(frR, 7).Value = wksQ.Cells(i, 7).Value
.Cells(frR, 8).Value = wksQ.Cells(i, 8).Value
.Cells(frR, 9).Value = wksQ.Cells(i, 9).Value
Else
MsgBox "Kein freier Platz für Artikel ohne Artikelnummer !", _
vbExclamation, "Hinweis für " & Application.UserName & ":"
End If
End If
End With
Next i
End Sub

Leider weiß ich nicht wie man im Forum eine Datei anhängt sonst würde ich die Datei mit rüberreichen.
In diesem Beispiel soll in Spalte 6 statt einer Datenübernahme eine Formel in das Ziel-Datenblatt ("Arbeitsblatt") geschrieben werden. Ich kriegs aber nicht hin hier eine Formel reinzuschreiben.

Gruß

Michael


Anzeige
Re: Formelvariable
25.08.2002 18:17:14
Charlie
Hallo Michael,

offen geblieben ist jetzt nur mehr, welche Formel eingetragen werden soll bzw. worauf sich die einzutragenden Formeln beziehen sollen. Hier aber ein möglicher Ansatz:

Es wird eine Formel in Spalte F eingetragen, die prüft, ob die Spalte A der gleichen Zeile leer ist oder nicht. Wenn nein, ergibt das Formelergebnis das aktuelle Datum - Wert aus Spalte A (analog zu Diener ursprünglich geposteten Formel). Der Bezug zu der Zeile, in der die Formel eingetragen wird ergibt sich durch Verwendung der Variablen, mit der Du die Zielzellen ansprichst.

Die Verwendung von FormulaLocal hat den Vorteil, dass Du die wahrscheinlich geläufigere deutsche Schreibweise für die einzutragenden Formeln verwenden kannst.

Ich hoffe, Du kannst mit diesem Ansatz jetzt etwas anfangen, sonst melde Dich wieder.

Viel Erfolg,
Charlie

Anzeige
Re: Formelvariable
25.08.2002 19:45:37
Michael
Hallo Charlie,

es klappt super. Vielen Dank
Entschuldige nochmal meine unklare Ausdrucksweise

Viele Grüße
Michael

Re: Formelvariable
25.08.2002 19:50:39
Charlie
Hallo Michael,

jetzt ist doch tatsächlich das eingetreten, was ich schon gar nicht mehr für möglich gehalten habe:
WIR HABEN ES GESCHAFFT!!!

Und sei mir nicht böse, dass ich vielleicht das eine oder andere Mal etwas "aggressiver" auf Deine Antworten reagiert habe, aber anders ist's bei Dir wohl nicht zu machen. ;)

Aber es ist einfach wichtig, dass man alle notwendigen Details kennt, damit man sinnvoll helfen kann. Hättest Du den Code früher gepostet, wäre das Problem kurz und schmerzlos aus der Welt gewesen. Aber sei's drum. Jetzt haben wir die schwere Geburt ja gut überstanden.

Gruß,
Charlie

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige