kiendaide1
Thành viên chính thức
- Tham gia
- 3/4/13
- Bài viết
- 93
- Được thích
- 4
Thử cái rownum =100 coiEm có 1 sheet có nhiều dư liệu em muôn tách 100 dòng từ sheet ban đâu ra thành nhiêu sheet khác nhau (dư nguyên tiêu đề mang qua các sheet khác. em viết lệnh VBA nhưng chay lỗi. phiền các bác sửa hộ em với ạ. Đoan code em có đính kèm ạ
Bài này đã hỏi ở đây rồi mà.Em có 1 sheet có nhiều dư liệu em muôn tách 100 dòng từ sheet ban đâu ra thành nhiêu sheet khác nhau (dư nguyên tiêu đề mang qua các sheet khác. em viết lệnh VBA nhưng chay lỗi. phiền các bác sửa hộ em với ạ. Đoan code em có đính kèm ạ
bài ơ đáy code ko chạy được bác ạ. nên em đang hỏi lạiBài này đã hỏi ở đây rồi mà.
em mới gửi fiel lên ạSao không đưa file Excel lên nhỉ?
Nếu không chạy được thì nên nhờ bạn đã viết cho bài ở đó sửa chứ, sao lại bỏ qua bạn đó mà đi đăng bài mới để nhờ vậy, bạn làm thế này thì người khác không ai muốn sửa lại code của bạn kia đâu.bài ơ đáy code ko chạy được bác ạ. nên em đang hỏi lại
không được bác ạ. em thử các kiểu ròi ko đượcThử cái rownum =100 coi
Bạn đã enable macro trong file chưaNó báo lôi như vậy không chạy ạ.
mình đã là ròi nhưng ko hiểu sao ko chạyBạn đã enable macro trong file chưa
Nhìn cái lỗi kìa có vẻ chưa bật unlock file. Mà thớt quả quyết rằng làm hết cách rồi. Nên mình không muốn góp ý gì thêmBạn đã enable macro trong file chưa
unlock file là thế nào bác em chưa hiểu ýNhìn cái lỗi kìa có vẻ chưa bật unlock file. Mà thớt quả quyết rằng làm hết cách rồi. Nên mình không muốn góp ý gì thêm
Sub Test()
Dim wb As Workbook
Dim ThisSheet As Worksheet
Dim NumOfColumns As Integer
Dim RangeTieuDe As Range
Dim RangeToCopy As Range
Dim WorkbookCounter As Integer
Dim RowsInFile
Dim Prefix As String
Application.ScreenUpdating = False
'Initialize data
Set ThisSheet = ThisWorkbook.ActiveSheet
Set RangeTieuDe = ThisSheet.Range("VungTieuDe")
NumOfColumns = ThisSheet.UsedRange.Columns.Count
WorkbookCounter = 1
RowsInFile = 500 'how many rows (incl. header) in new files?
Prefix = "test" 'prefix of the file name
For p = 2 To ThisSheet.UsedRange.Rows.Count Step RowsInFile - 1
Set wb = Workbooks.Add
RangeTieuDe.Copy wb.Sheets(1).Range("A1")
'Paste the chunk of rows for this file
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 2, NumOfColumns))
RangeToCopy.Copy wb.Sheets(1).Range("A2")
'Save the new workbook, and close it
wb.SaveAs ThisWorkbook.Path & "\" & Prefix & "_" & WorkbookCounter
wb.Close
'Increment file counter
WorkbookCounter = WorkbookCounter + 1
Next p
Application.ScreenUpdating = True
Set wb = Nothing
End Sub
@kiendaide1 Code đã sửa lại:
Rich (BB code):Sub Test() Dim wb As Workbook Dim ThisSheet As Worksheet Dim NumOfColumns As Integer Dim RangeTieuDe As Range Dim RangeToCopy As Range Dim WorkbookCounter As Integer Dim RowsInFile Dim Prefix As String Application.ScreenUpdating = False 'Initialize data Set ThisSheet = ThisWorkbook.ActiveSheet Set RangeTieuDe = ThisSheet.Range("VungTieuDe") NumOfColumns = ThisSheet.UsedRange.Columns.Count WorkbookCounter = 1 RowsInFile = 500 'how many rows (incl. header) in new files? Prefix = "test" 'prefix of the file name For p = 2 To ThisSheet.UsedRange.Rows.Count Step RowsInFile - 1 Set wb = Workbooks.Add RangeTieuDe.Copy wb.Sheets(1).Range("A1") 'Paste the chunk of rows for this file Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 2, NumOfColumns)) RangeToCopy.Copy wb.Sheets(1).Range("A2") 'Save the new workbook, and close it wb.SaveAs ThisWorkbook.Path & "\" & Prefix & "_" & WorkbookCounter wb.Close 'Increment file counter WorkbookCounter = WorkbookCounter + 1 Next p Application.ScreenUpdating = True Set wb = Nothing End Sub
Bạn tìm google việc enable macroView attachment 287195
Em cam ơn ạ. Nhưng em chay nó báo vậy là sao bác nhỉ
Bạn tìm google việc enable vba
Để tách 100 dòng từ sheet ban đầu ra thành các sheet khác nhau dữ nguyên tiêu đề, bạn có thể sử dụng VBA để lặp lại quá trình tạo sheet mới và sao chép dữ liệu từ sheet ban đầu sang các sheet mới.
Dưới đây là một đoạn mã VBA mẫu để thực hiện công việc này:
Sub SplitData()
' Lấy số dòng dữ liệu trên sheet ban đầu
Dim totalRows As Long
totalRows = ActiveSheet.UsedRange.Rows.Count
' Tính số lượng sheet mới cần tạo
Dim numSheets As Long
numSheets = totalRows \ 100
If totalRows Mod 100 > 0 Then
numSheets = numSheets + 1
End If
' Tạo các sheet mới và sao chép dữ liệu từ sheet ban đầu sang
Dim currentRow As Long
currentRow = 1
For i = 1 To numSheets
Dim newSheet As Worksheet
Set newSheet = ThisWorkbook.Sheets.Add(After:=ActiveSheet)
newSheet.Name = "Sheet" & i
' Sao chép tiêu đề
Rows(1).Copy newSheet.Range("A1")
' Sao chép dữ liệu
Dim numRows As Long
If currentRow + 99 < totalRows Then
numRows = 100
Else
numRows = totalRows - currentRow + 1
End If
Rows(currentRow & ":" & currentRow + numRows - 1).Copy newSheet.Range("A2")
currentRow = currentRow + numRows
Next i
End Sub
1. Không có name range VungTieuDe thì tạo name chứ file bạn gửi có tên đó đâu.View attachment 287196
Nó báo đoan này bác ạ. bác xem hộ em với
Bài đã được tự động gộp:
View attachment 287197
Nó ko ra kết quả các sheet khác bác ạ
Bạn mói là kiên nhẫn. Thớt chỉ việc chep lại cái bài cũ, đặt cái tiêu đề vỏn vẹn 4 từ.Haha. Không chạy được mà phải chờ 2 năm sau mới hỏi lại. Thật là kiên nhẫn.
Đợi 2 năm nữa.Bạn tìm google việc enable macro