Reputation: 23
A | B | |
---|---|---|
1 | 0.72 | 97.29 |
2 | 0.72 | 67.68 |
3 | 0.72 | 66.97 |
4 | 0.72 | 67.57 |
5 | 0.72 | 67.80 |
6 | 0.72 | 94.71 |
7 | 0.72 | 136.23 |
8 | 0.72 | 146.77 |
9 | 0.72 | 139.06 |
10 | 0.72 | 95.39 |
11 | 0.35 | 58.66 |
12 | 0.20 | 48.90 |
13 | 0.05 | 37.07 |
14 | 0.05 | 61.31 |
15 | 0.20 | 95.26 |
16 | 0.35 | 140.80 |
17 | 0.72 | 228.09 |
18 | 0.72 | 318.25 |
19 | 0.72 | 407.95 |
20 | 0.72 | 413.11 |
21 | 0.72 | 409.11 |
22 | 0.72 | 394.49 |
23 | 0.72 | 300.57 |
24 | 0.72 | 162.24 |
I need to work out this spreadsheet formula =SUMPRODUCT(A1:A24,B1:B24)
in PHP.
This is what I tried (but I think my formula is incorrect)
$a = array( 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.35, 0.20, 0.05, 0.05, 0.20, 0.35, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72 );
$b = array( 97.29, 67.68, 66.97, 67.57, 67.80, 94.71, 136.23, 146.77, 139.06, 95.39, 58.66, 48.90, 37.07, 61.31, 95.26, 140.80, 228.09, 318.25, 407.95, 413.11, 409.11, 394.49, 300.57, 162.24 );
$a_total = 0;
$b_total = 0;
foreach( $a as $row ) {
$a_total += $row;
}
foreach( $b as $row ) {
$b_total += $row;
}
$sumproduct = $a_total * $b_total;
Upvotes: 1
Views: 273
Reputation: 5358
You're adding all the rows in each range and multiplying the result. That's not what SUMPRODUCT does.
You should be multiplying the corresponding elements from each array and totalling the results:
$a = array( 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.35, 0.20, 0.05, 0.05, 0.20, 0.35, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72 );
$b = array( 97.29, 67.68, 66.97, 67.57, 67.80, 94.71, 136.23, 146.77, 139.06, 95.39, 58.66, 48.90, 37.07, 61.31, 95.26, 140.80, 228.09, 318.25, 407.95, 413.11, 409.11, 394.49, 300.57, 162.24 );
$sumProduct = 0;
for( $i = 0; $i<count($a); $i++ ) {
$sumProduct += ($a[$i]*$b[$i]);
}
echo $sumProduct;
Of course, this is just one of the options for SUMPRODUCT. See the Microsoft docs for more options for SUMPRODUCT
Upvotes: 1