Как составить условие, основанное на количестве десятичных знаков, которое число имеет с помощью функций IFS и AND в Google Sheets? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь сделать следующее в Google Sheets:

Если число в ячейке A1 имеет 4 десятичных знака (например, «1,0001»), и если ячейка A1> B1 (например, A1 = 1,0001)и B1 = 0,0001), и если строка в ячейке C1 = «Хорошая», тогда вернуть (A1-B1) * 10000.

Дополнительно:

Если число в ячейке A2 имеет 2десятичные дроби (например, «1,01»), а если ячейка A2> B2 (например, A2 = 1,01 и B2 = 0,01), а если строка в ячейке C2 = «Great», то вернуть (A2-B2) * 100.

До сих пор я придумал эту функцию IFS:

=IFS((AND(A1>B1, C1="Good")), (A1-B1)*10000,(AND(A2>B2, C2="Great")),(A2-B2)*100,TRUE,"ERROR")

, которая обрабатывает два аргумента: A1> B1, C1 = «Хорошо» / A2> B2, C2 = «Отлично».", в формуле AND.

Как добавить десятичный аргумент в оператор AND?

Я думал о настройке для чего-то вроде:

=IFS((AND(A1>B1, C1="Good", **A1=(a number with 4 decimals)))**, (A1-B1)*10000,(AND(A2>B2, C2="Great", **A2=(a number with 2 decimals)))**,(A2-B2)*100,TRUE,"ERROR")

Гдеоператоры:

A1 = (число с 4 десятичными знаками)

и

A1 = (число с 2 десятичными знаками)

сделают свое дело.

Как вы формулируете недостающие десятичные состоянияNTS "?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы можете решить это одним ударом:

=ARRAYFORMULA(
 IF((LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A1:A), "\.(.*)")))=4) * 
    (A1:A>B1:B) * (C1:C="Good"),     (A1:A-B1:B)*10000,
 IF((LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A1:A), "\.(.*)")))=2) * 
    (A1:A>B1:B) * (C1:C="Great"),    (A1:A-B1:B)*100, )))

0

1 голос
/ 21 мая 2019

Зависит от того, имеете ли вы в виду ровно 4 знака после запятой, например, 1,0001, или, по крайней мере, 4 знака после запятой, в том числе 1,000123.

Десятичные знаки можно проверить с помощью округления (или округления, или округления), поэтому впервый случай:

=ifs(and(round(A1,3)<>A1,A1>B1,C1="Good"),(A1-B1)*10000,and(round(A2,1)<>A2,A2>B2,C2="Great"),(A2-B2)*100)

Но если вы хотите, чтобы это было ровно 4 десятичных знака:

=ifs(and(round(A1,3)<>A1,round(A1,4)=A1,A1>B1,C1="Good"),(A1-B1)*10000,and(round(A2,1)<>A2,round(A2,2)=A2,A2>B2,C2="Great"),(A2-B2)*100)

enter image description here

...