2016-11-30 2 views
0

у меня есть следующие примеры ежедневных производственных данных, для которых я должен вычислить общую продолжительность обработкиигнорировать повторяющиеся вычисления

Date  Batch Batch Code Process time Changeover1 Changeover2 Total time 
7-Jan-16 CBA6001 CBA   8   1   6   0 
8-Jan-16 CBA6001 CBA   8   1   6   9 
8-Jan-16 CBA6002 CBA   8   1   6   9 
8-Jan-16 CBA6003 CBA   8   1   6   0 
9-Jan-16 CBA6003 CBA   8   1   6   15 
9-Jan-16 CBB6001 CBB   8   1   6   9 
9-Jan-16 CBB6002 CBB   8   1   6   9 
11-Jan-16 CBB6001 CBB   8   1   6   9 
11-Jan-16 CBB6002 CBB   8   1   6   9 
11-Jan-16 CBB6003 CBB   8   1   6   0 
12-Jan-16 CBB6003 CBB   8   1   6   9 
12-Jan-16 CBB6004 CBB   8   1   6   0 
13-Jan-16 CBB6004 CBB   8   1   6   15 
14-Jan-16 INA6001 INA   6   1   6   7 
14-Jan-16 INA6002 INA   6   1   6   0 
15-Jan-16 INA6002 INA   6   1   6   7 

Пример 2:

Date Single batch Batch Code Cycle time Atype Btype MyFmla YourFmla 
2-Mar-15 RFA5001  RFA   8   1 6  9  9 
2-Mar-15 RFA5002  RFA   8   1 6  0  0 
3-Mar-15 RFA5002  RFA   8   1 6  15  9 
3-Mar-15 INB5003  INB   8   1 6  0  0 
4-Mar-15 INB5003  INB   8   1 6  15  9 
4-Mar-15 RTA5005  RTA   12   1 6  0  0 
5-Mar-15 RTA5005  RTA   12   1 6  13  13 
5-Mar-15 RTA5006  RTA   12   1 6  0  0 
7-Mar-15 RTA5006  RTA   12   1 6  13  13 
7-Mar-15 RTA5007  RTA   12   1 6  13  13 
7-Mar-15 RTA5008  RTA   12   1 6  0  0 
9-Mar-15 RTA5008  RTA   12   1 6  19  19 
9-Mar-15 NZC5003  NZC   6   1 6  7  0 
9-Mar-15 NZC5002  NZC   6   1 6  0  0 
10-Mar-15 NZC5002  NZC   6   1 6  7  7 
10-Mar-15 NZC5003  NZC   6   1 6  13  13 
10-Mar-15 LBA5003  LBA   7   1 6  0  0 
11-Mar-15 LBA5003  LBA   7   1 6  8  8 
11-Mar-15 LBA5004  LBA   7   1 6  0  0 
12-Mar-15 LBA5004  LBA   7   1 6  14  8 
12-Mar-15 LBB5002  LBB   5   1 6  12  12 

Я использовал следующую формулу для вычисления время и скопировано во все строки. Логика проста

Если есть изменение в продукте, то добавьте changeover2 во время обработки (13, 14 января). Если произошла смена партии одного и того же продукта, добавьте changeover1 во время обработки в предыдущую партию. И если одна и та же партия выпускается в разные даты, возвращают ноль (так как будут дубликаты).

Теперь проблема в том, что соблюдайте строки (6,7,8,9), вы обнаружите, что две партии производятся на этих двух датах. После применения формулы наблюдайте строки 6 и 8, они являются одинаковыми партиями, но сделаны на другую дату. Несколько раз у меня есть три на те же четыре партии продукта, изготовленного на две даты

Поэтому, когда я исполняю формулу только одна партия общее время потребности т рассматривать и остальные должны возвращать 0

Как я могу переписать ниже формула, чтобы избежать дублирования расчета, если партия изготавливается на другую дату

=IF(AND(LEFT(B2,3)=LEFT(B3,3),RIGHT(B2,4)<>RIGHT(B3,4)),(D2+E2+0),IF(AND(LEFT(B2,3)=LEFT(B3,3),RIGHT(B2,4)=RIGHT(B3,4)),0,IF(LEFT(B2,3)<>LEFT(B3,3),(D2+E2+F2),""))) 

FYI Changeover1 на колонке Е и Changeover2 является колонке F

+0

Вы также можете указать строку заголовка в ваших данных выше? – anakpanti

ответ

0

Эта формула будет проверять все клетки как выше, так и ниже по той же J акушерство/партия:

(Вам нужно будет обновить B100 в зависимости от того, клетка является концом ваших данных или расширить его за пределы ожидаемого общего размера)

=IF(AND(COUNTIF(B2:B$100,LEFT(B2,3)&"*")>1,COUNTIF(B2:B$100,B2)=1),D2+E2,IF(COUNTIF(B2:B$100,B2)>1,0,D2+E2+F2)) 

Это трудно понять, был это то, что вы после или дополнительной логики, если они оба начинаются в тот же день?

Example

Редактировать

=IF(AND(COUNTIF(D18:D$101,LEFT(D18,3)&"*")>1,COUNTIF(D18:D$101,D18)=1),F18+G18,IF(COUNTIF(D18:D$101,D18)>1,0,F18+G18+H18)) 

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

Если вы хотите обновить меньше, рассмотрите формулы массива и именованные диапазоны. У меня не будет времени, чтобы привести пример этих людей, хотя, поскольку у меня есть дневная конференция, начинающаяся через 5 минут.

+0

Это не моя цель. Наблюдайте ряды 6,7,8,9 в колонке B. Вы увидите, что партии CBB001 и CBB002 производятся 9 и 11 января. В соответствующих строках общее время на каждую партию рассчитывается для 4 партий, но на самом деле время должно быть рассчитано только для двух партий. Формула i, использованная в итоговом столбце времени, рассматривает все случаи смены изменений, за исключением вышеуказанного случая. Как добавить это условие также в excel? –

+0

Чтобы уточнить, ваш ожидаемый результат для строки 10 для отображения 15 ('SUM (D10: F10)')? как CBB6001 и CBB6002 начались в тот же день? Если вы посмотрите на мой примерный рисунок, представленная формула уже не учитывает первый экземпляр обеих партий и вычисляет только в последний раз, когда пакет происходит в столбце данных. –

+0

@rajendrakodavaty Извините, что пометили вас последним комментарием –

0

Если вам нужно сравнить некоторые символы на ячейках, я всегда избегаю использования «левой», «правой», «средней» внутри формулы «если». Зачем? Потому что это делает формулу слишком длинной, а иногда трудно читать.

Просто введите новый столбец, содержащий формулу «левая», «правая», «средняя». Для примера: вы можете поместить результат LEFT (B2,3) в H2 и RIGHT (B2,4) в I2 и т. Д.

затем ... =IF(AND(H2=H3,I2<>I3),(D2+E2+0), IF(AND(H2=H3,I2=I3),0,IF(H2<>H3,(D2+E2+F2),"")))

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

Исключая столбец «дата», я думаю, что можно избежать дубликатов строк. См. here в листе «дубликат». к сожалению ... электронная таблица google не может использовать точку опоры, поэтому я не могу сделать этот процесс, только конечный результат.

+0

Я не могу использовать pivot в этом случае, потому что я не пытаюсь суммировать значения с тем же кодом партии. При каждом появлении партии будет добавлено общее время. Моя задача - заставить excel возвращать ноль, когда одна и та же партия производится на другой дате. Я привел пример выше, пожалуйста, просмотрите его –

0

Я думаю, что это один должен работать для вас

=IF(A2=LOOKUP(1,0/($B$2:$B$17=B2),$A$2:$A$17),IF(C2=C3,D2+E2,IF(C2<>C3,D2+E2+F2)),0) 

При добавлении новых строк в регулярной таблицы, вы можете захотеть сделать длину диапазона гибкой, заменив $ B $ 17 с INDEX/COUNTA комбинации например:

=IF(A2=LOOKUP(1,0/($B$2:INDEX($B:$B,COUNTA($B:$B))=B2),$A$2:INDEX($A:$A,COUNTA($A:$A))),IF(C2=C3,D2+E2,IF(C2<>C3,D2+E2+F2)),0) 
Смежные вопросы