#javascript #excel #excel-formula
#javascript #excel #excel-формула
Вопрос:
Мои знания Javascript очень ограничены, и мне было интересно, может ли кто-нибудь помочь мне преобразовать эту формулу Excel в Javascript.
Пожалуйста, ознакомьтесь с формулой ниже
=ROUNDDOWN(
IF(
I7 = 10000,
88.4% * (I7/107*7),
IF(
I7 = 20000,
89.4 * (I7/107*7),
IF(
I7 = 40000,
90.40 * (I7/107*7),
)
)
),
0
)
I7 — это входные данные
В принципе, все, что находится между 10000 и 19999, использует 88,4% * (I7 / 107 * 7)
для 20000 и 39999 используется 89,4 * (I7 / 107 * 7)
40000 и выше используют 90,40 * (I7 / 107 * 7)
Округление до ближайшего целого числа и вывод
Заранее спасибо!
Комментарии:
1. И в чем проблема / вопрос?
2. «В основном все, что находится между 10000 и 19999 …» — это не то, что делает формула…
Ответ №1:
Я пишу здесь базовый код, чтобы вы могли следовать.
function calCell(input) {
var value;
switch(true)
{
case input >= 10000 amp;amp; input < 20000 :
value = Math.floor(88.4 / 100 * (input / 107 * 7));
break;
case input >= 20000 amp;amp; input < 40000 :
value = Math.floor(89.4 / 100 * (input / 107 * 7));
break;
case input >= 40000 :
value = Math.floor(90.4 / 100 * (input / 107 * 7));
break;
default:
//I don't know what to do if your value < 10000, but you can put it here
break;
}
return value;
}
console.log(calCell(12345));
Комментарии:
1. Фантастическое спасибо! Ниже 10000 может выводиться как N / A. Возможно ли добавить самый простой ввод и вывод HTML? Я ценю помощь!
2. С помощью return N / A вы можете добавить эту строку ниже //Я не знаю … значение = «N / A». Что касается HTML, я думаю, вам следует создать еще один вопрос по SO, это было бы лучше.
Ответ №2:
Максимально короткое и упрощенное!
function RoundDown(num){
if (num >= 10000 amp;amp; num <20000) {num=num*88.4/100*107*7}
if (num >= 20000 amp;amp; num <40000) {num=num*89.4/100*107*7}
if (num >= 40000) {num=num*90.4/100*107*7}
return Math.floor(num)
}
Комментарии:
1. Куда делись 107 * 7?
2. 107 * 7 не равно 100,7
Ответ №3:
Это то, что вы спросили, а не то, что сделала формула
const calculate = num => {
if (num < 10000) return "N/A";
num = num / 107 * 7;
let pct = 1/100;
if (num < 20000) pct *= 88.4;
else if (num < 30000) pct *= 89.4;
else if (num >= 40000) pct *= 90.40;
return Math.round(num * pct)
}
console.log(
calculate(10),
calculate(10000),
calculate(15000),
calculate(25000),
calculate(50000)
)
Комментарии:
1. он сказал, что между 10000 и 19999 и т. Д. … Не равно
2. Имя функции по-прежнему неверно (и имхо, этот ответ вообще не должен существовать)
3. пусть он исправит это, Андреас
4. @Eldshe Но это не то, что делает формула
5. вы могли бы сократить его еще больше;) также поместите первое «число» в ()