diff --git a/src/App.svelte b/src/App.svelte
index 4a847810f0d907ab558ea970422fb1838eda40a3..521a36d7fb06ecafbea978ee588f01f7d036772e 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -36,7 +36,7 @@ import type { WorkPackage } from "./estimator";
             {#each workPackages as workPackage, i (i)}
                 <RowWorkItem bind:a={workPackage.a} bind:b={workPackage.b} bind:c={workPackage.c} u={u} r={r}></RowWorkItem>
             {/each}
-            <SumRow {workPackages}></SumRow>
+            <SumRow {workPackages} u={u} r={r}></SumRow>
         </tbody>
     </table>
     <details>
diff --git a/src/SumRow.svelte b/src/SumRow.svelte
index 0f6b015f84ed536ed6188bfc9ad2fbd9e9cb3e47..7c76aa6ea5e710af655bdb4bcfca5e4fa2f86525 100644
--- a/src/SumRow.svelte
+++ b/src/SumRow.svelte
@@ -1,6 +1,6 @@
 <script lang="ts">
     import type { WorkPackage } from "./estimator";
-    import { calculateSSum, calculateESum } from './estimator';
+    import { calculateSSum, calculateESum, calculateVSum } from './estimator';
     import { roundOne, sumIgnoreNonNumbers } from "./utils";
 
     export let workPackages: WorkPackage[]
@@ -26,5 +26,6 @@
     <td class="tg-0lax">
     </td>
     <td class="tg-0lax">
+        ∑ {roundOne(calculateVSum(workPackages, u))}
     </td>
 </tr>
\ No newline at end of file
diff --git a/src/estimator.ts b/src/estimator.ts
index e11e4bf5ac9b140a9633368131953cdf29a099e8..82ae259e7e6442ef36e2be116b662c1b0dc41587 100644
--- a/src/estimator.ts
+++ b/src/estimator.ts
@@ -66,3 +66,11 @@ export function calculateESum(workPackages: WorkPackage[], r: number): number {
       .map((workPackage) => calculateE(workPackage, r))
   );
 }
+
+export function calculateVSum(workPackages: WorkPackage[], u: number): number {
+  return sumIgnoreNonNumbers(
+    workPackages
+      .filter(({ a, b }) => typeof a === "number" && typeof b === "number")
+      .map((workPackage) => calculateV(workPackage, u))
+  );
+}