返回列表 上一主題 發帖

[發問]儲存格設定範圍分割成不同工作表

[發問]儲存格設定範圍分割成不同工作表

請教板上先進,最近在會計上處理一份資料
參閱附件  儲存格設定範圍分割成不同工作表.zip (13.07 KB)

1.希望可以將黃色彼此中間的範圍分開成不同的工作表
 較有邏輯的是每張報表結束時,都有個”報表結束”

2.同時希望命名的方式是以藍色的部分
 但目前只能抓到比較固定的關係是藍色的部分跟上一張報表結束的相對位置是固定的

想請問這可以怎麼寫呢?
還麻煩各位大大了,感謝!

感謝大大 我試試看!!!

回復 4# white945

TOP

white 大大
用你的程式碼,會在"r = B.Row - A.Row" 發生錯誤,錯誤的原因是沒有設定物件變數或 With 區塊變數
是因為在Dim那邊沒有針對r設定變數嗎?

b]回復 4# white945

TOP

版主大大,你的成功!
不過我遇到一個問題,因為目前給的資料上都只有一頁的報表,但有些其實大於二頁,ex:營業外收入

附件如下:
附件.zip (18.15 KB)
灰色是新增的部分,而藍色特別標示是因為跟報表結束的二頁中間差距比起來是不同的

請問這樣子要如何修改呢?
目前自己測試到目前的結果好像是在之前抓範圍的時候,會重複抓到範圍,導致命名會重複
不過其實自己也不確定...這個VBA其實寫的我還沒有辦法參透呀...
麻煩大大們了!

回復 3# GBKEE

TOP

回復 8# Hsieh

謝謝!!成功了!!
可以麻煩大大看看我對這個程式碼的的邏輯理解是否正確

Sub SplitSheet() 
Dim A As Range, B As Range, r%, Sh As Worksheet 不懂這裡設定r%是什麼意思
With Sheet1
Set A = .[A1] 'A1為起點
Do Until A.Address = first '直到再度找到的位置是A1
first = "$A$1"
Set B = .Columns("G").Find("報 表 結 束", after:=A.Offset(, 6)) 'G欄中找到報表結束
r = B.Row - A.Row

這邊我有點不太理解
只知道找到報表結束,但after:=A.Offset(, 6) 這個寫法我不曉得什麼意思,這樣抓到的範圍是什麼?
另外r = B.Row - A.Row 我想應該上一個問題解決完這個部分應該就可以理解:)


Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count)) 
Sh.Name = Replace(A.Offset(3, 3).Text, "/", "")
A.Resize(r + 1, 13).Copy Sh.[A1]

請問這邊的Resize是什麼功能?

Set A = .Columns("A").Find(A, after:=A) '找下一個起點

這個應該跟第一個問題after:=A.Offset(, 6)有關係吧...

Loop
End With
End Sub

感謝大大

TOP

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題