Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1052to1056
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

nach unten ausfüllen, wenn...

nach unten ausfüllen, wenn...
23.02.2009 18:22:08
P.Mackes
Hallo,
ich müchte eine Formel solange nach unten ausfüllen wie sich in der zelle nebenan ein wert befindet
die anzahl der werte in der linken spalte ist variable (je nach start und endzeitpunkt)
die gesamte spalte nach unten auszufüllen bläht die datei unheimlich auf und ist keine lösung
jemand einen vorschlag?
excel hat so eine funktion bereits: wenn man eine formal einträgt und dann in dieser zelle rechts unten auf die ecke geht, erscheint ein kreuz mit dem man nach unten ausfüllen kann, und zwar solange bis die benachbarte range endet
sowas hätte ich gerne als formel umgesetzt
Gruß, Peter

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 18:30:25
Josef
Hallo Peter,
da gibt's verschiedne Möglichkeiten.
Sub FormelAusfüllen()
  Dim lngR As Long, lngCol As Long
  
  lngR = 2 'Startzeile
  lngCol = 2 'Spalte
  
  Range(Cells(lngR, lngCol), Cells(Cells(lngR, lngCol + 1).End(xlDown).Row, lngCol)).Formula = "=TODAY()"
  
End Sub

Gruß Sepp

Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 18:31:45
P.Mackes
vba möchte ich vermeiden
ohne VBA
23.02.2009 18:34:16
Josef
Hallo Peter,
wie es ohne VBA geht, hast du ja selber beschrieben!?!
Gruß Sepp

AW: nach unten ausfüllen, wenn...
23.02.2009 18:30:41
Jan
Hi,
hast du es probiert? Das geht auch mit Formeln, so in der ersten Zelle die
entsprechende Formel steht.
mfg Jan
AW: nach unten ausfüllen, wenn...
23.02.2009 18:38:33
P.Mackes
hmm, ich verstehe euch nicht, sorry
ich will weder vba noch das ausfüllkästchen
sondern eine formel, müsste dann wohl als array oder range definiert sein, die automatisch erkennt wie weit die range in der spalte daneben ist und sich entsprechend expandiert/kontrahiert
der hintergrund ist, dass sich beim ändern der datumsrange (linke spalte) die formel automatisch in der range anpassen soll, ohne dass ich ein makro aufrufen/ausführen muss oder das kontrollkästchen zig mal ausführen muss
ich hoffe ich konnte mich verständlicher machen
gruß, Peter
Anzeige
es gib zwar sich selbsterfüllende...
23.02.2009 18:42:25
Josef
... Prophezeiungen, aber keine selbstausfüllemden Formeln.
Eine Formel kan nur den Wert/Inhalt der Zelle ändern in der sie steht, aber keine Veränderungen in/an
anderen Zellen auslösen
Gruß Sepp

AW: nach unten ausfüllen, wenn...
23.02.2009 18:43:16
Jan
Hi,
verstehe, aber so kams nicht rüber.
Wie lautet denn die Formel?
mfg Jan
AW: nach unten ausfüllen, wenn...
23.02.2009 18:52:52
P.Mackes
hier ein beispiel:
https://www.herber.de/bbs/user/59705.xls
Achtung: zu Anfang der Spalte sind die Formeln verschieden
anhand von eingabefeldern kann sich die datumrange ändern
da es in dem workbook viele solcher spalten gibt, ist das komplette ausfüllen mit einer formel nicht praktikabel, da das pro spalte mehr als 3mb frisst
gruß, Peter
Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 19:20:26
Jan
Hi,
sehe da keine Chance und nebenbei auch keinen Sinn, der eine Klick kann ja nun wirklich nicht
die Riesenhürde sein.
mfg Jan
AW: nach unten ausfüllen, wenn...
23.02.2009 19:25:56
Josef
Hallo Peter,
"anhand von eingabefeldern kann sich die datumrange ändern"
wie ändert sich den der Range? (Code, dynamischer Name)
Gruß Sepp

AW: nach unten ausfüllen, wenn...
23.02.2009 20:13:13
P.Mackes
okay
(nur) in der ersten datumszelle steht folgende formel: =BDH(C$1,"PX_LAST",Input_Stock!$F$2,Input_Stock!$F$3,"Dir=V","Dts=S","Sort=A","Quote=C","QtTyp=Y","Days=A","Per=cd","DtFmt=D","Fill=P","cols=2;rows=389")
bdh ist eine bloombergfunktion (datenbank mit excelplugin), die für den ticker aus C1 (z.B. die Siemens AG) das datum PX_LAST (=schlusskurs) zieht, und zwar für die range von F2 bis F3, z.B. 1.1.2009 bis today()
anhand dieser einzigen formel baut sich die gesamte datumsspalte auf (in den weiteren zellen befinden sich das datum als fixum, keine formel mehr)
entsprechend befindet sich daneben die PX_LAST-Spalte, in der zu jedem Tag der Kurs angezeigt wird
jetzt will ich in der dritten spalte den kurs normalisieren, z.B. zu einem Benchmark wie dem DAX; dazu dient die formel in dem beispielsheet
Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 20:44:43
Josef
Hallo Peter,
OK, und welche auswertbare Aktion erfolgt nachdem die Liste importiert wurde deinerseits?
Sind die Formeln immer gleich?
Werden immer zwei Spalten importiert und sollen immer in der 3. Spalte die Formeln stehen?
Wird immer der Wert aus E1 für die erste Formel verwendet?
Schreibst du den Wert in E1?
Gruß Sepp

AW: nach unten ausfüllen, wenn...
23.02.2009 21:21:24
P.Mackes
ich stell die erklärung mal hinten an, da ich nicht glaube, dass uns das weiter bringt
da wohl eine formelbasierte lösung nicht machbar ist, würde ich gerne zum makroansatz zurückkehren
da meine kenntnisse in VBA eher nicht vorhanden sind, möchte ich auf obiges beispiel bezug nehmen: wie genau muss ich die today-funktion anpassen?
in etwa sollte es so etwas machen:

Sub FormelAusfüllen()
Dim lngR As Long, lngCol As Long
lngR = 3
lngCol = 3
Range(Cells(lngR, lngCol), Cells(Cells(lngR, lngCol - 1).End(xlDown).Row, lngCol)).Formula = " _
=Cells(lngR - 1, lngCol) * Cells(lngR, lngCol - 1) / Cells(lngR - 1, lngCol - 1) "
End Sub


ist das verständlich? Also: ab zelle D3 soll die Formel lauten: =D2*C3/C2, in D4 dann D3*C4/C3 usw.
kann mir jemand evtl. auch bisschen mit Erklärung sagen wie ich das anstelle? Muss ich dazu eine Schleife basteln?
mfg, Peter
----------------------------
zur intention des sheets:
ich gebe eine datumrange vor
für diese range will ich für eine zu definierende anzahl an unternehmen aktienkurse und indizes ziehen, in denen sie gelistet sind
dazu suche ich die ticker und gebe diese ein
durch die verlinkte bloombergfunktion zieht er mir die datumsrange in einer spalte und die aktienkurse für das erste unternehmen in der rechts daneben liegenden spalte (das wiederholt sich dann für alle unternehmen und indizes)
in einer 3. spalte wird ein "rebasing" durchgeführt, damit man z.B. den siemenskurs mit dem dax vergleichen kann, da ja ein kurs von 90€/Siemensaktie und ein DAX-Stand von 4000 Punkten so nichts aussagt; das geschieht wie folgt: der DAX wird auf 90 gesetzt (erster siemenswert), der zweite wert entspricht dem vortageswert * rendite (auf punktebasis) - so sieht man wie sich der DAX im verhältnis zur siemensaktie entwickelt, wenn beide vom selben startpunkt ausgingen
dann erstelle ich mir 2 name ranges: eine mittels offset/counta, die andere MIT der offset/counta-Funtion: im ergebnis habe ich 2 ranges, die immer gerade die aktuelle gesamte datumsrange und zugehörige preisrange beinhaltet, nicht mehr und nicht weniger
die ranges brauche ich, damit ich damit erstellen grafiken dynamisch sind, d.h. sollte sich die gewünscht datumsrange vergrößeren, vergrößert sich die date und price range und auch die vom graphen erfasste range

Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 21:29:07
P.Mackes
lngCol muss natürlich 4 sein
AW: nach unten ausfüllen, wenn...
23.02.2009 21:35:37
Josef
Hallo Peter,
das geht so.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub formelAusfüllen()
  Dim lngFirst As Long, lngLast As Long, lngCol As Long
  
  lngFirst = 3 'Formel ab 3. Zeile
  lngCol = 4 'Formel in 4. Spalte
  
  lngLast = Cells(Rows.Count, lngCol - 1).End(xlUp).Row 'letzte gefüllte Zeile in Spalte lngCol-1
  
  'Formel in "D3:D & lastCol" eintragen
  With Range(Cells(lngFirst, lngCol), Cells(lngLast, lngCol))
    .FormulaR1C1 = "=R[-1]C*RC[-1]/R[-1]C[-1]"
    
    .Value = .Value 'evtl. in Werte umwandeln, sonst einfach löschen!
  End With
  
End Sub

Gruß Sepp

Anzeige
AW: nach unten ausfüllen, wenn...
23.02.2009 23:48:34
P.Mackes
sieht sehr gut aus
vielen dank für deine geduld
eine frage dazu noch:
ohne das gesamte makro jetzt jedes mal zu pasten für eine weitere spalte - wie liese sich das geschickt auf eine menge von spalten, z.B. spalte 4, 7, 9 und 12 anwenden?
sorry für meine nicht vorhandenen vba-kenntnisse /:
gruß Peter
AW: nach unten ausfüllen, wenn...
24.02.2009 00:06:08
Daniel
Hi
so zum Beispiel:

Sub formelAusfüllen()
Dim lngFirst As Long, lngLast As Long, lngCol As Long
Dim Spalten
Dim Spalte
lngFirst = 3 'Formel ab 3. Zeile
lngCol = 4 'Formel in 4. Spalte
Spalten = Array(4, 7, 9, 12) 'Spaltennummern, für die das Makro ausgeführt wird
lngLast = Cells(Rows.Count, lngCol - 1).End(xlUp).Row 'letzte gefüllte Zeile in Spalte lngCol- _
1
'Formel in "D3:D & lastCol" eintragen
For Each Spalte In Spalten
'vorhandene Formeln löschen, formel in Zeile 3 bleibt erhalten
Range(Cells(lngFirst + 1, Spalte), Cells(Rows.Count, Spalte)).ClearContents
'Formeln neu eintragen
Range(Cells(lngFirst + 1, Spalte), Cells(lngLast, Spalte)).FormulaR1C1 = Cells(lngFirst,  _
Spalte).FormulaR1C1
Next
End Sub


da ich davon ausgehe, daß in den unterschiedlichen Spalten unterschiedliche Formeln stehen, gehe ich davon aus, daß die Formeln schon in der Datei vorhanden sind (in Zeile 3), dh das Makro kopiert die Formeln aus der Zeile 3 soweit nach unten wie benötigt, und dies für die Spalten, die im Array angegeben sind.
gruß, Daniel

Anzeige
AW: nach unten ausfüllen, wenn...
24.02.2009 09:54:22
P.Mackes
wow
super sache daniel, funktioniert wunderbar
vielen vielen dank :D
AW: nach unten ausfüllen, wenn...
23.02.2009 19:28:37
P.Mackes
wie geschrieben gibt es mehere solcher spalten
im gesamten file ca. 30-40
über mehrere sheets verteilt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige