Board logo

標題: [發問] 跨欄置中與擷取文字問題 [打印本頁]

作者: v03586    時間: 2016-1-9 21:55     標題: 跨欄置中與擷取文字問題

想請問各位高手們
我想要顯示圖片中的效果
資料一開始都是混亂的(上千筆)
1. 先依照A欄先排序, 知後再依照相同東西(如AAA)再一次依照D欄再排序一次
2. 依照C欄,D欄,E欄 做簡化
   2-1. C欄共通點從第一個字元開始到第一個『  -  』 都保留
   2-2. D欄共通點從05-xxxx- 第二個『  -  』 都保留
   2-3. E欄共通點第一個字元到其中會有個字串『  SPC  』 或 『  SCL  』,後面都不要
   2-4. 可以再幫我真對E欄 再做另一個版本嗎 , 另一個版本是從字串中 ,從『QVS』後到『  SPC  』 或 『  SCL  』
3. 完成1、2步驟後,依照B欄相同的跨欄置中, 如圖片中
4.依照D欄相同的字串用黑框線
5.B欄位資料字體大小16 , C與D欄字體大小12 , 資料表縮放比例63%檢視
[attach]23072[/attach]
作者: stillfish00    時間: 2016-1-11 17:04

回復 1# v03586
圖片密密麻麻怎不附檔,要試的人自己依圖去填嗎?
作者: hcm19522    時間: 2016-1-11 20:08

http://blog.xuite.net/hcm19522/twblog/372926021
http://blog.xuite.net/hcm19522/twblog/372906150
參考
作者: v03586    時間: 2016-1-11 20:20

Sorry , 補檔案
[attach]23087[/attach]
作者: v03586    時間: 2016-1-11 20:24

回復 3# hcm19522


    大大果然是函數達人!!!!  因處理資料上千筆, 所以必須寫入迴圈
我覺得大大這個方法也很好!!!值得參考
作者: stillfish00    時間: 2016-1-12 15:04

回復 4# v03586
Try this
4.依照D欄相同的字串用黑框線  => 改為依合併的A欄畫粗框
  1. Sub Test()
  2.     Dim oRegexp As Object: Set oRegexp = CreateObject("vbscript.regexp")
  3.     Dim ar, i, j, s
  4.    
  5.     ar = Sheets("報表").Range("A9:F21").Value  'or .Range("A9").CurrentRegion.Value
  6.    
  7.     With oRegexp
  8.         .Pattern = "^[^-]*-"
  9.         For i = 1 To UBound(ar)
  10.             If .Test(ar(i, 3)) Then ar(i, 3) = .Replace(ar(i, 3), "")
  11.         Next
  12.         .Pattern = "^[^-]*-[^-]*-"
  13.         For i = 1 To UBound(ar)
  14.             If .Test(ar(i, 4)) Then ar(i, 4) = .Replace(ar(i, 4), "")
  15.         Next
  16.         .Pattern = "^(.{2})(.)(.*)[a-zA-Z]$"
  17.         For i = 1 To UBound(ar)
  18.             If .Test(ar(i, 5)) Then
  19.                 s = .Replace(ar(i, 5), "$1-$2-$3")
  20.                 mch = Application.VLookup(s, Sheets("Flow").[A:B], 2, False)
  21.                 If Not IsError(mch) Then ar(i, 5) = mch
  22.             End If
  23.         Next
  24.         .Pattern = "(SPC|SCL).*$"
  25.         '另一種 QVS to SPC/SCL
  26.         '.Pattern = "^.*?(QVS.*?(SPC|SCL)).*$"
  27.         For i = 1 To UBound(ar)
  28.             If .Test(ar(i, 6)) Then ar(i, 6) = .Replace(ar(i, 6), "$1")
  29.         Next
  30.         
  31.     End With
  32.    
  33.     Application.ScreenUpdating = False
  34.     With Sheets.Add.[A1].Resize(UBound(ar), UBound(ar, 2))
  35.         .Value = ar
  36.         .Sort key1:=.Cells(1, 1), order1:=xlAscending, key2:=.Cells(1, 4), order2:=xlAscending
  37.         .Borders.LineStyle = xlContinuous
  38.         .Borders.Weight = xlThin
  39.         Application.DisplayAlerts = False
  40.         i = 1
  41.         For j = 1 To UBound(ar)
  42.             If .Cells(j, 2).Value <> .Cells(j + 1, 2).Value Then
  43.                 If i <> j Then Range(.Cells(i, 1), .Cells(j, 1)).Merge
  44.                 With .Cells(i, 1).MergeArea.Resize(, .Columns.Count)
  45.                     .Borders(xlEdgeTop).Weight = xlMedium
  46.                     .Borders(xlEdgeBottom).Weight = xlMedium
  47.                     .Borders(xlEdgeLeft).Weight = xlMedium
  48.                     .Borders(xlEdgeRight).Weight = xlMedium
  49.                 End With
  50.                 i = j + 1
  51.             End If
  52.         Next
  53.         Application.DisplayAlerts = True
  54.         
  55.         [B:B].Font.Size = 16
  56.         [C:D].Font.Size = 12
  57.         ActiveWindow.Zoom = 63
  58.         [A:F].EntireColumn.AutoFit
  59.         [A:B].HorizontalAlignment = xlCenter
  60.     End With
  61.     Application.ScreenUpdating = True
  62. End Sub
複製代碼

作者: v03586    時間: 2016-1-12 23:40

回復 6# stillfish00


    感謝大大的幫忙!!!
但我部分看不太清楚 , 可否麻煩大大針對幾項功能協助做個說明

EX :
  1.    With oRegexp
  2.         .Pattern = "^[^-]*-"
  3.         For i = 1 To UBound(ar)
  4.             If .Test(ar(i, 3)) Then ar(i, 3) = .Replace(ar(i, 3), "")
  5.         Next
  6.         .Pattern = "^[^-]*-[^-]*-"
複製代碼
這一段是判斷什麼功能?
  1.         For i = 1 To UBound(ar)
  2.             If .Test(ar(i, 4)) Then ar(i, 4) = .Replace(ar(i, 4), "")
  3.         Next
  4.         .Pattern = "^(.{2})(.)(.*)[a-zA-Z]$"
複製代碼
這一段是判斷什麼功能
我不知道這樣切 有沒有切錯段落
作者: stillfish00    時間: 2016-1-13 09:57

回復 7# v03586
  1. oRegexp : regular expression 正則表達式/正規表示法,用來查找、替換、提取、驗證字串,
  2. ,可參考 http://club.excelhome.net/thread-1128647-1-2.html 學習

  3. .Pattern = "^[^-]*-" 用來設定規則
  4. ^ : 字串開頭位置
  5. [^-] : 非-的任意字元
  6. [^-]* : 0~n個非-的任意字元
  7. - : -字元
  8. 所以是匹配開頭到第一個-字元

  9. .Test 是用來測試是否符合規則
  10. .Replace 是把符合規則部分的字串取代掉
複製代碼

作者: 准提部林    時間: 2016-1-13 13:52

用最基本的程式語法, 自行去研究, 不再多說明~~
  1. Sub TEST()
  2. Dim R&, xArea As Range, xR As Range, xH As Range, T, TT, X
  3. R = [報表!A65536].End(xlUp).Row: If R < 9 Then Exit Sub
  4. Set xArea = Sheets("報表").Range("A9:A" & R)
  5. For Each xR In xArea
  6.   T = xR(1, 3): xR(1, 3) = Mid(T, InStr(T, "-") + 1)
  7.   xR(1, 4) = Right(xR(1, 4), 9)
  8.       
  9.   T = xR(1, 5):  T = Left(T, 2) & "-" & Mid(T, 3, 1) & "-" & Mid(T, 4, 4)
  10.   TT = Application.VLookup(T, [Flow!A:B], 2, 0)
  11.   If Not IsError(TT) Then xR(1, 5) = TT Else xR(1, 5).Font.Color = vbRed
  12.       
  13.   T = xR(1, 6)
  14.   T = Mid(T & ",QVS", InStr(T, "QVS") + 4) '取 QVS 以後字串
  15.   For Each TT In Array("SPC", "SCL")
  16.     X = InStr(T, TT): If X > 0 Then xR(1, 6) = Left(T, X + 2): Exit For
  17.   Next
  18. Next
  19.  
  20. xArea.Resize(, 6).Sort Key1:=xArea(1, 1), Order1:=xlAscending, _
  21.                        Key2:=xArea(1, 4), Order2:=xlAscending, Header:=xlNo
  22.                        
  23. Application.DisplayAlerts = False
  24. For Each xR In xArea
  25.   If xR & xR(1, 2) <> xR(0) & xR(0, 2) Then Set xH = xR
  26.   If xR & xR(1, 2) <> xR(2) & xR(2, 2) Then
  27.    Range(xH, xR).Merge: Range(xH(1, 2), xR(1, 2)).Merge
  28.    Range(xH, xR(1, 6)).Borders.LineStyle = 1
  29.    For i = 7 To 10
  30.      Range(xH, xR(1, 6)).Borders(i).Weight = xlMedium
  31.    Next i
  32.   End If
  33. Next
  34. End Sub
複製代碼

作者: v03586    時間: 2016-1-14 02:29

回復 9# 准提部林


    Excel 打開比對A2欄位有 ON HAND--PC_ONHAND2HR_1ST_FLOW
就等同匯入報表嗎
作者: v03586    時間: 2016-1-14 02:51

回復 9# 准提部林


    回復 9# 准提部林


Q1.感謝大大!! 我針對程式碼修改至我自己的程式報表(FMC), 發現欄位Substrate 與 B/D Np 欄位 就是取 『-』 好像切得不是很乾淨 (W與X欄位)
還有最後一欄一長串那個, 我修改不出來...求指教....

Q2.還有可以將匯入報表模式改成 Excel 打開後比對 (參考報表資料來源:ONHAND2HR_Ist_Flow)
          A2欄位有 ON HAND--PC_ONHAND2HR_1ST_FLOW 就等同匯入報表嗎?  
      意思就是只要打開程式EXCEL 與 參考資料來源 比對資料表Sheet1 A2欄有ON HAND--PC_ONHAND2HR_1ST_FLOW 字眼

請問大大能否新增幾樣功能嗎
1. 功能1
    1-1. 如果執行時間比對參考資料來源Date Time (L欄)超過24H 能幫我反黃色標示嗎?
2. 功能2
   2-1. 程式中報表上CUSTNAME 欄位中如果有 CSP / L1 / L2 / 字串則整個刪除
   2-2. 保留 ENG / HQCSP / HQ-CSP / HQ-L1 / HQ-L2 / HQL1 / HQL2
   2-3. 然後移去ENG 移至ENG資料表, HQ CSP系列移至CSP資料表, HQ L1 / HQ L2 系列移至Other資料表
3. 功能3
    3-1. 報表參考資料中的Q欄位QTY ,能比對 P欄位 STEP 帶入
            程式中的相對欄位嗎?   (如執行結果EXCEL)
4. 功能4
   4-1. 程式中,資料表FMC,前面有看見A欄位與B欄位 已有合併儲存格, 發現後面有很多相同重複的 也可以合併嗎?
     4-1-1. S欄位(Custname)   T欄位(Device)  U欄位(Datetime) V欄位(MO QTY)  W欄位Substrate  X欄位(B/D No)  Y欄位(Flow)

檔案內說明
[2F新報表程式_v1] 上述為程式   [ONHAND2HR_Ist_Flow] 上述為參考資料來源
[attach]23106[/attach]
作者: v03586    時間: 2016-1-14 07:47

回復 11# v03586


    補充....
STEP 裡面 只要有WGD1  /   WGH1   /   WGP1 / WGS1  / WG01
都列入WG欄位裡面..!!!  WGxx都屬於WG製程欄位
作者: v03586    時間: 2016-1-14 08:42

回復 12# v03586


    Sorry....程式檔案中TBG1旁邊(右)製程欄位多加一個製程欄位PGH1
忘記加上去.....thanks
作者: v03586    時間: 2016-1-14 10:29

回復 11# v03586

避免大大們混亂我一直新增回覆的問題
此篇整合剛剛單獨回覆的問題 , 及自行新增PGH1
新增Q3問題

Q1.我針對程式碼修改至我自己的程式報表(FMC), 發現欄位Substrate 與 B/D No 欄位 就是取 『-』 好像切得不是很乾淨 (X與Y欄位)
還有最後一欄一長串那個, 我修改不出來...求指教....

Q2.還有可以將匯入報表模式改成 Excel 打開後比對 (參考報表資料來源:ONHAND2HR_Ist_Flow)
          A2欄位有 ON HAND--PC_ONHAND2HR_1ST_FLOW 就等同匯入報表嗎?  
      意思就是只要打開程式EXCEL 與 參考資料來源 比對資料表Sheet1 A2欄有ON HAND--PC_ONHAND2HR_1ST_FLOW 字眼
Q3.欄位線的劃置能全部細線條 , 依照B/D No 不同畫粗線條嗎? (執行結果excel那樣)
   目前好像不同的MO 畫粗線

請問大大能否新增幾樣功能嗎
1. 功能1
    1-1. 如果執行時間比對參考資料來源Date Time (C欄)超過24H 能幫我反黃色標示嗎?
2. 功能2
   2-1. 程式中報表上CUSTNAME 欄位(V欄位)中如果有 CSP / L1 / L2 / 字串則整個刪除
   2-2. 保留 ENG / HQCSP / HQ-CSP / HQ-L1 / HQ-L2 / HQL1 / HQL2
   2-3. 然後移去ENG 移至ENG資料表, HQ CSP系列移至CSP資料表, HQ L1 / HQ L2 系列移至Other資料表
3. 功能3
    3-1. 報表參考資料中的Q欄位QTY ,能比對 P欄位 STEP 帶入,
            程式中H欄~U欄位相對製程欄位嗎?   (如執行結果EXCEL)
4. 功能4
   4-1. 程式中,資料表FMC,前面有看見A欄位(PKG)與B欄位(MO) 已有合併儲存格, 發現後面有很多相同重複的 也可以合併嗎?
     4-1-1. V欄位(Custname)  W欄位(Device)  C欄位(Datetime) G欄位(MO QTY)   X欄位Substrate  Y欄位(B/D No)  Z欄位(Flow)

檔案內說明
[2F新報表程式_v1] 上述為程式   [ONHAND2HR_Ist_Flow] 上述為參考資料來源
[attach]23109[/attach]
作者: v03586    時間: 2016-1-18 01:18

請問是否有人會解題呢...!! 卡關了
作者: v03586    時間: 2016-1-22 01:54

回復 14# v03586

已經將功能4問題解決...剩下求助

Q1.我針對程式碼修改至我自己的程式報表(FMC), 發現欄位Substrate 與 B/D No 欄位 就是取 『-』 好像切得不是很乾淨 (X與Y欄位)
還有Z欄位, 無法從『QVS』後到『  SPC 』 或 『  SCL  』保留, 其他去除

Q2.還有可以將匯入報表模式改成 Excel 打開後比對 (參考報表資料來源:ONHAND2HR_Ist_Flow)
          A2欄位有 ON HAND--PC_ONHAND2HR_1ST_FLOW 就等同匯入報表嗎?  
      意思就是只要打開程式EXCEL 與 參考資料來源 比對資料表Sheet1 A2欄有ON HAND--PC_ONHAND2HR_1ST_FLOW 字眼
Q3.欄位線的劃置能全部細線條 , 依照B/D No 不同畫粗線條嗎? (執行結果excel那樣)
   目前好像不同的MO 畫粗線

請問大大能否新增幾樣功能嗎
1. 功能1
    1-1. 如果執行時間比對參考資料來源Date Time (C欄)超過24H 能幫我反黃色標示嗎?
    1-2. (目前有設定格式化條件 儲存格值< 小於 =NOW()-3 ) 反黃都都沒有作用
2. 功能2
   2-1. 程式中報表上CUSTNAME 欄位(V欄位)中如果有 CSP / L1 / L2 / 字串則整個刪除
   2-2. 保留 ENG / HQCSP / HQ-CSP / HQ-L1 / HQ-L2 / HQL1 / HQL2
   2-3. 然後移去ENG 移至ENG資料表, HQ CSP系列移至CSP資料表, HQ L1 / HQ L2 系列移至Other資料表

3. 功能3
    3-1. 報表中的AA欄位QTY ,能比對 P欄位 STEP 帶入,H欄~U欄位相對製程欄位嗎?   
          EX: ( F9欄位=DB) AA數字70 ,  則帶入對應欄為 U欄(DB) U9顯示AA欄數字70

[attach]23160[/attach]

[attach]23159[/attach]
作者: v03586    時間: 2016-1-23 02:03

本帖最後由 v03586 於 2016-1-23 02:05 編輯

功能3我能想到的呈現方式就是
如果F欄未 [STEP] = TBG1 則就從AA欄位剪下貼上, 請問如何寫成多判斷
  1. For h = 9 To 3500
  2.         If .Cells(h, "F") = "TBG1" Then
  3.             .Cells(h, "AA").Select
  4.             Selection.Cut
  5.             .Cells(h, "H").Select
  6.             ActiveSheet.Paste
  7.         End If
  8.     next
複製代碼
我在下面在新增一個if  就跑不出來了
還有什麼辦法呢?或者如何修改?
  1. For h = 9 To 3500
  2.         If .Cells(h, "F") = "TBG1" Then
  3.             .Cells(h, "AA").Select
  4.             Selection.Cut
  5.             .Cells(h, "H").Select
  6.             ActiveSheet.Paste
  7.         End If
  8.         If .Cells(h, "F") = "PGH1" Then
  9.             .Cells(h, "AA").Select
  10.             Selection.Cut
  11.             .Cells(h, "I").Select
  12.             ActiveSheet.Paste
  13.         End If
  14.       Next
複製代碼

作者: v03586    時間: 2016-1-24 00:25

以上的問題單點突破後只剩下兩個問題...
希望有高手能替我解答一下

Q1.欄位線的劃置能全部細線條 , 依照B/D No 不同畫粗線條嗎?
   目前好像不同的MO 畫粗線
如圖片 原本是這樣
[attach]23164[/attach]
想讓劃線變成這樣
[attach]23165[/attach]



1. 新增功能
   1-1. 程式中報表上CUSTNAME 欄位(V欄位)中如果只有 CSP / L1 / L2 / 字串則整個刪除
   1-2. 保留 ENG / HQCSP / HQ-CSP/ HQ-L1 / HQ-L2 / HQL1 / HQL2
   1-3. 然後移去ENG 移至ENG資料表, HQ CSP系列移至CSP資料表, HQ L1 / HQ L2 系列移至Other資料表

[attach]23166[/attach]
  1. Dim UType%
  2. Sub 新報表_匯入()

  3. Dim xFile$, x As New Application, xB As Workbook, xS As Worksheet
  4. Dim RepSht As Worksheet, xR As Range, xLab As Range, xAddress$
  5. Set RepSht = Sheets("FMC")
  6. Application.ScreenUpdating = False
  7. RepSht.UsedRange.EntireRow.Delete
  8.     Dim currentPKG, currentDevice, whichFirst As String
  9.     Dim index As Integer
  10.     Dim hasReport As Boolean
  11.     title_row = 8
  12.     hasReport = False
  13.     For i = 1 To Workbooks.Count
  14.         With Workbooks(i).Sheets(1)
  15.             If .Range("A" & title_row).Value Like "LOTID*" And .Range("D" & title_row).Value Like "TYPE*" And .Range("M" & title_row) Like "QTY*" Then
  16.                 Set xS = Workbooks(i).Sheets(1)
  17.                 hasReport = True
  18.                 i = Workbooks.Count + 1
  19.             End If
  20.         End With
  21.     Next i
  22.     If hasReport = False Then MsgBox "找不到報表檔! ": Exit Sub
  23.     R = xS.Cells(Rows.Count, 1).End(xlUp).Row + 5
  24. With RepSht
  25.      .Range("A1:A" & R) = xS.Range("AJ1:AJ" & R).Value  'pkg
  26.      .Range("B1:B" & R) = xS.Range("B1:B" & R).Value 'MO
  27.      
  28.      .Range("C1:C" & R).NumberFormatLocal = "@"   'Date time
  29.      .Range("C1:C" & R) = xS.Range("L1:L" & R).Value   'Date time
  30.      
  31.      .Range("D1:D" & R) = xS.Range("A1:A" & R).Value 'LOTID

  32.      .Range("E1:E" & R) = xS.Range("D1:D" & R).Value  'DIE TYPE
  33.      .Range("F1:F" & R) = xS.Range("P1:P" & R).Value   'STEP
  34.      .Range("G1:G" & R) = xS.Range("M1:M" & R).Value  ' MO QTY
  35.      .Range("AA1:AA" & R) = xS.Range("Q1:Q" & R).Value   '  QTY
  36.      .Range("H8").Value = "TBG1"
  37.      .Range("I8").Value = "PGH1"
  38.      .Range("J8").Value = "SLS1"
  39.      .Range("K8").Value = "WG"
  40.      .Range("L8").Value = "DE01"
  41.      .Range("M8").Value = "WM01"
  42.      .Range("N8").Value = "FL01"
  43.      .Range("O8").Value = "LWS1"
  44.      .Range("P8").Value = "WS01"
  45.      .Range("Q8").Value = "UTI1"
  46.      .Range("R8").Value = "VS01"
  47.      .Range("S8").Value = "QVS1"
  48.      .Range("T8").Value = "RQVS1"
  49.      .Range("U8").Value = "DB"
  50.      .Range("V1:W" & R) = xS.Range("E1:F" & R).Value  'CUST DEVICE
  51.      .Range("X1:X" & R) = xS.Range("AD1:AD" & R).Value  'Substrate
  52.      .Range("Y1:Y" & R) = xS.Range("AE1:AE" & R).Value  'B/D No
  53.      .Range("Z1:Z" & R) = xS.Range("AQ1:AQ" & R).Value  'flow
  54.      .Range("A8").Value = "PKG"
  55.      .Range("A7").Value = ""
  56.      .Range("X8").Value = "Substrate"
  57.      .Range("X7").Value = ""
  58.      .Range("Y8").Value = "B/D No."
  59.      .Range("Y7").Value = ""
  60.      .Range("D2").Value = ""
  61.      .Range("AA8").Value = ""
  62.      .Range("A1").Value = "1ST Flow On Hand Report"
  63.      .Range("A2").Value = Now()
  64. End With

  65. Dim RRR&, xAArea As Range, xRRR As Range, xHH As Range, Q, TTTT, XXX
  66. RRR = [FMC!A65536].End(xlUp).Row: If RRR < 9 Then Exit Sub
  67. Set xAArea = Sheets("FMC").Range("A9:A" & RRR)
  68. For Each xRRR In xAArea
  69.     Q = xRRR(1, 26)
  70.     Q = Mid(Q & ",QVS", InStr(Q, "QVS") + 4) '取 QVS 以後字串
  71.     For Each TTTT In Array("SPC", "SCL")
  72.         XXX = InStr(Q, TTTT): If XXX > 0 Then xRRR(1, 26) = Left(Q, XXX + 2): Exit For
  73.     Next
  74. Next
  75. With RepSht
  76. '     For g = 3500 To 8 Step -1
  77. '        If .Cells(g, "V") Like "*CSP*" Or .Cells(g, "V") Like "*L1*" Or .Cells(g, "V") Like "*L2*" _
  78. '           Or .Cells(g, "V") Like "*ENG*" Or .Cells(g, "A") Like "LQFP*" Or .Cells(g, "A") Like "PLCC*" _
  79. '           Or .Cells(g, "A") Like "SOP*" Or .Cells(g, "A") Like "SSOP*" Or .Cells(g, "A") Like "TSOP*" _
  80. '           Or .Cells(g, "A") Like "TSSOP*" Or .Cells(g, "A") Like "TFBGA*" Then
  81. '            .Rows(g).Delete
  82. '        End If
  83. '     Next
  84. RepSht.Select
  85.   For h = 9 To 3500
  86.     .Cells(h, "AA").Select
  87.     Selection.Cut
  88.     Select Case .Cells(h, "F").Value
  89.     Case "TBG1"
  90.      .Cells(h, "H").Select
  91.      ActiveSheet.Paste
  92.     Case "PGH1"
  93.      .Cells(h, "I").Select
  94.      ActiveSheet.Paste
  95.     Case "SLS1"
  96.      .Cells(h, "J").Select
  97.      ActiveSheet.Paste
  98.     Case "DE01"
  99.      .Cells(h, "L").Select
  100.      ActiveSheet.Paste
  101.     Case "WM01"
  102.      .Cells(h, "L").Select
  103.      ActiveSheet.Paste
  104.     Case "FL01"
  105.      .Cells(h, "N").Select
  106.      ActiveSheet.Paste
  107.     Case "LWS1"
  108.      .Cells(h, "O").Select
  109.      ActiveSheet.Paste
  110.     Case "WS01"
  111.      .Cells(h, "P").Select
  112.      ActiveSheet.Paste
  113.     Case "UTI1"
  114.      .Cells(h, "Q").Select
  115.      ActiveSheet.Paste
  116.     Case "VS01"
  117.      .Cells(h, "R").Select
  118.      ActiveSheet.Paste
  119.     Case "QVS1"
  120.      .Cells(h, "S").Select
  121.      ActiveSheet.Paste
  122.     Case "RQVS1"
  123.      .Cells(h, "T").Select
  124.      ActiveSheet.Paste
  125.     Case "DB"
  126.      .Cells(h, "U").Select
  127.      ActiveSheet.Paste
  128.    End Select
  129.   Next
  130.     For e = 9 To 3500
  131.       If .Cells(e, "F") Like "WG*" Then
  132.             .Cells(e, "AA").Select
  133.             Selection.Cut
  134.             .Cells(e, "K").Select
  135.             ActiveSheet.Paste
  136.       End If
  137.     Next
  138. End With
  139. 'xB.Close 0
  140. Dim RR&, xArea As Range, xRR As Range, xH As Range, T, TT, XX
  141. RR = [FMC!A65536].End(xlUp).Row: If RR < 9 Then Exit Sub
  142. Set xArea = Sheets("FMC").Range("A9:A" & R)
  143. For Each xRR In xArea
  144.     T = xRR(1, 25): xRR(1, 25) = Mid(T, InStr(T, "-") + 1)
  145.     xRR(1, 24) = Right(xRR(1, 24), 9)
  146.       
  147.     T = xRR(1, 5):  T = Left(T, 2) & "-" & Mid(T, 24, 1) & "-" & Mid(T, 23, 4)
  148. Next
  149. xArea.Resize(, 26).Sort Key1:=xArea(1, 1), Order1:=xlAscending, _
  150.                        Key2:=xArea(1, 25), Order2:=xlAscending, Header:=xlNo
  151. Application.DisplayAlerts = False
  152. For Each xRR In xArea
  153.     If xRR & xRR(1, 2) <> xRR(0) & xRR(0, 2) Then Set xH = xRR
  154.     If xRR & xRR(1, 2) <> xRR(2) & xRR(2, 2) Then
  155.       Range(xH, xRR).Merge: Range(xH(1, 2), xRR(1, 2)).Merge
  156.       Range(xH, xRR).Merge: Range(xH(1, 3), xRR(1, 3)).Merge
  157.       Range(xH, xRR).Merge: Range(xH(1, 7), xRR(1, 7)).Merge
  158.       Range(xH, xRR).Merge: Range(xH(1, 22), xRR(1, 22)).Merge
  159.       Range(xH, xRR).Merge: Range(xH(1, 23), xRR(1, 23)).Merge
  160.       Range(xH, xRR).Merge: Range(xH(1, 24), xRR(1, 24)).Merge
  161.       Range(xH, xRR).Merge: Range(xH(1, 25), xRR(1, 25)).Merge
  162.       Range(xH, xRR).Merge: Range(xH(1, 26), xRR(1, 26)).Merge
  163.       Range(xH, xRR(1, 26)).Borders.LineStyle = 1
  164.       For i = 7 To 10
  165.           Range(xH, xRR(1, 26)).Borders(i).Weight = xlMedium
  166.       Next i
  167.     End If
  168. Next
  169. With RepSht
  170.     Sheets("FMC").Select
  171.     Cells.Select
  172.     Selection.Font.Size = 14
  173.     With Selection.Font
  174.         .Name = "Arial"
  175.         .Size = 14
  176.         .Strikethrough = False
  177.         .Superscript = False
  178.         .Subscript = False
  179.         .OutlineFont = False
  180.         .Shadow = False
  181.         .Underline = xlUnderlineStyleNone
  182.         .ThemeColor = xlThemeColorLight1
  183.         .TintAndShade = 0
  184.         .ThemeFont = xlThemeFontNone
  185.     End With
  186.     Range("A8:Z8").Select
  187.     With Selection.Interior
  188.         .Pattern = xlSolid
  189.         .PatternColorIndex = xlAutomatic
  190.         .Color = 255
  191.         .TintAndShade = 0
  192.         .PatternTintAndShade = 0
  193.     End With
  194.     With Selection.Font
  195.         .ThemeColor = xlThemeColorDark1
  196.         .TintAndShade = 0
  197.     End With
  198. End With
  199.     Range("A8").Select
  200.     ActiveWindow.Zoom = 63

  201. Call 調整
  202.    
  203. End Sub

  204. Sub 報表_清除()
  205. Sheets("FMC").UsedRange.EntireRow.Delete
  206. End Sub

  207. Sub 調整()
  208. Dim RepSht As Worksheet
  209. Set RepSht = Sheets("FMC")
  210. With RepSht
  211.     Columns("A:A").Select
  212.     Selection.ColumnWidth = 30
  213.     Columns("B:B").Select
  214.     Selection.ColumnWidth = 11.63
  215.     Columns("C:C").Select
  216.     Selection.ColumnWidth = 16
  217.     Columns("D:D").Select
  218.     Selection.ColumnWidth = 20.88
  219.     Columns("E:E").Select
  220.     Selection.ColumnWidth = 8.25
  221.     Columns("F:F").Select
  222.     Selection.ColumnWidth = 9.25
  223.     Columns("G:G").Select
  224.     Selection.ColumnWidth = 10
  225.     Selection.NumberFormatLocal = "#,##0_ "
  226.     Columns("H:U").Select
  227.     Selection.ColumnWidth = 8.63
  228.     Columns("V:V").Select
  229.     Selection.ColumnWidth = 40.38
  230.     ActiveWindow.SmallScroll ToRight:=11
  231.     Columns("W:W").Select
  232.     Selection.ColumnWidth = 59.75
  233.     Columns("X:X").Select
  234.     Selection.ColumnWidth = 15.5
  235.     Columns("Y:Y").Select
  236.     Selection.ColumnWidth = 10.5
  237.     ActiveWindow.SmallScroll ToRight:=4
  238.     Columns("Z:Z").Select
  239.     Selection.ColumnWidth = 93.38
  240.     Range("A7").Select
  241. End With

  242. End Sub
複製代碼

作者: 准提部林    時間: 2016-1-24 20:51

這檔案頗費時,只能做主要程式,其它細節及不足處,自行去套改∼∼
 
[attach]23169[/attach]
 
作者: v03586    時間: 2016-1-26 21:59

回復 19# 准提部林


    感謝大大的協助!!! 剩下得我自行研究
至於劃線部分能像這樣嗎? 依照B/D No
如圖目前是這樣劃線
[attach]23184[/attach]


依照B/D No 劃線方式
[attach]23185[/attach]
作者: 准提部林    時間: 2016-1-27 12:39

回復 20# v03586


v2版:
[attach]23187[/attach]
作者: v03586    時間: 2017-7-18 12:00

回復 6# stillfish00


    請教一下大大的方式, 是設定格式後再暫存, 後續再開新的Excel 頁面貼上結果
   想請教如何在跑迴圈的同時就即時層現結果呢? 不需要再開新Excel 頁面貼上的方式




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)