Страницы: 1
RSS
Деление с остатком с множеством условий
 
Здравствуйте. Нужна помощь, не могу составить формулу. Есть делимое 12 и три делителя 3,6,8.
Нужно чтобы при делении всех делителей, ответ был с остатком, для всех.

Примерно такая формула нужна:
=ЕСЛИ ((12/3) И (12/6) И (12/8)=целое число), то +4 к 12, и повторение вычисления ЕСЛИ((16/3) И (16/6) И (16/8))=

и прибавлять +4 до тех пор к делимому, пока результат не будет с остатком, для троих делителей.
То есть, нужно получить ответ 20 (12+4=16, 16+4=20), все делители (3,6, 8, делятся на него с остатком. Как получить такой результат?
Изменено: Zzz01 - 17.03.2020 12:09:56
 
Формула массива:
=B2+(ПОИСКПОЗ(;МУМНОЖ(--(((B2+(СТРОКА(A1:A99)-1)*4)/D2:F2-ЦЕЛОЕ((B2+(СТРОКА(A1:A99)-1)*4)/D2:F2))=0);ТРАНСП({1;1;1}));)-1)*4
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Пробовал сделать в Power Query функцией List.Generate , но не до конца понимаю принцип работы функции.
Подскажите кто разбирается
В файле несколько попыток
 
Конкретно в Вашем случае подойдут все числа вида 12+4*k, где k при делении на 6 дает отстаток 2 или 4.
В общем случае проще всего сделать подбором. На Вашем примере: занесите в A1 формулу =8+СТРОКА(A1)*4, в B1:D1 формулы для остатка от деления (ОСТАТ) A1 на соответствующие числа (у Вас 3, 6, 8 ). Далее тяните вниз, пока в какой-либо строке в столбцах B:D не будет ни одного нуля.
Владимир
 
Доброе время суток
Цитата
Михаил Л написал:
сделать в Power Query функцией List.Generate
Вариант.
Код
let
    startNumber = 12,
    stepNumber = 4,
    dividers = {3, 6, 8},
    Source = List.Generate(
    () => [next = startNumber],
    each List.Contains(dividers, [next], (x, y) => Number.Mod(y, x) = 0),
    each [next = [next] + stepNumber],
    each [next]
    ),
    result = if List.Count(Source) = 0 then startNumber else Source{List.Count(Source) - 1} + stepNumber
in
    result
Изменено: Андрей VG - 17.03.2020 13:02:44 (Перезамудрил что-то)
 
Цитата
Максим В. написал:
Формула массива:=B2+(ПОИСКПОЗ(;МУМНОЖ(--(((B2+(СТРОКА(A1:A99)-1)*4)/D2:F2-ЦЕЛОЕ((B2+(СТРОКА(A1:A99)-1)*4)/D2:F2))=0);ТРАНСП({1;1;1}))-1)*4
Большое спасибо, эта формула помогла, но скажите как сделать, если полученный ответ делится на 5, то чтобы формула продолжила дальнейший поиск?
вот в нашем конкретном случае результат 20, а это делится на 5. То, есть нужно чтобы дальше формула искала число, которое отвечает озвученным ранее трем условиям и не делится на 5.
 
Доброе время суток
Цитата
Zzz01 написал:
отвечает озвученным ранее трем условиям и не делится на 5.
Ведь очевидно же, добавить в три условия четвёртое... Или вы даже предоставленную формулу не анализировали?
 
Цитата
Андрей VG написал:
Ведь очевидно же, добавить в три условия четвёртое...
это не совсем четвертое условие, а условие которое применяется к полученному результату, то есть когда сработали три предыдущих условиях, а на это потребовалось три цикла, (изначальное делимое 12 (false), затем 16 (false), затем 20 (true)) и теперь когда все три условия выполняются, нужно чтобы была проверка, делится ли полученный результат  20, на 5.

Если да, то цикл продолжается, 24,28,32 и т.д. до тех пор пока полученный результат будет соответствовать трем условиям и не делится на 5.

Надеюсь я вас не запутал.

Короче говоря, что-то вроде этого нужно:
=ЕСЛИ((тут предложенная выше формула Максима) /5; то (тут предложенная выше формула Максима))
 
Андрей VG, спасибо
Работу функции я так и не понял. Еще и задачу темы понял по другому. Искал делимое, которое при делении будет целым числом, а надо, наоборот, с остатком
Страницы: 1
Наверх