返回列表 上一主題 發帖

[發問] 依照報表投線量與UPH<每小時產能>計算開機數 -- 發問

[發問] 依照報表投線量與UPH<每小時產能>計算開機數 -- 發問

這個邏輯好複雜........
想問這邊的高手這種邏輯能不能寫成一個程式
執行結果如圖下圖
假設今日是10/4  (報表是10/4帶回家開始想邏輯.....)
計算報表中當天的投線量加總,去計算這樣的產能,需要開幾台機台
計算公式是   投線量/(UPH*21.5)  UPH是每小時產能    21.5是工作時間


再來是我的邏及串連方式跟我設計的UPH表格
檔案分成報表檔案All Card UPH檔案 UPH檔案又分資料表Layer 層別;執行結果檔案
首先判斷 如果報表上的PKG 跟 All Card UPH資料表的 PKG欄位一樣
報表上的Device取All Card UPH檔案 Layer資料表 關鍵字  如果一樣
如報表 Device P-MS030NV-P8039DA1-CTHE16GGD4-SKSC   Layer資料欄  16GGD4 = 16G*4
STG代表站點,後面M-UPH代表每個站點的UPH產能  STG所帶出來的就是要列入產能計算開機數
報表上的DateTime計算出當天10/4的總投線量加總   報表上CUSTNAME 欄位如果有ENG / CSP /則不列入計算



最後結果就如下圖
例如
PKG   MICRO SD B 8L 11*15  Device判斷出  16G*4   10月4日 投線量 47363   STG帶出CA0  DA0  DA1  DA2  所以這三個站點 就依照UPH計算公式算出開機數
投線量/(UPH*21.5)  UPH是每小時產能    21.5是工作時間



不知道這個邏輯有沒有BUG...能不能串出一個程式....

開機數.rar (967.19 KB)

還有...針對特別的產品PKG

只要Device 找不到層別的 如TFBGA 168L 12*12MM   、 GAME CARD 15.2*12MM 等等...種類過多不及繁載
因為UPH的檔案還沒建立完全....有些PKG還沒建立

只要判斷PKG一樣   直接帶站點  計算UPH 開機數
如下圖的UPH檔案中這個PKG 是沒有層別的  所以只要報表的PKG一樣 就計算當日投線量  帶出UPH計算方式算開機數量
(報表中的範例我刪掉了....補上)



範例報表.rar (14.17 KB)

TOP

這問題還是卡了久...真的無解
不知道高手們有沒有什麼辦法呢...

Q1: 請問EXCEL 可以判斷欄位中的字串關鍵字嗎?
Q2: 此程式的呈現方法是我自己想的不知道可否完成
   2-1.點取按鈕後 先判斷報表中 當天投線日期 加總
開始.png
        2-1-1. 如報表中C欄位字串有以下關鍵字則不列入加總計算 : HQ-5F   HQ5F   HQ-2F  HQ2F   AT7F   AT6F   CSP  ENG

   2-2.再去判斷Device 欄位(D欄位) 中的關鍵字 去判斷層別
如:P-MS030NV-P8039DA1-CTHE16GGD4-SKSC   =16G*4
如:A-MS064BZ-A766200T-CTHD08GD1-T   =8G*1
Device 中命名一定會有  數字G_數字 or  數字G_ _數字
G的後面可能會有1~3個英文字母 但字母後面一定會有數字  不知道能不能判斷出來....
如果不能 我在Layer 分頁中 有建立一個Device 跟Den(F)的表格  主要是從這邊去抓Device對應的層別

Q3:判斷完層別接下來就是依照PKG帶入對應的層別,只要UPH這個資料表所列出的STG(站點)

就帶入計算公式  投線量/(UPH*21.5)。 執行結果如圖

報表+UPH.rar (388 KB)

TOP

想詢問一下這邊高手!!以上我敘述的方法
是否真能將這個程程式呈現呢????
還是有哪邊邏輯上的BUG ???
想了一個多月了@@

TOP

回復 4# v03586


   

感覺Device層別判斷的運用 可以類似這篇
連結資料表Layer 去判斷UPH  不知道各位版大此方法能不能呈現出來

TOP

本帖最後由 GBKEE 於 2015-11-28 05:48 編輯

回復 5# v03586
一步一步來
  1. Option Explicit
  2. Const xNote = "HQ-5F,HQ5F,HQ-2F,HQ2F,AT7F,AT6F,CSP,ENG"
  3. Dim wB(1 To 2) As Workbook, xDevice As String, xDen As String
  4. Sub Ex()
  5.     Dim Pkg As String, Rng(1 To 2) As Range, Rng_Addres As String
  6.     Dim Ar, xMsg As Boolean, E As Variant
  7.     Set wB(1) = Workbooks("開機數計算程式xls.xls")
  8.     Set wB(2) = Workbooks("ONHAND2HR_FMC_PP__112015181315.xls")
  9.     Ar = Split(xNote, ",")
  10.     With Workbooks(2).Sheets(1)
  11.         Set Rng(1) = .Cells.Find("PKG Type :", LookIn:=xlValues, LOOKAT:=xlWhole)
  12.         Rng_Addres = Rng(1).Address
  13.         Do
  14.            Pkg = Rng(1).Cells(1, 4)
  15.             Set Rng(2) = Rng(1).Offset(1)
  16.             Do
  17.                 xMsg = True
  18.                 If Rng(2) <> "" Then
  19.                     For Each E In Ar
  20.                         If InStr(Rng(2).Cells(1, 3), E) Then
  21.                             xMsg = False
  22.                             Exit For
  23.                         End If
  24.                     Next
  25.                     If xMsg And InStr(Rng(2)(1, 4), "G") Then
  26.                         Ex_Device Rng(2)(1, 4)
  27.                     End If
  28.                 End If
  29.                 Set Rng(2) = Rng(2).Offset(1)
  30.             Loop Until Rng(2).Text = "SubTotal:"
  31.             
  32.             Set Rng(1) = .Cells.Find(Rng(1).Text, Rng(1))
  33.             Rng(1).Interior.Color = vbYellow
  34.         Loop Until Rng_Addres = Rng(1).Address
  35.        ' .Close False
  36.        MsgBox "OK"
  37.     End With
  38. End Sub
  39. Sub Ex_Device(S As String)
  40.     Dim i As Integer, xRng As Range
  41.     Debug.Print vbLf & S & " ---"   'VBA  即時算視窗 顯示
  42.     i = InStrRev(S, "G") - 1
  43.     Do While IsNumeric(Mid(S, i, 1))
  44.         i = i - 1
  45.     Loop
  46.     S = Mid(S, i + 1)
  47.     i = InStr(S, "-")
  48.     If i > 0 Then
  49.         S = Replace(Mid(S, 1, i - 1), "GG", "G")
  50.     Else
  51.         S = Replace(Mid(S, 1), "GG", "G")
  52.     End If
  53.     i = InStr(S, "G")
  54.     For i = InStr(S, "G") + 1 To Len(S)
  55.         If Mid(S, i, 1) Like "[0-9]" Then
  56.             S = Mid(S, 1, i)
  57.             Exit For
  58.         End If
  59.     Next
  60.     xDevice = S
  61.     xDen = Val(S) & "G*" & Mid(S, i, 1)
  62.     Set xRng = wB(1).Sheets("Layer").Cells.Find(xDevice, LookIn:=xlValues)
  63.     If xRng Is Nothing Then
  64.         Debug.Print "找不到 " & xDevice & vbTab & xDen
  65.     Else
  66.        Debug.Print "找到 " & xDevice & vbTab & xDen & " 在 " & xRng.Address(, , , 1)
  67.     End If
  68. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# GBKEE


    感謝大大的幫忙!!! 試Run一下目前已經可以辦別PKG欄位
我最頭痛的就是Device 的問題..因為公司的Device的命名到後面都沒有統一了(越來越多)
但大多數Micro / SD  / USB 系列基本上都通用~ 例外的部分真的想不出來 ( 公司的問題) 傷腦筋

TOP

本帖最後由 准提部林 於 2015-11-28 22:37 編輯

一天研究資料,一天尋思架構,一天寫程式,
本不想寫的(後續問題應不少,恐無法跟帖),僅能做到這裡,要放空了,
其它請自行努力看看~~

附檔下載:funp.net上不去, 只能提供這個下載址
ON開機數計算程式.rar (489.09 KB)
http://www.funp.net/451843

DEVICE 命名方式九彎十八拐,開幾條高速公路也沒用,
想辦法從源頭去規範才是最好方法~~

TOP

回復 8# 准提部林


    真心感謝准提部林版大的不辭辛勞...版大真的也說到要害...Device命名真的是很傷腦筋
會與公司高層主管告知此項問題!感謝版大提供方法:)

TOP

本帖最後由 v03586 於 2015-11-29 00:39 編輯

回復 8# 准提部林


   
請問一下版大  程式碼中 這一段是自己開啟程式碼去修改的
如果我改在資料欄中 如下圖這樣顯示


是不是只要程式碼改成
QDate = Sheets("comply").[H13]

雖然把資料欄的格式設訂11/25  但還是會帶出年分2015/11/25
執行後顯示 "無符合資料"  是因為EXCEL 欄位中2015 的關係嗎?

TOP

        靜思自在 : 人生沒有所有權,只有生命的使用權。
返回列表 上一主題