ivory_kitten was telling us:
ivory_kitten nous racontait que :
I have a form field with calculation B2*C2 with the result in D2, how
can I paste the formula to the rest of the rows and have the cell
reference update to that row number. In excel you just fill the
formula down and it automatically updates?
Haven't been able to find any clues in the newsgroups!
You can use dynamic formulas.
Here is little something I picked up in the groups, probbably from macrpod:
<quote>
Say you need a formula on every row to multiply the contents of ColumnA by
the contents of ColumnB, then add the contents of ColumnC, and your formula
starts on Row1 of the table. To do that you could use a compound field like:
{QUOTE {Set CellA "a{={SEQ RowNr}/2}"}
{Set CellB "b{={SEQ RowNr \c}/2}"}
{Set CellC "c{={SEQ RowNr \c}/2}"}
{={CellA}*{CellB}+{CellC} \# 0;-0}
}
where the braces '{}' are entered in pairs via Ctrl-F9. I've laid the field
out this way for readability - you can dispense with the internal CRs.
This field works by creating a sequence number of each row and incorporating
that plus the required column letters into bookmarks (CellA, CellB, CellC)
for those rows. These then become the cell addresses referenced in the
formula. You'll notice that the SEQ field has a the \c switch for the CellB,
CellC references, but not for the CellA reference. This is to stop multiple
SEQ references on the same row changing the SEQ No. (and hence the source
row number). You'll also notice that each bookmark includes a '/2' to divide
the SEQ No by 2. That's needed because of a flaw in the way Word updates SEQ
fields when used directly in a cell reference.
If your data doesn't start on the first row in the table, you need to add an
offset to the formula for each row before the first data row. So, if your
data starts on the second row, you'd put +1 after each '/2' expression (i.e.
{SEQ RowNr}/2+1, etc). If the data starts on the third row, you use +2, and
so on. Use the same technique to offset the cell referencing by a
predetermined number of rows, using -ve values to refer to rows above, and
+ve values to refer to rows below.
Relative referencing does not work for columns.
<unquote>
So, in each cell where you want the result, you would need:
{QUOTE
{Set CellB "b{={SEQ RowNr}/2}"}
{Set CellC "c{={SEQ RowNr \c}/2}"}
{={CellB}*{CellC} \# 0;-0;}
}
--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
(e-mail address removed)
Word MVP site:
http://www.word.mvps.org