PDA

Vollständige Version anzeigen : AutoAusfüllen


raiho
03.02.2006, 20:51
Hi,

ich muss eine umfangreiche tabelle nach und nach erweitern und dabei einige formeln kopieren - das problem ist, dass die daten sich in horizontaler richtung erstrecken, währenddessen die formeln in vertikaler richtung ausgefüllt werden.
vereinfachte darstellung:
die formel (a1+a2) soll nach unten kopiert werden, und es soll aber nicht (a2+a3) rauskommen, sondern (b1+b2). gibt's dafür eine einfache lösung für diese transponierte ausfüllaktion?

Beverly
03.02.2006, 21:56
Hi Rainer,

eine Lösug in VBA könnte folgendermaßen aussehen

Sub formel_kopieren()
Dim loZeile As Long
For loZeile = 1 To 20
Cells(loZeile, 3).FormulaLocal = "=B" & loZeile & "+B" & loZeile + 1
Next loZeile
End Sub
Mit diesem Code wird in Spalte C beginnend von C1 bis C20 die Formel eingeschrieben.

jinx
04.02.2006, 07:49
<font size="2" face="Century Gothic">Moin, Rainer,

bei Karins Code wird das Transponieren nicht berücksichtigt.

Option Explicit

Sub raiho()
Dim intZeile As Integer
Const CINTSTART As Integer = 5 ' kann auch direkt in
' Anweisung eingegeben werden

Application.ScreenUpdating = False
For intZeile = 1 To 20
' Ausgabebereich anpassen, hier ab A6
Cells(intZeile + CINTSTART, 1).Formula = _
"=" & Cells(1, intZeile).Address(0, 0) & _
"+" & Cells(2, intZeile).Address(0, 0)
Next intZeile
Application.ScreenUpdating = True
End Sub</font>

raiho
05.02.2006, 15:39
sorry für die späte rückmeldung,

danke euch 2 für die vorgestellten beispiele. ich hätte eher gehofft, dass es vllt. eine ganz simple lösung mithilfe von bormitteln gibt und dass ich in diesem fall ohne vba auskomme. aber anscheinend ist dem nicht so....

jinx
05.02.2006, 16:12
<font size="2" face="Century Gothic">Moin, Rainer,

Moment mal - Versatz bitte anpassen:<table><tr style="vertical-align:top; text-align:center; "><tr><td>Tabelle1</td></tr><tr><td><table border=1 cellspacing=0 cellpadding=0 style="font-family:Arial,Arial; font-size:10pt; padding-left:2pt; padding-right:2pt; "> <style type = "text/css"> th {font-weight:normal} </style> <colgroup><col width=30 style="font-weight:bold; "><col width=79.999998 ><col width=79.999998 ><col width=79.999998 ></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td>&nbsp;</td><td>A</td><td>B</td><td>C</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="text-align:right; ">1</td><td style="text-align:right; ">3</td><td style="text-align:right; ">5</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="text-align:right; ">2</td><td style="text-align:right; ">4</td><td style="text-align:right; ">6</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="">&nbsp;</td><td style="">&nbsp;</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="">&nbsp;</td><td style="">&nbsp;</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:right; ">3</td><td style="">&nbsp;</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="text-align:right; ">7</td><td style="">&nbsp;</td><td style="">&nbsp;</td></tr><tr height=17 ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td style="text-align:right; ">11</td><td style="">&nbsp;</td><td style="">&nbsp;</td></tr></table><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#FFFCF9; "><tr><td><b>Formeln der Tabelle</b></td></tr><tr><td><table style="font-family:Arial; font-size:10pt;">A5 : =SUMME(INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(1;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>;INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(2;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>)<br>A6 : =SUMME(INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(1;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>;INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(2;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>)<br>A7 : =SUMME(INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(1;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>;INDIREKT<span style=' color:008000; '>(ADRESSE<span style=' color:#0000ff; '>(2;ZEILE<span style=' color:#ff0000; '>()</span>-4;4;1)</span>)</span>)<br></table></td></tr></table></td></tr><tr><td>&nbsp;</td></tr></tr></table></font>

raiho
05.02.2006, 19:50
Wahnsinn, jinx, genau so eine formel hab' ich gesucht. du bist ein genie. ich versteh' zwar die formel (auf den ersten blick noch) nicht, aber funktionieren tuts einwandfrei!! selbst ausprobiert/draufgekommen oder wo gefunden?

jinx
05.02.2006, 20:36
<font size="2" face="Century Gothic">Moin, Rainer,

per INDIREKT wird auf eine immer vorhandene Adresse verwiesen, die sich auch durch Einfügen/Löschen von Zeilen/Spalten/Zellen nicht ändert. Die Funktion ADRESSE kann in diesem Falle verwendet werden, da wir wissen, dass wir die Werte der Zeile 1 und 2 benötigen und nur die Spalten dabei veränderlich sein sollen. Also liegt es nahe, die Zeilenzahl der Formel per ZEILE() herauszubekommen und diese so zu korrigieren, dass als erster Wert eine 1 herauskommt (was der Spalte A entspricht) - im Beispiel steht die Formel in Zeile 5, daher wird 4 abgezogen. Die Schreibweise der relativen Adressierung kann unterlassen werden - die Formel ändert sich wegen der Verwendung von INDIREKT eh nicht, wenn sie nach rechts gezogen wird... ;)

Leider nirgends gesucht, sondern als Protest gegen die Aussage ich hätte eher gehofft, dass es vllt. eine ganz simple lösung mithilfe von bormitteln gibt und dass ich in diesem fall ohne vba auskomme. aber anscheinend ist dem nicht so....in Erinnerung an die Funktionen erstellt. Und ich bin mir sicher, dass diese Vorgehensweise irgendwo im www beschrieben wird (vielleicht sogar auf Excelformeln) - aber leider habe ich nicht nachgesehen...</font>