返回列表 上一主題 發帖

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

用最基本的程式語法, 自行去研究, 不再多說明~~
  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
複製代碼

TOP

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

TOP

回復 20# v03586


v2版:
2F新報表程式_v2.rar (367.7 KB)

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題