彰化一整天的論壇

 找回密碼
 立即註冊
查看: 296|回復: 7

多組數字挑選加總為指定數值的方法

[複製鏈接]
發表於 2019-8-29 17:22:13 | 顯示全部樓層 |閱讀模式

請教老師  - 多組數字挑選加總為指定數值的方法  多組數字是有順序關係的 (如D 欄)

公司的加工品批號,因來源內裝數量是不定的。數量範圍約在 1-25之間。
生管會把 批號加總 開一張工單(A / B欄)

接到生管的訂單後
同事就用手工的方法  要依照順序 去拼湊加總  出工單數量(F欄)  
請問F欄有辦法 用公式 或是 VBA 寫嗎?  如 H欄的結果

start test 2019-0829A.xlsx

10 KB, 下載次數: 23

回復

使用道具 舉報

發表於 2019-8-29 18:46:33 | 顯示全部樓層
您好,
    我看不太懂您的規則,是否可以用圖說明中間的規則。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-30 09:03:39 | 顯示全部樓層
抱歉  說明的不夠仔細  我把顏色標一下來說明  較清楚
F欄的規則是  依照B欄的數量 來累加判斷
工單A001 是27單位  批號第1批及第2批 加起來 就是 27單位  所以要在F2 F3 都補上工單 A001(橙色)
工單A002 是48單位  批號第3批及第4批 加起來 就是 48單位  所以要在F4 F5 都補上工單 A002(黃色)
工單A003 是144單位  批號第5批---第10批 加起來 就是 144單位  所以要在F6..F11 都補上工單 A003(綠色)
以下類推

start test 2019-0829B.xlsx

10.03 KB, 下載次數: 26

回復 支持 反對

使用道具 舉報

發表於 2019-8-30 10:10:20 | 顯示全部樓層
jasminejeng 發表於 2019-8-30 09:03
抱歉  說明的不夠仔細  我把顏色標一下來說明  較清楚
F欄的規則是  依照B欄的數量 來累加判斷
工單A001  ...

您好,
     我寫一個簡單的,請參考後再自己修改
  1. Private Sub CommandButton1_Click()
  2.     Dim i As Integer
  3.    
  4.     Dim job As Integer
  5.    
  6.     Dim job_pcs As Integer
  7.    
  8.     Dim pcs As Integer
  9.    
  10.     job = 2
  11.    
  12.     job_pcs = Cells(job, 2).Value
  13.    
  14.     For i = 2 To 20
  15.         pcs = Cells(i, 5).Value
  16.         If job_pcs - pcs >= 0 Then
  17.            job_pcs = job_pcs - pcs
  18.            Cells(i, 7).Value = Cells(job, 1).Value
  19.         Else
  20.            job = job + 1
  21.            job_pcs = Cells(job, 2).Value
  22.            i = i - 1
  23.         End If
  24.    
  25.     Next
  26.    
  27. End Sub
複製代碼

若有問題再提出

start test 2019-0829B.xlsm

21.1 KB, 下載次數: 3

售價: 2 金錢  [記錄]

回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-8-30 13:26:08 | 顯示全部樓層
謝謝老師  幫助很大  這樣可以避免人為判斷錯誤  謝謝!!
回復 支持 反對

使用道具 舉報

發表於 2019-8-31 12:46:53 | 顯示全部樓層
jasminejeng 發表於 2019-8-30 13:26
謝謝老師  幫助很大  這樣可以避免人為判斷錯誤  謝謝!!

底下是想法及程式說明.
【ExcelVBA教學】如何思考解決問題的方法
http://discuz.bestdaylong.com/fo ... 38582&fromuid=2
(出處: 彰化一整天的論壇)
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-9-2 09:53:10 | 顯示全部樓層
謝謝老師  我看書看的一頭霧水  謝謝您的影片講解!!   
回復 支持 反對

使用道具 舉報

發表於 2019-9-3 15:48:43 | 顯示全部樓層
  1. H2=IF(ROW(A1)=1,A$2,
  2. IF(SUMIF(H$1:H1,H1,E$1:E1)
  3. =INDEX(B:B,MATCH(H1,A:A,0))
  4. ,INDEX(A:A,MATCH(H1,A:A,0)+1),H1))
複製代碼


第一行,判斷儲存格是否首行,是則給予A2的值。
第二行,小計本列之上,上一格H欄對應Job所有的E欄Pcs。
第三行,把第二行的值與該對應job的B欄Pcs值比較。
第四行,如果E欄小計相等於B欄對應Pcs的值,則跳A欄下一個job,
否則則維持上一個H欄的job。

缺點,必須確認順序,否則一定會錯誤。
若E欄Pcs加總超過B欄則永遠不會跳下一個job,
不過也可以再寫個error來警告就是了。
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-11-21 16:03 , Processed in 0.162397 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表