Chào Thầy, Nhờ Thầy hướng dẫn: Gộp dữ liệu phần 2 sao làm bị báo lỗi màu vàng, nhờ Thầy chỉ ra lỗi sai, Cám ơn
Chào bạn chưa có biến dongcuoiwb4 bạn cần khai báo nó trước
Mình sửa rồi, nhưng gặp phải lỗi này. Nhờ Thầy hướng dẫn. Cám ơn Thầy
Chào bạn ở đây bạn có hai biến dongcuoi_wb4
Bạn dim hai lần DongCuoi_Wb4
Option Explicit
Sub Luu_DuLieu()
'Thu muc chon file
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True 'cho phep chon nhieu file
.Show 'Hien cua so chon file
Dim i As Integer
For i = 1 To .SelectedItems.Count
'Xet file duoc chon
Dim wb_KQ As Workbook 'Bien workbook ket qua (Bang luong tong hop)
Dim wb_1 As Workbook 'Bien workbook duoc chon tu thu muc (Tung file bang luong chi tiet)
Set wb_KQ = ThisWorkbook
Set wb_1 = Workbooks.Open(.SelectedItems(i))
'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)
Dim DongCuoi_KQ As Long
DongCuoi_KQ = wb_KQ.Sheets("Data_TienLuong").Range("A" & Rows.Count).End(xlUp).Row
'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)
Dim DongDau_CT As Long
DongDau_CT = 8
Dim DongCuoi_CT As Long
DongCuoi_CT = wb_1.Sheets(1).Range("F" & Rows.Count).End(xlUp).Row
'B3: xac dinh khoang cach
Dim KhoangCach As Long
KhoangCach = DongCuoi_CT - DongDau_CT + 1
'B4: luu
wb_KQ.Sheets("Data_TienLuong").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = _
wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value
'B5: Dong file noi dung
wb_1.Close SaveChanges:=False
Next i
End With
End Sub
bạn xem code nhé.
Thầy ơi, Em đang thực hành phần 2, làm được 2 book, còn book 3 không được. Còn Thầy hướng dẩn là dạng Tổng quát
Chào bạn code mình đẩy lên là dạng tổng quát đó, bạn có thể đẩy file code của bạn lên được không?
https://drive.google.com/file/d/1fmTs...
Nhờ Thầy chỉ ra lỗi sai ở bài thực hành phần 2. cám ơn Thầy
Nhờ Thầy hướng dẫn giúp ạ
Chào bạn Với code của bạn bạn cần chỉ ra dòng cuối là dòng nào của book nào? bạn lên sử dụng code trên của mình ghi dữ liệu vào vùng cần bằng cách sử dụng vòng lặp nhê.
Option Explicit
Sub Luu_DuLieu()
'Thu muc chon file
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True 'cho phep chon nhieu file
.Show 'Hien cua so chon file
Dim i As Integer
For i = 1 To .SelectedItems.Count
'Xet file duoc chon
Dim wb_KQ As Workbook 'Bien workbook ket qua (Bang luong tong hop)
Dim wb_1 As Workbook 'Bien workbook duoc chon tu thu muc (Tung file bang luong chi tiet)
Set wb_KQ = ThisWorkbook
Set wb_1 = Workbooks.Open(.SelectedItems(i))
'B1: xac dinh dong cuoi bang tong hop (Bang luong tong hop)
Dim DongCuoi_KQ As Long
DongCuoi_KQ = wb_KQ.Sheets("TH").Range("A" & Rows.Count).End(xlUp).Row
'B2: xac dinh dong dau va dong cuoi bang chi tiet (Tung file bang luong chi tiet)
Dim DongDau_CT As Long
DongDau_CT = 8
Dim DongCuoi_CT As Long
DongCuoi_CT = wb_1.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
'B3: xac dinh khoang cach
Dim KhoangCach As Long
KhoangCach = DongCuoi_CT - DongDau_CT + 1
'B4: luu
wb_KQ.Sheets("TH").Range("A" & DongCuoi_KQ + 1 & ":BM" & DongCuoi_KQ + KhoangCach).Value = wb_1.Sheets(1).Range("A" & DongDau_CT & ":BM" & DongCuoi_CT).Value
'B5: Dong file noi dung
wb_1.Close SaveChanges:=False
Next i
End With
End Sub
Bạn thay đổi vùng lấy theo code nhé.
Chào Thầy
Nhờ Thầy xem qua kết quả trước và sau khi gộp dữ liệu bằng
VBA khi học bài “Gộp dữ liệu ” của chương
8, bài 8.
Kết quả ban đầu : Không bị lỗi gì cả, tuy nhiên không giống
Format như bản gốc một số trường hợp /cột , hệ thống excel tự format là kiểu số
( bản gốc là kiểu chuỗi mà ký tự là số)
5 dòng đầu tiên : Làm thủ công , đúng với định dạng của nơi
cho.
5 dòng cuối cùng là kết quả chạy tự động theo lệnh macro VBA
Tạm thời có 2 lỗi : Format kiểu ngày bị ngắn lại 2 ký tự ?
và số chứng từ (voucher no) bị mất 3 ký tự là 000 so với bản gốc của nơi cho.
Hỏi : Làm sao khắc phục định dạng này ?
Học viên cảm ơn Thầy nhiều ạ.
Chào bạn khi gộp dữ liệu xong phần chỉnh định dạng bạn cần dùng code chỉnh nhé.
Dạng code sau
Sub gopdulieu
// code gôp
// code dinh dạng
end sub
Thank you Thầy @Tuấn Ba : HV chỉ định dạng được kiểu ngày theo custom = "DD-MM-YYYY" thì Okay;
Nhưng Cột "Chứng từ" bị thiếu hụt 3 ký tự trước "000" Thầy ơi - Dù kết quả là kiểu chuỗi rồi.
Chào bạn bạn có thể format bao nhiêu ký tự nhé.
All Right. I did very well. Many thanks again.
Text(1234,"0000000") Okay
Cảm ơn bạn đã tin tưởng và đồng hành cùng gitiho, chúc bạn học tốt cùng gitiho.
Chào Thầy
Khi lọc các cột :
1)
Lọc loại cell trống , tức khác Blank thì Okay
như “<>”
2)
Lọc loại bỏ cell có giá trị zero thì dùng từ
khóa, ký hiệu gì ạ ? Trong hình đang bị lỗi.
Cảm ơn Thầy.
Thầy ơi ! File của HV đang lọc bởi người dùng chọn : Data > AutoFilter . mà muốn lọc khác zero thì ra code như thế này, và số liệu mỗi lần mỗi khác nha, nên ..... lệnh này không khả thi ạ . Vì mỗi lần hệ thống phải .... Lookup một số khác và chỉ k chọn zero thôi. CODE TRÊN LÀ HẰNG SỐ SẼ KHÔNG HIỂU NẾU NHƯ LẦN SAU CÓ SỐ KHÁC Ạ.
PLEASE HEP ME.
Sub Macro1()
'
' Macro1 Macro
'
'
Rows("1:1").Select
Selection.AutoFilter
Range("E1").Select
ActiveSheet.Range("$A$1:$X$599").AutoFilter Field:=5, Criteria1:=Array("1", _
"1,041", "1,199", "1,344", "1,463", "1,598", "10", "100", "106", "107", "108", "11", "110" _
, "112", "115", "118", "119", "12", "121", "124", "125", "13", "136", "139", "14", "141", _
"144", "148", "15", "150", "152", "155", "156", "158", "16", "160", "166", "17", "172", _
"179", "18", "19", "191", "195", "197", "2", "2,285", "2,335", "2,557", "20", "200", "21", _
"210", "22", "225", "23", "231", "233", "24", "25", "251", "26", "266", "268", "27", "28", _
"29", "298", "299", "3", "3,023", "3,226", "30", "300", "305", "31", "32", "33", "339", "34" _
, "340", "35", "36", "37", "370", "38", "387", "390", "4", "40", "400", "413", "42", "420", _
"424", "43", "440", "445", "446", "447", "45", "461", "47", "48", "488", "49", "494", "5", _
"50", "502", "51", "53", "533", "55", "56", "57", "57,574", "575", "578", "58", "584", "587" _
, "6", "60", "606", "619", "62", "65", "668", "68", "69", "697", "7", "70", "72", "720", "75", _
"79", "8", "80", "807", "81", "816", "817", "82", "821", "849", "85", "88", "880", "89", "9", _
"96", "99"), Operator:=xlFilterValues
End Sub
Chào bạn phần này bạn có thể sử dụng vòng lặp kết hợp với if nhé dạng như sau
for i = 1 to n
if(range("?"&i)) <>0 then
range("?"&i) = ....
end if
next i