- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
2#
發表於 2015-9-9 11:38
| 只看該作者
傳統方法,速度不快,但容易懂:- Sub TEST()
- Dim xR As Range, xRow As Range, xA As Range, M%, N&
- [整理後資料!3:60000].ClearContents
- Application.ScreenUpdating = False
-
- For Each xR In Sheets("原本資料").UsedRange.Columns(1).Cells
- 'A欄有〔12位數〕編號時
- If xR Like String(12, "#") Then
- Set xRow = xR.Resize(1, 12) '定位每筆首列資料
- Set xA = [整理後資料!A65536].End(xlUp)(2) '取得預計填入位置
- If xA.Row > 3 Then Set xA = xA(2) '第2筆以後,空一行
- M = 1: N = 0: GoTo 101 '標記,直接跳至下一列
- End If
-
- '填入右方資料
- If M = 1 Then N = N + 1: xA(N, 13).Resize(1, 11) = xR(1, 2).Resize(1, 11).Value
-
- '填入左方資料
- If (xR(2) <> "" Or xR(2, 2) = "") And N > 0 Then xA.Resize(N, 12) = xRow.Value: M = 0: N = 0
- 101: Next
- End Sub
複製代碼 參考附件:
檔案v01.rar (13.39 KB)
|
|