返回列表 上一主題 發帖

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

回復 10# v03586


報表的DATE TIME 並無[年度], 且為〔文字格式〕,11/08  16:31,
Split("11/08  16:31", " ")(0) 是取出 11/08,

若是以儲存格指定日期:
QDate = Format(Sheets("comply").[H13], "mm/dd")

若是固定為電腦日期的〔今天〕:
QDate = Format(Date, "mm/dd")

TOP

修改一下〔自訂函數〕,
看數據,DEVICE 似乎都以〔後面〕的節點為主,不過這還是概略的檢測法,無法百分百正確:

Function Get_Layer(xStr$) As String
Dim i%, j&, N%, U, T, TT$, Ta$, Tb$
T = xStr
For Each U In Array("02G", "04G", "08G"):  T = Replace(T, U, Mid(U, 2)):  Next
 
T = Split(T, "-")
For j = UBound(T) To 0 Step -1
  N = 0: Ta = "": Tb = ""
  For i = 7 To 1 Step -1
    TT = "-" & T(j)
    If N <> 5 Then
     N = InStr(TT, 2 ^ i & "G")
     If N > 0 Then If Not IsNumeric(Mid(TT, N - 1, 1)) Then Ta = 2 ^ i & "G": Exit For
    End If
  Next i
  If Ta = "" Then GoTo 101
 
  N = N + Len(Ta)
  For i = N To N + 2
    Tb = Mid(TT, i, 1)
    If Val(Mid(TT, i, 1)) Then Tb = Left(Val(Mid(TT, i)), 2): Exit For
    Tb = ""
  Next i
  If Tb <> "" Then Get_Layer = Ta & "*" & Tb: Exit Function
101: Next j
End Function

TOP

回復 12# 准提部林


    謝謝版大指教
請問一下版大... 請問是加在這區嗎?



感覺上<自訂函數法>與<合併兩法> 是能把層別判別的最清楚的一個方法~

TOP

Sorry sir ....知道修改哪裡了!!

TOP

本帖最後由 准提部林 於 2015-11-30 10:27 編輯

報表〔CUSTNAME〕符合〔指定關鍵字〕,不加總該筆數量~~ 

If InStr(RepArr(j, 2), "ENG") Or InStr(RepArr(j, 2), "CSP") Then GoTo 101
改成如下: 
Dim x, XX
XX = Array("HQ-5F", "HQ5F", "HQ-2F", "HQ2F", "AT7F", "AT6F", "CSP", "ENG")
For x = 0 To UBound(XX)
  If InStr(RepArr(j, 2), XX(x)) Then GoTo 101
Next

TOP

回復 15# 准提部林


    修改後果然加總數字比較接近總投線量了!!!!!感謝版大的support

TOP

本帖最後由 v03586 於 2015-12-1 14:46 編輯

回復 15# 准提部林


    版大請問一下如果要再做個微調  請問可行嗎?
增加一欄DEVICE 依照相同的Device  如圖

相同Device加總 最後呈現時帶出相同的加總  帶入計算
如執行結果圖↓

執行結果那邊欄與列  增加一個加總  如圖 可以嗎?
如果這樣計算出來的數值 是不是應該要無條件取整數?

TOP

回復 17# v03586


ON開機數計算程式_v2.rar (489.14 KB)

TOP

回復 18# 准提部林


    感謝版大針對需求的調整!!!
另外Total 的加總原本我想說自己預設函數Sum(F2:T2) 然後手動拉下去
沒想到按計算後 會把我的函數清除

藍色部分如果無法呈現沒關係

TOP

回復 19# v03586
試試看:
  1. Sub 計算當日開機數()
  2.     Dim RepSht As Worksheet, RepArr, xD1, xD2, R&, C&
  3.              .
  4.              .
  5.              .
  6.     '  此處呼叫
  7.     GetSubTot
  8.     Application.GoTo xSht.[A2]
  9. End Sub
複製代碼
增加部分:
  1. Sub GetSubTot()
  2.     Dim Btm As Long, rPos As Long
  3.    
  4.     With Sheets("開機數")
  5.         Btm = .Range("A" & Rows.Count).End(xlUp).Row
  6.         rPos = Sheets("開機數").UsedRange.End(xlToRight).Column
  7.         If (Cells(1, rPos) = "Total") Then rPos = rPos - 1
  8.         .Cells(1, rPos + 1) = "Total"
  9.         .Cells(2, rPos + 1).Resize(Btm - 1).Formula = "=SUM(F" & 2 & ":T" & 2 & ")"
  10.         .Cells(2, rPos + 1).Resize(Btm - 1) = .Cells(2, rPos + 1).Resize(Btm - 1).Value
  11.         .Cells(Btm + 1, "B") = "                        Total"
  12.         .Cells(Btm + 1, "F").Resize(, 16).Formula = "=SUM(F" & 2 & ":F" & Btm & ")"
  13.         .Cells(Btm + 1, "F").Resize(, 16) = .Cells(Btm + 1, "F").Resize(, 16).Value
  14.     End With
  15. End Sub
複製代碼

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題