- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
5#
發表於 2023-4-21 11:17
| 只看該作者
謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與排序,學習方案如下,請各位前輩指教
執行結果:
Option Explicit
Sub TEST()
Application.ScreenUpdating = False
Dim Brr, Crr, Y, Z, R&, C&, i&, j&, T$
Dim xR As Range, Sh As Worksheet
ReDim Crr(1 To 1000, 1 To Columns.Count - 1)
For Each Sh In Sheets
If InStr(Sh.Name, "站") = 1 Then
Set xR = Intersect(Sh.UsedRange, Sh.[U:Y]): Brr = xR
For C = 1 To UBound(Brr, 2)
If Brr(1, C) = "" Then GoTo i01 Else: j = j + 1: i = 0
For R = 1 To UBound(Brr)
T = Brr(R, C)
If R = 1 Then T = Left(T, 3) & Format(Mid(T, 4), "00")
If T <> "" Then i = i + 1: Crr(i, j) = T
Next
If i > Z Then Z = i
i01: Next
End If
Next
With Sheets("彙總").[A1].Resize(Z, j)
.CurrentRegion.Clear
.Value = Crr
.Sort Key1:=.Item(1), Order1:=1, Header:=2, Orientation:=2
For C = 1 To j
Intersect(.Cells, .Item(C).EntireColumn).Sort _
Key1:=.Item(C), Order1:=1, Header:=1, Orientation:=1
Next
End With
Set Sh = Nothing: Set xR = Nothing: Erase Brr, Crr
End Sub |
|