vuthaiha90 > 06-07-18, 04:01 PM
(06-07-18, 03:50 PM)Xuân Thanh Đã viết:(06-07-18, 09:56 AM)vuthaiha90 Đã viết: Em đã lấy các file của 2 bác về chạy thử và đã chuyển về 2003 dùng, đã OK. Em cảm ơn ạ. Nhưng có 1 ý nữa, không biết các bác có thể giúp nốt em không ạ: chuyển dữ liệu đang từ dọc thành ngang được không ạ, vì số hiệu tài khoản là cố định, số dòng là cố định (833-19+1=815 dòng dữ liệu), thì cứ 815 dòng thì ngắt, nhảy sang cột mới (tức Mã KH mới), dạng nó kiểu kiểu như này ạ:
Số hiệu TK 34902075 34902076 34902077
Nợ Có Nợ Có Nợ Có
1
1011
13111
13121
......
899020
Làm trong Excel hay Access?
Xuân Thanh > 07-07-18, 10:47 AM
(06-07-18, 04:01 PM)vuthaiha90 Đã viết: Dạ nếu bác làm được bên access thì hay, tại em thấy thích access. Còn không thì làm bên excel ạ
Sub TongHop()
Application.ScreenUpdating = False
Dim i As Long, j As Long, k As Long
Dim nFile As Long
nFile = S01.Range("B1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
S02.Cells.ClearContents
S02.Range("A1") = S01.Range("A1")
S02.Range("A2") = S01.Range("A2")
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("B" & i))
Set Ws = Wb.Worksheets("G011241")
S02.Cells(2, 2 * i) = S01.Range("A3")
S02.Cells(2, 2 * i + 1) = S01.Range("A4")
S02.Cells(1, i * 2) = Ws.Range("C3")
j = 2
For k = 19 To 833
If i = 1 Then S02.Cells(j + 1, 1) = Ws.Range(("B" & k))
S02.Cells(j + 1, i * 2) = CDbl(Ws.Range("H" & k))
S02.Cells(j + 1, i * 2 + 1) = CDbl(Ws.Range("I" & k))
j = j + 1
Next
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub
vuthaiha90 > 09-07-18, 09:44 AM
Sub ChonFile2()
Dim i As Long, j As Long
j = S01.Range("c1000000").End(xlUp).Row
S01.Range("c1:c" & j).ClearContents
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Show
For i = 1 To .SelectedItems.Count
S01.Range("c" & i) = .SelectedItems(i)
Next
End With
End Sub
Sub TongHop2()
Application.ScreenUpdating = False
Dim i As Long
Dim nFile As Long
nFile = S01.Range("c1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
S02.Cells.ClearContents
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("C" & i))
Set Ws = Wb.Worksheets("G034821")
S02.Cells(820, i * 2) = Ws.Range("C3")
Ws.Range("D27:G27").Copy
S02.Cells(821, i * 2).PasteSpecial Transpose:=True
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub
Xuân Thanh > 09-07-18, 11:42 AM
vuthaiha90 > 09-07-18, 11:59 AM
(09-07-18, 11:42 AM)Xuân Thanh Đã viết: 1/ Sub ChonFile Đúng
2/ G011241 chỉ có 2 cột Nợ và Có, trong khi G034821 có 4 cột làm sao cho khớp? Muốn chuẩn thì phải sửa lại cả TongHop và TongHop2. Hoặc là tạo sẵn 4 cột từ TongHop hoặc Insert thêm 2 cột từ TongHop2 rồi chép dữ liệu qua
3/ File đóng nên không thể dùng lệnh Copy và Past được
4/ Tạo thêm một nút bấm để chọn file 2 và một nút bấm để tổng hợp 2
Xuân Thanh > 09-07-18, 12:10 PM
(09-07-18, 11:59 AM)vuthaiha90 Đã viết: 2/ vì G034821 có 4 cột mà mỗi 1 dòng cần lấy dữ liệu (ngày cuối cùng của kỳ báo cáo, cũng chính là dòng cuối cùng, nhưng số dòng là không cố định, vì có ông làm việc 5 ngày rồi nghỉ, có ông làm 6 ngày mới nghỉ; em làm trên kia đúng là quên cả cái điều kiện này, cứ lấy cố định D27:G27 sẽ có nhiều lúc sai), nên e mới định paste đặc biệt xoay ngang thành dọc, thành 1 cột, rồi cứ i = i*2 mà paste.
3/ sao mình copy paste bằng tay thì được mà vba lại không với file này bác nhỉ
4/ vâng, em có tạo thêm 2 nút là chọn file 2 và tổng hợp 2 mà bác
Xuân Thanh > 09-07-18, 12:26 PM
Sub TongHop2()
Application.ScreenUpdating = False
Dim i As Long, j As Long, k As Long, m As Long
Dim nFile As Long
nFile = S01.Range("c1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
j = S02.Range("C1000000").End(xlUp).Row
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("C" & i))
Set Ws = Wb.Worksheets("G034821")
'S02.Cells(820, i * 2) = Ws.Range("C3") Bo cau nay vi co roi
m = Ws.Range("D1000000").End(xlUp).Row
For k = 1 To 4
S02.Cells(j+k, i * 2 - 1) = CDbl(Ws.Cells(m, k + 3))
Next
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(J + 1, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(j + 1, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub
vuthaiha90 > 12-07-18, 04:33 PM
Xuân Thanh > 14-07-18, 09:50 AM
(12-07-18, 04:33 PM)vuthaiha90 Đã viết: Bác ơi, cho em lục lại topic này tý ạ. Chả là em dùng file này OK rồi (tuy cũng có ngồi chờ 1 tý), mà phòng em 4 người, mỗi người cũng làm công việc như vậy, em là người Tổng hợp kết quả cuối cùng, nên đằng nào cũng thế, em dùng luôn file này làm cho cả phòng. Nhưng khi dữ liệu cả phòng lên tới tầm 100 Mã KH thì cái G011241 kia Paste số liệu sang S02 khá lâu (cái này thì em hiểu vì nó nhiều dòng, nhiều cột, em chờ được), nhưng mà nó hay mở tự động 1 vài file bất kỳ trong 100 file G01124 kia lên lắm ạ + trong My document cũng xuất hiện file, mặc dù em không Copy vào đấy, folder chứa số liệu toàn để màn hình cho thuận tiện;
- với mỗi lần như Paste xong như vậy thì trong Folder chứa G01124 kia hiện lên 1 loạt file dạng như kiểu khi ta đang đọc file ấy rồi nhìn lại folder có 1 file mờ mờ hiển thị là bạn đang mở ý ạ; mặc dù việc copy paste diễn ra đã xong và trong code em thấy có Ws.Close mà sao vẫn bị vậy nhỉ.
+ Cái thứ 2 là khi xong G01124, em chuyển sang paste G03482, thì là chạy 1 phần xong đơ hoặc hiển thị "ActiveX component can't create object"; thế là em kill app đi và restart lại máy thì những file mờ mờ kia cũng mất và bấm lại tiếp Paste G03482 thì lại diễn ra bình thường (đường dẫn file vẫn còn đó, không phải chọn lại).
==>Cho em hỏi có phải do máy cơ quan em cấu hình thấp nên vậy, hay Excel chỉ làm được vài file, còn nhiều sẽ bị vậy ạ.
vuthaiha90 > 14-07-18, 02:37 PM
(14-07-18, 09:50 AM)Xuân Thanh Đã viết:(12-07-18, 04:33 PM)vuthaiha90 Đã viết: Bác ơi, cho em lục lại topic này tý ạ. Chả là em dùng file này OK rồi (tuy cũng có ngồi chờ 1 tý), mà phòng em 4 người, mỗi người cũng làm công việc như vậy, em là người Tổng hợp kết quả cuối cùng, nên đằng nào cũng thế, em dùng luôn file này làm cho cả phòng. Nhưng khi dữ liệu cả phòng lên tới tầm 100 Mã KH thì cái G011241 kia Paste số liệu sang S02 khá lâu (cái này thì em hiểu vì nó nhiều dòng, nhiều cột, em chờ được), nhưng mà nó hay mở tự động 1 vài file bất kỳ trong 100 file G01124 kia lên lắm ạ + trong My document cũng xuất hiện file, mặc dù em không Copy vào đấy, folder chứa số liệu toàn để màn hình cho thuận tiện;
- với mỗi lần như Paste xong như vậy thì trong Folder chứa G01124 kia hiện lên 1 loạt file dạng như kiểu khi ta đang đọc file ấy rồi nhìn lại folder có 1 file mờ mờ hiển thị là bạn đang mở ý ạ; mặc dù việc copy paste diễn ra đã xong và trong code em thấy có Ws.Close mà sao vẫn bị vậy nhỉ.
+ Cái thứ 2 là khi xong G01124, em chuyển sang paste G03482, thì là chạy 1 phần xong đơ hoặc hiển thị "ActiveX component can't create object"; thế là em kill app đi và restart lại máy thì những file mờ mờ kia cũng mất và bấm lại tiếp Paste G03482 thì lại diễn ra bình thường (đường dẫn file vẫn còn đó, không phải chọn lại).
==>Cho em hỏi có phải do máy cơ quan em cấu hình thấp nên vậy, hay Excel chỉ làm được vài file, còn nhiều sẽ bị vậy ạ.
Đúng là bostay.com. Bạn nói có 28 file sao giờ tới cả trăm? Lọc cỡ dó không đứng máy mới là chuyện lạ
Lời khuyên : Không nên để file ngoài Desktop sẽ làm chậm việc truy xuất số liệu.về lâu dài sẽ ảnh hưởng tới hệ điều hành