2016-11-30 106 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 

我已經使用了下面的公式計算所述時間並複製到所有行。邏輯很簡單

如果產品發生變化,則將轉換2添加到處理時間(13,14月1日)。如果相同產品的批次發生更改,則將轉換1添加到前一批次的處理時間。如果同一批次在不同日期生產,則返回零(因爲會有重複)。

現在的問題是,觀察行(6,7,8,9),你會發現兩個批次是在這兩個日期製造的。在應用公式後,觀察第6行和第8行,它們都是同一批次,但在不同的日期生成。有些時候,我確實有三兩個日期

因此生產產品的相同的四個批次當我執行公式只有一個批次的總時間需要T爲考慮和休息應該返回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是列E和Changeover2是F欄

+0

請問您還可以在上面的數據中包含標題行嗎? – anakpanti

回答

0

此公式將檢查所有單元的上方和下方的相同Ĵ OB /批號:

(您將需要更新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

這不是我的目標。觀察欄B中的行6,7,8,9。您會發現批次CBB001和CBB002是在1月9日和11日生產的。在相應的行中,每個批次的總時間計算爲4個批次,但實際上時間必須僅計算兩個批次。我在總時間欄中使用的公式考慮了所有的變更情況,除了上述情況。如何在Excel中添加這個條件? –

+0

所以爲了澄清,你的預期結果是第10行顯示15('SUM(D10:F10)')? CBB6001和CBB6002是在同一天開始的?如果您看一下我的示例圖片,則提供的公式不會計算兩個批次的第一個實例,而只會計算批次發生在數據列中的最後一次。 –

+0

@rajendrakodavaty對不起,忘了在最後的評論標記你 –

0

當你必須比較單元格上的某些字符時,我總是避免在「if」公式中使用「left」,「right」,「mid」。爲什麼?因爲它會使配方太長,有時難以閱讀。

只需創建包含「左」,「右」,「中」公式的新列。 對於例如:你可以把結果的左(B2,3)在H2和右(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中的「重複」。 不幸的是...谷歌電子表格不能使用樞軸,所以我無法做出過程,只有最終結果。

+0

在這種情況下,我不能使用數據透視表,因爲我不想用相同的批處理代碼來求和數值。在每批次發生時,都會增加總時間。我的目標是在同一批次在不同日期生產時使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) 

如果要添加新行定期表,你可能想使範圍內的長度靈活通過用INDEX/COUNTA組合代替$ B $ 17像這樣:

=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)