標題:
[發問]
excel報表跑巨集呈現Delay批與虛帳
[打印本頁]
作者:
v03586
時間:
2015-10-1 00:57
標題:
excel報表跑巨集呈現Delay批與虛帳
小弟又來麻煩各位高手了....
之前提供的都是前輩已經執行完的EXCEL巨集,再去執行我所需要的內容
這次是公司自行產生的報表,要去執行我要的內容
Excel comply資料表作為按鈕執行巨集用,執行結果呈現在Result資料表上
因為公司的報表上的List 將近3千多筆...... 提供的EXCEL 範例 刪除了大部分 保留的舉利用
[attach]22121[/attach]
需求內容 依照報表上執行巨集,找尋
delay批
與
虛帳
呈現虛帳表示方式
J欄位是投料量,M欄位到BM欄位則是前段製程欄位,所以當M欄位到BM欄位的數量大於J欄位的數量表示有虛帳
M欄位+到BM欄位大於J欄位時則是虛帳
則呈現在Virtual Result資料表上 反綠做為區隔
則表達方式如圖
[attach]22122[/attach]
Delay批定義則是,DATE TIME 投線後3天要出前段
所以公司的制式報表,欄位(X,Y,Z,AA,AB,AC,AG,AH,AN,AO,AT,AU,AV,AW)上還有數字,代表Delay批,
則呈現欄位依樣在Delay Result資料表上
我的構想是在Delay Result資料表上AE欄位是執行時間,依照執行時間去筆對公司制式報表上的DATA TIME 只要超過3天
就秀出資料表上的資訊,但如果有別的方式可以判斷執行的時間與報表上的時間是超過3天以上就顯示
如圖
[attach]22123[/attach]
以上兩種功能,不知道PKG Type 能不能判斷的出來 能帶在A欄位...
[attach]22124[/attach]
作者:
v03586
時間:
2015-10-1 21:49
回復
1#
v03586
TO 版主...不好意思 這篇發錯區了
應該放在EXCEL 程式區才對...不知可否協助換區,或者刪除此篇讓我重新發文
發錯區造成版主不便深感抱歉...
作者:
准提部林
時間:
2015-10-2 22:26
本帖最後由 准提部林 於 2015-10-2 22:28 編輯
不好寫,看得眼花∼∼
1.欄位少了〔QVS〕欄,請補上;〔範例報表〕M:W應共11個欄位
2.〔日期〕欄或其他欄位屬〔文字格式〕者,請事先設定,否則資料格式會改變,
另,〔日期〕沒有年份,遇跨年比對會有問題,目前先預判〔INPUT〕日期不會大于〔今日〕_即未來日!
3.Select Case 用的是〔欄位〕區別,自行去認各不同資料群組的欄號區域
4.程式碼看起來有點複雜,但肯定都是基本語法,請自行參酌視實際修改,恕不再註解及說明
Sub 執行()
Dim Arr, Brr(0, 1 To 32), j&, Jm%, k&, Km%, TT$, QD, QA, QB
Call 清除
Dim X As New Application
With X.Workbooks.Open(ThisWorkbook.Path & "\範例報表.xls", ReadOnly:=True)
Arr = .Sheets(1).UsedRange.Columns("A:BM").Cells
.Close 0
End With
For j = 9 To UBound(Arr)
If Arr(j, 1) = "PKG Type :" Then TT = Arr(j, 4)
If Arr(j, 1) Like "#######" = False Then GoTo 101
QD = Date
If IsDate(Arr(j, 9)) Then QD = DateValue(Arr(j, 9))
If QD > Date Then QD = DateValue(Year(Date) - 1 & "/" & Arr(j, 9))
If Date - QD > 3 Then QD = 1 Else QD = 0
QA = 0: QB = 0: Km = 1: Brr(0, 1) = TT: Brr(0, 32) = Date
For k = 1 To UBound(Arr, 2)
Select Case k
Case 1, 3, 4, 9, 10
Jm = 1
Case 13 To 23
Jm = 1: QA = QA + Val(Arr(j, k))
Case 30 To 32, 35 To 39, 42 To 45, 50 To 65
QA = QA + Val(Arr(j, k))
Case 24 To 29, 33, 34, 40, 41, 46 To 49
Jm = 1: QA = QA + Val(Arr(j, k)): QB = QB + Val(Arr(j, k))
End Select
If Jm > 0 Then Km = Km + 1: Brr(0, Km) = Arr(j, k): Jm = 0
Next k
If QA > Arr(j, 10) Then ['Virtual Result'!A65536].End(xlUp)(2).Resize(1, 31) = Brr
If QB > 0 And QD = 1 Then ['Delay Result'!A65536].End(xlUp)(2).Resize(1, 32) = Brr
101: Next j
Beep
End Sub
'=======================================
Sub 清除()
Sheets("Virtual Result").UsedRange.Offset(1, 0).ClearContents
Sheets("Delay Result").UsedRange.Offset(1, 0).ClearContents
End Sub
複製代碼
作者:
v03586
時間:
2015-10-3 10:13
回復
3#
准提部林
感謝版大的支援以及幫我把基本架構建設好,讓小弟能自己去延生!我一開始都認為我的技術瓶頸在PKG type 因為沒有固定位置!
我也覺得我把說明打得太複雜了...版大還看得懂真是厲害!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)