説明がそれだけでは状況が良く解りません。
縦計とは、E101セルにE2からE100までの合計を表示させるだけなのでしょうか?
それとも、E2セルから、「A列等が空欄になっていない最下段の行」のE列のセルの所までの合計をE101セルに表示させるだけなのでしょうか?
それとも、他の列に関しても、E列と同様に値が関数によって表示されていて、合計値を求めなければならないのでしょうか?
それと、A列~D列の何れかの列に、印刷しなければならない行には必ず何らかの文字か数字が入力されていて、印刷しなくとも良い行は必ず空欄となっている列はあるのでしょうか?
もし、例えば、A列にデータが入力されている最終行の所までと、縦の合計値を求める行だけは印刷を行い、合計値を求めるのは印刷される行に関してのみで、A列にデータが入力されている最終行よりも下になっているE列の数値に関しては、合計の対象には含めないという事であれば、次の様にされては如何でしょうか?
今仮に、その表が存在しているシートがSheet1であるものとします。
その場合、Sheet1はあくまで手入力しなければならないデータの入力用(E列等の関数によって値が自動的に決まる列はそのまま関数を入れておきます)として使用し、別のシート(ここでは仮にSheet2とします)に印刷用の表が(関数によって)自動的に作成される様にしておき、縦の合計も、やはり関数によって「A列にデータが入力されている最終行」から1行おいた行(Sheet2の行の事です)の所に自動的に表示される様にしておいて、印刷等はSheet1ではなく、Sheet2で行えば良いと思います。
まず、Sheet1のA101セルは空欄(スペースも入れないで下さい)として下さい。
次に、Sheet1のA1~E1の範囲をコピーして、Sheet2のA1~E1の範囲に貼り付けて下さい。
次に、Sheet2のA2セルに次の関数を入力して下さい。
=CHOOSE(MATCH(ROW()-MAX(IF(COUNT(Sheet1!$A:$A),MATCH(9E+307,Sheet1!$A:$A),1),IF(COUNTIF(Sheet1!$A:$A,"*?"),MATCH("*?",Sheet1!$A:$A,-1),1)),{-9999999,1,2,3}),IF(INDEX(Sheet1!A:A,ROW())="","",INDEX(Sheet1!A:A,ROW())),"",CHOOSE(COLUMNS($A:A),"縦計","","","",SUM(A$1:INDEX(A:A,ROW()-1))))
次に、条件付き書式を使って、次の数式による条件を満たした際に、セルの4辺に罫線が引かれる様に設定して下さい。
=COUNTIF($A$1:$A1,"縦計")=0
そして、Sheet2のA2セルをコピーして、Sheet2のA2~E102の範囲に貼り付けて下さい。
これで、データが入っている最終行から1行あけた所が、縦計が表示される行となっている表が自動的に作成されます。(罫線も自動で引かれます)