返回列表 上一主題 發帖

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

回復 7# kilon
  1. Sub nn()
  2. Dim A As Range, B As Range, r%, Sh As Worksheet
  3. With Sheet1
  4. Set A = .[A1] 'A1為起點
  5. Do Until A.Address = first '直到再度找到的位置是A1
  6. Set B = .Columns("G").Find("***  報 表 結 束  ***", after:=A.Offset(, 6)) 'G欄中找到報表結束
  7. r = B.Row - A.Row
  8. Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count))
  9. Sh.Name = Replace(A.Offset(3, 3).Text, "/", "")
  10. A.Resize(r + 1, 13).Copy Sh.[A1]
  11. Do Until A.Row > B.Row Or A.Address = first '避免一個報表結束內有1個以上科目
  12.   Set A = .Columns("A").Find(A, after:=A) '找下一個起點
  13. Loop
  14. first = "$A$1"
  15. Loop
  16. End With
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2012-9-3 18:23 編輯

回復 9# kilon

Set B = .Columns("G").Find("報 表 結 束", after:=A.Offset(, 6))
這是因為要在G欄中找到字串,而尋找的位置必須是找到所要的科目位置(A的位置)以後
故此設定尋找的after參數,從A列所在儲存格以下的G欄開始尋找
Resize式擴展區域的意思
從A的位置擴展成r+1列,13欄的範圍,作為要複製的範圍
A是在A欄,像又擴展13欄才會變成A:M欄
學海無涯_不恥下問

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題