Использование функции GCD с массивами в Excel

296
Peach_kefir

У меня проблемы с определением GCD из набора данных. Я пытаюсь определить количество предметов в коробке любого данного предмета на складе, не глядя физически на каждый предмет на полках.

Вот примерный набор данных, который я создал из заказов на продажу.

0 Part1 36 Part1 12 Part1 18 Part1 6 Part1 0 Part1 6 Part1 36 Part1 36 Part1 20 Part2 5 Part2 15 Part2 20 Part2 25 Part2 0 Part2 30 Part2 

Итак, глядя на это, я вижу, что Part1 поставляется в коробках по 6. Part2 поставляется в коробках по 5. Это возвращение, которое я ищу.

Я чувствую, что я рядом с

=GCD(SUMPRODUCT(--(A$1:A$16),(B$1:B$16=B1)),A1)

или же

=GCD(SUMPRODUCT(--(A$1:A$16)*(B$1:B$16=B1)),A1) 

но это не совсем работает.

В принципе, я хочу что-то вроде SUMIF. GCDIFФункция, где=GCDIF(range,criteria,[GCD range])

Это возможно?

2
Чтобы уточнить для других читателей и потенциальных ответов, все ли номера деталей сгруппированы, как в вопросе, или это случайный список? Относительно мало записей и список статичен, поэтому вы можете найти разрывы групп и жестко их кодировать в формуле? Предположим, у вас есть только несколько записей для детали, и они оказываются кратными одной и той же кратности (например, поле 5, но записей 10 и 20). Будет ли ответ 10 достаточно хорошим? fixer1234 5 лет назад 0
Номера деталей сгруппированы вместе, но существует более 40 000 записей, поэтому поиск разрывов группы вручную невозможен. Мы столкнемся с проблемой кратности одного и того же кратного числа, что приведет к большему предполагаемому размеру ящика, чем к фактическому, но для этого упражнения оценка достаточно близка, и пользователь, создающий заказы на покупку, может исправить любые ошибки. Peach_kefir 5 лет назад 0

2 ответа на вопрос

3
pat2015

Вы можете использовать GCD, заключенный в IF в формуле массива, чтобы получить GCD для каждой части. Смотрите пример ниже.

Пример данных находится в ячейках A1: B15.

В C1 поместите следующую формулу и нажмите CTRL+ SHIFT+ ENTERиз панели формул, чтобы создать формулу массива. Формула теперь должна быть заключена в фигурные скобки, чтобы указать, что это формула массива.

=GCD(IF($B$1:$B$15=B1,$A$1:$A$15,0)) 

Просто перетащите его вниз до намеченных строк.

0
Rajesh S

Это решение имеет другой подход. Использование Ifс CHOOSEможет также найти GCDдиапазон данных.

enter image description here

Запишите эту формулу в ячейку F73и заполните.

=IF(E73=$E$71,GCD(CHOOSE(1,D$73:D$78,D$79:D$81)),IF(E73=$F$71,GCD(CHOOSE(2,D$73:D$78,D$79:D$81)),GCD($D$82:$D$83))) 

Обратите внимание, при необходимости измените ссылки на ячейки в формуле.

Похожие вопросы