|
@@ -629,37 +629,11 @@ class LuckySheet extends React.Component {
|
|
|
}
|
|
|
|
|
|
async goalSeek(type, goal, setting) {
|
|
|
- let luckysheet = this.luckysheet;
|
|
|
+ const luckysheet = this.luckysheet;
|
|
|
const sheet = this.luckysheet.getSheet({
|
|
|
name: '毛利概算',
|
|
|
});
|
|
|
- let order = sheet.order;
|
|
|
- console.log(sheet);
|
|
|
-
|
|
|
- const fn = function(x) {
|
|
|
- return new Promise(resolve => {
|
|
|
- luckysheet.setCellValue(9, 2, x.toFixed(4), {
|
|
|
- order,
|
|
|
- success: () => {
|
|
|
- luckysheet.refreshFormula(() => {
|
|
|
- let row;
|
|
|
- if (type == 1) {
|
|
|
- row = 1;
|
|
|
- } else if (type == 2) {
|
|
|
- row = 4;
|
|
|
- } else {
|
|
|
- row = 5;
|
|
|
- }
|
|
|
- let data = luckysheet.getCellValue(row, 2, {
|
|
|
- order,
|
|
|
- });
|
|
|
- console.log(data);
|
|
|
- resolve(data);
|
|
|
- });
|
|
|
- },
|
|
|
- });
|
|
|
- });
|
|
|
- };
|
|
|
+ const order = sheet.order;
|
|
|
|
|
|
try {
|
|
|
let defaultValue = luckysheet.getCellValue(9, 2, {
|
|
@@ -667,13 +641,15 @@ class LuckySheet extends React.Component {
|
|
|
});
|
|
|
const result = await GoalSeek({
|
|
|
goal,
|
|
|
- fn: fn2,
|
|
|
+ fn: fn,
|
|
|
fnParams: [defaultValue, sheet.data, type],
|
|
|
maxIterations: 1000,
|
|
|
independentVariableIdx: 0,
|
|
|
...setting,
|
|
|
});
|
|
|
- console.log(result);
|
|
|
+ luckysheet.setCellValue(9, 2, result, {
|
|
|
+ order,
|
|
|
+ });
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
|
}
|
|
@@ -691,7 +667,7 @@ class LuckySheet extends React.Component {
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
-function fn2(C10, data, type) {
|
|
|
+function fn(C10, data, type) {
|
|
|
let C50 = data[49][2].v || 0;
|
|
|
let C49 = data[48][2].v || 0;
|
|
|
let C20 = data[19][2].v || 0;
|
|
@@ -704,11 +680,11 @@ function fn2(C10, data, type) {
|
|
|
let C19 = data[18][2].v || 0;
|
|
|
let C51 = data[50][2].v || 0;
|
|
|
|
|
|
- let G42 = data[41][6].v;
|
|
|
- let G12 = data[11][6].v;
|
|
|
- let G13 = data[12][6].v;
|
|
|
- let G7 = data[6][6].v;
|
|
|
- let G8 = data[7][6].v;
|
|
|
+ let G42 = data[41][6].v || 0;
|
|
|
+ let G12 = data[11][6].v || 0;
|
|
|
+ let G13 = data[12][6].v || 0;
|
|
|
+ let G7 = data[6][6].v || 0;
|
|
|
+ let G8 = data[7][6].v || 0;
|
|
|
switch (type) {
|
|
|
case 1:
|
|
|
// 净利率
|
|
@@ -729,7 +705,7 @@ function fn2(C10, data, type) {
|
|
|
return C3() + C50 + C49 + C48() + G42 + C43();
|
|
|
}
|
|
|
function C48() {
|
|
|
- return C59 * G12;
|
|
|
+ return C59() * G12;
|
|
|
}
|
|
|
function C58() {
|
|
|
return (C56() + C57()) * 0.12;
|
|
@@ -751,26 +727,28 @@ function fn2(C10, data, type) {
|
|
|
return C55() - C53();
|
|
|
}
|
|
|
function C55() {
|
|
|
- return C59 / (1 + G7);
|
|
|
+ return C59() / (1 + G7);
|
|
|
}
|
|
|
function C53() {
|
|
|
return C52() - ((SUM(2, [14, 18]) / (1 + G7)) * G7 + (SUM(2, [19, 20]) / (1 + G8)) * G8);
|
|
|
}
|
|
|
function C52() {
|
|
|
- return SUM(C15, C51);
|
|
|
+ return SUM(2, [14, 50]);
|
|
|
}
|
|
|
function C43() {
|
|
|
- return C59 * G13;
|
|
|
+ return C59() * G13;
|
|
|
}
|
|
|
function C44() {
|
|
|
- return C59 * C9;
|
|
|
+ return C59() * C9;
|
|
|
}
|
|
|
|
|
|
function SUM(x, [y1, y2]) {
|
|
|
let total = 0;
|
|
|
for (let i = y1; i < y2; i++) {
|
|
|
const item = data[i][x];
|
|
|
- total += item.v;
|
|
|
+ if (!isNaN(item.v)) {
|
|
|
+ total += item.v;
|
|
|
+ }
|
|
|
}
|
|
|
return total;
|
|
|
}
|