Hi Oliver, If you can add a column, how about this first-aid? | Product | g | kJ/100g | kJ | kcal | |-----------+------+---------+------+------| | Bread | 50.6 | 1372 | 694 | 166 | | Butter | 11.5 | 3054 | 351 | 84 | | Marmalade | 19.7 | 926 | 182 | 44 | |-----------+------+---------+------+------| | | | | 1227 | 294 | #+TBLFM: $3='(org-lookup-first $1 '(remote(nf,@I$1..@II$1)) '(remote(nf,@I$2..@II$2))) #+TBLFM: $4='(* $2 (/ $3 $b));N%.0f #+TBLFM: $5=$4/$j;%.0f #+TBLFM: @>$4..$5=vsum(@I..II) (Each TBLFM line has no linebreak.) From here, it is no more than a first-aid. It's just a tracing log, and it has no conclusion for this issue. I hope this would help you get the new direction, if you need. You got the results calculated wrongly, that is: > | Product | g | kJ | kcal | > |-----------+------+------+------| > | Bread | 50.6 | 694 | 166 | > | Butter | 11.5 | 158 | 38 | > | Marmalade | 19.7 | 270 | 65 | > |-----------+------+------+------| > | | | 1122 | 269 | > #+TBLFM: $3='(* $2 (/ (org-lookup-first $1 '(remote(nf,@I$1..@II$1)) '(remote(nf,@I$2..@II$2))) 100.0));N%.0f::$4=$3/$j;%.0f::@>$3..$4=vsum(@I..II) This seems to me that: #+BEGIN_SRC emacs-lisp (* 50.6 (/ 1372 100.0)) ; => 694.2320000000001 (* 11.5 (/ 1372 100.0)) ; => 157.78 (* 19.7 (/ 1372 100.0)) ; => 270.284 #+END_SRC You didn't want 1372 for all the cases, if I understood your calculation correctly. Where did it(=1372) come from? Turning on the formula debugging with =C-c {=, and then Hitting =C-c *= in the field of @2$3 (whose value is 694) said: #+BEGIN_EXAMPLE