返回列表 上一主題 發帖

[發問] 跨欄置中與擷取文字問題

回復 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] 上述為參考資料來源
Report.rar (434.41 KB)

TOP

回復 11# v03586


    補充....
STEP 裡面 只要有WGD1  /   WGH1   /   WGP1 / WGS1  / WG01
都列入WG欄位裡面..!!!  WGxx都屬於WG製程欄位

TOP

回復 12# v03586


    Sorry....程式檔案中TBG1旁邊(右)製程欄位多加一個製程欄位PGH1
忘記加上去.....thanks

TOP

回復 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] 上述為參考資料來源
Report - updata.rar (362.32 KB)

TOP

請問是否有人會解題呢...!! 卡關了

TOP

回復 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



NewReport.rar (413.2 KB)

TOP

本帖最後由 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
複製代碼

TOP

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

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

想讓劃線變成這樣




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資料表

help.rar (292.68 KB)
  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
複製代碼

TOP

這檔案頗費時,只能做主要程式,其它細節及不足處,自行去套改∼∼
 
2F新報表程式_v1.rar (291.83 KB)
 

TOP

回復 19# 准提部林


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



依照B/D No 劃線方式

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題