返回列表 上一主題 發帖

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

回復 8# 准提部林


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

TOP

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

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

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

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

TOP

回復 6# GBKEE


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

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

回復 4# v03586


   

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

TOP

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

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

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

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

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



範例報表.rar (14.17 KB)

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題