Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,970
Định đố hay sao ấy chứ
Mã:
Sheets(Array("1", "2", "3", "4")).FillAcrossSheets Sheets("1").Range("B2")
(Nếu tôi nhớ không lầm thì tôi đã từng đố câu gần tương tự trong mục đối vui về VBA)

không anh ơi, em đâu dám đố ai, có bạn gửi câu đó vào hộp thư của em thì em giúp người ta gửi câu hỏi lên diễn đàn thôi mà.
Hộp thư của em không dùng để bàn về chuyên môn, chém gió thì được :D
 
Upvote 0
Xin nhờ các anh chị chỉnh giúp đoạn code trong file. Khi thêm đoạn code bên dưới vào thì kết quả cột K không chính xác. Ở những dòng tô màu tại cột K so với cột M
Mã:
            dArr(K, 11) = IIf(sArr(K, 21) <> Empty, sArr(K, 21), sArr(K, 35))
Xin cảm ơn.
Sao cột Nữ bạn lại muốn lấy dữ liệu của cột HTCTTH?
Nếu vẫn muốn thế thì bạn đem dòng đó dưới vòng lặp For J ...
Sửa mấy cái sArr(K, ..) thành sArr(I, ...)
 
Upvote 0
Sao cột Nữ bạn lại muốn lấy dữ liệu của cột HTCTTH?
Nếu vẫn muốn thế thì bạn đem dòng đó dưới vòng lặp For J ...
Sửa mấy cái sArr(K, ..) thành sArr(I, ...)
Cảm ơn Thầy đã giúp.
Em làm thế vì yêu cầu trong file thống kê lấy dữ liệu ở 2 cột nếu cột này dữ liệu trống thì sẽ lấy dữ liệu tại cột khác.
 
Upvote 0
Em chào các anh.
Em sưu tầm được cái này để làm nút tắt di chuyển qua lại 2 sheet.
Nhưng khi em dán vào Personal VBA thì nó báo lỗi dòng
Application.OnKey “%`”, “ToggleBack”
Các anh có thể giúp em không ạ. Em cám ơn
Mã:
Dim TabTracker As New TabBack_Class
Sub TabBack_Run()
'PURPOSE: Initiate Tab tracking and shortcut key trigger
‘SOURCE: www.TheSpreadsheetGuru.com
'Enable TabTracker class
Set TabTracker.AppEvent = Application
'Call ToggleBack macro when user keys alt + `
Application.OnKey “%`”, “ToggleBack”
End Sub
Sub ToggleBack()
'PURPOSE: Go Back to Previous Worksheet
‘SOURCE: www.TheSpreadsheetGuru.com
With TabTracker
On Error Resume Next
Workbooks(.WorkbookReference).Worksheets(.SheetReference).Activate
On Error GoTo 0
End With
End Sub
 
Upvote 0
Em chào các anh.
Em sưu tầm được cái này để làm nút tắt di chuyển qua lại 2 sheet.
Nhưng khi em dán vào Personal VBA thì nó báo lỗi dòng
Application.OnKey “%`”, “ToggleBack”
Các anh có thể giúp em không ạ. Em cám ơn
[CODE_1]Dim TabTracker As New TabBack_Class
Sub TabBack_Run()
...
End Sub
[/CODE_1]
Lúc thấy "nó báo lỗi dòng" thì chịu khó lấy giấy bút ra chép lại rằng "nó" báo lỗi gì (hoặc clip lại cũng được)?
Ai biết cái TabBack_Class của bạn ra sao mà đoán được gì thêm?
 
Upvote 0
Application.OnKey “%`”, “ToggleBack” ==> nó màu đỏ, ko chạy được.
Khi em bật file excel nào lên nó cũng nhảy vào phần Visual Basic Editor và bắt sửa Application.OnKey “%`”, “ToggleBack” ( màu đỏ )
Code TabBack_Class đây ạ.
Mã:
Public WithEvents AppEvent As Application
Public SheetReference As String
Public WorkbookReference As String
Private Sub AppEvent_SheetDeactivate(ByVal Sh As Object)
'PURPOSE: Store active worksheet information before leaving it
'SOURCE: www.TheSpreadsheetGuru.comWorkbookReference = Sh.Parent.Name
SheetReference = Sh.Name
End Sub
Private Sub AppEvent_WorkbookDeactivate(ByVal Wb As Workbook)
'PURPOSE: Store active worksheet information before closing workbook
'SOURCE: www.TheSpreadsheetGuru.com
WorkbookReference = Wb.Name
SheetReference = Wb.ActiveSheet.Name
End Sub
Lúc thấy "nó báo lỗi dòng" thì chịu khó lấy giấy bút ra chép lại rằng "nó" báo lỗi gì (hoặc clip lại cũng được)?
Ai biết cái TabBack_Class của bạn ra sao mà đoán được gì thêm?
 
Upvote 0
Em chào các anh.
Em sưu tầm được cái này để làm nút tắt di chuyển qua lại 2 sheet.
Nhưng khi em dán vào Personal VBA thì nó báo lỗi dòng
Application.OnKey “%`”, “ToggleBack”
Các anh có thể giúp em không ạ. Em cám ơn
Mã:
Dim TabTracker As New TabBack_Class
Sub TabBack_Run()
'PURPOSE: Initiate Tab tracking and shortcut key trigger
‘SOURCE: www.TheSpreadsheetGuru.com
'Enable TabTracker class
Set TabTracker.AppEvent = Application
'Call ToggleBack macro when user keys alt + `
Application.OnKey “%`”, “ToggleBack”
End Sub
Sub ToggleBack()
'PURPOSE: Go Back to Previous Worksheet
‘SOURCE: www.TheSpreadsheetGuru.com
With TabTracker
On Error Resume Next
Workbooks(.WorkbookReference).Worksheets(.SheetReference).Activate
On Error GoTo 0
End With
End Sub
1. Nhìn ký tự trước PURPOSE và trước SOURCE (ở mọi nơi) thì mắt thường thấy khác nhau. Nếu trước PURPOSE là dấu nháy đơn thì trước SOURCE không thể là dấu nháy đơn mà chỉ "nhìn giống" dấu nháy đơn. Sửa lại.
2. Những dấu nháy kép trong dòng Application.OnKey chỉ nhìn giống dấu nháy kép. Hãy tự gõ lại. Dấu gì sau ký tự % vậy?
 
Upvote 0
Cho xin 500 bức hình để được thỏa con mắt về cái lỗi lầm kia.

Bạn thông cảm, mình đưa bài dùm người khác (và đã gửi đường dẫn cho họ), nếu họ thực sự quan tâm tới vấn đề của mình thì sẽ vào đây trả lời bạn.
Cám ơn bạn.
 
Upvote 0
1. Nhìn ký tự trước PURPOSE và trước SOURCE (ở mọi nơi) thì mắt thường thấy khác nhau. Nếu trước PURPOSE là dấu nháy đơn thì trước SOURCE không thể là dấu nháy đơn mà chỉ "nhìn giống" dấu nháy đơn. Sửa lại.
2. Những dấu nháy kép trong dòng Application.OnKey chỉ nhìn giống dấu nháy kép. Hãy tự gõ lại. Dấu gì sau ký tự % vậy?
1. Em không hiểu ý này lắm nên em không biết trả lời thế nào.
2. Là dấu " ` " ==> trên nút tab, ý là dùng alt + ` để thay đổi qua lại các sheet ( giống alt tab trong window ).
https://blog.hocexcel.online/tao-ho...n-qua-lai-giua-cac-worksheet-trong-excel.html Đây là link hướng dẫn. Em không biết có được post link web khác vào đây không, nếu không được mong các anh chị bỏ qua.
 
Upvote 0
1. Em không hiểu ý này lắm nên em không biết trả lời thế nào.
2. Là dấu " ` " ==> trên nút tab, ý là dùng alt + ` để thay đổi qua lại các sheet ( giống alt tab trong window ).
https://blog.hocexcel.online/tao-ho...n-qua-lai-giua-cac-worksheet-trong-excel.html Đây là link hướng dẫn. Em không biết có được post link web khác vào đây không, nếu không được mong các anh chị bỏ qua.
Có gì mà không hiểu?
'PURPOSE: Initiate Tab tracking and shortcut key trigger
‘SOURCE: www.TheSpreadsheetGuru.com

Trước PURPOSE là dấu nháy đơn còn trước SOURCE là ký tự khác. Nhìn code không thấy tô xanh - chú thích thì biết giật mình chứ? Mà thôi, copy và dán vào notepad -> chọn phông chữ 72 -> nhìn 2 ký tự có khác nhau không? Nếu khác mà một thằng đeo huy hiệu "dấu nháy đơn" thì thằng kia chắc chắn đeo huy hiệu khác. Thế thôi.

Tôi đã viết rồi: gõ lại Application.OnKey “%`”, “ToggleBack” vì các ký tự chỉ nhìn giống dấu nháy kép chứ không phải dấu nháy kép. Kiểu copy paste từ nguồn khác thì nhiều khi phải sửa.
 
Upvote 0
Chào các bác.
Em có file excel này bị lỗi code mà không phát hiện ra tại sao. Mong các bác giúp đỡ.
Em có một bảng thống kê gồm các dòng là các mã vật tư, các cột là các thông số của vật tư, có một số cột là thiết bị sử dụng vật tư đó.
Em viết code để tạo user form nhằm tra cứu các thông số theo mã vật tư thể hiện trong listbox thứ nhất, việc này em đã làm ok, tiếp theo là tạo listbox thứ hai để tra cứu xem mã vật tư đó sử dụng trong thiết bị nào với số lượng bao nhiêu, khi chọn mã vật tư trong listbox 1 thì thông tin hiện trong listbox 2, và đang bị lỗi code ở đây. Điều lạ là khi em thử test code đó trong một file khác thì lại ok.
Vì trình vba em rất gà nên nhờ các bác xem hộ. Thanks!
 

File đính kèm

Upvote 0
Chào các bác.
Em có file excel này bị lỗi code mà không phát hiện ra tại sao. Mong các bác giúp đỡ.
Em có một bảng thống kê gồm các dòng là các mã vật tư, các cột là các thông số của vật tư, có một số cột là thiết bị sử dụng vật tư đó.
Em viết code để tạo user form nhằm tra cứu các thông số theo mã vật tư thể hiện trong listbox thứ nhất, việc này em đã làm ok, tiếp theo là tạo listbox thứ hai để tra cứu xem mã vật tư đó sử dụng trong thiết bị nào với số lượng bao nhiêu, khi chọn mã vật tư trong listbox 1 thì thông tin hiện trong listbox 2, và đang bị lỗi code ở đây. Điều lạ là khi em thử test code đó trong một file khác thì lại ok.
Vì trình vba em rất gà nên nhờ các bác xem hộ. Cảm ơn!
Sub ShowSearch, thêm dòng sau vào sau dòng AssemblyArr = ...
Mã:
ReDim Preserve AssemblyArr(1 To UBound(AssemblyArr, 1), 1 To 2)
 
Upvote 0
Sub ShowSearch, thêm dòng sau vào sau dòng AssemblyArr = ...
Mã:
ReDim Preserve AssemblyArr(1 To UBound(AssemblyArr, 1), 1 To 2)
Thanks bác, mất một ngày tìm ko ra mà bác chỉ mất 30s đã ok.
Tiện thể cho em hỏi: theo em hiểu thì code này để khai báo lại AssemblyArr thành mảng 2 chiều, nhưng ko biết tại sao phải làm thế, vì bt vẫn đưa vào listbox được, đồng thời trong sub ShowSearch cũng không động gì đến AssemblyArr cả?!
 
Upvote 0
Cảm ơn bác, mất một ngày tìm ko ra mà bác chỉ mất 30s đã ok.
Tiện thể cho em hỏi: theo em hiểu thì code này để khai báo lại AssemblyArr thành mảng 2 chiều, nhưng ko biết tại sao phải làm thế, vì bt vẫn đưa vào listbox được, đồng thời trong sub ShowSearch cũng không động gì đến AssemblyArr cả?!
Vì gán như cũ thì listbox kết quả chỉ có 1 cột, mà sau đó bạn muốn dùng 2 cột
 
Upvote 0
Cảm ơn bác, mất một ngày tìm ko ra mà bác chỉ mất 30s đã ok.
Tiện thể cho em hỏi: theo em hiểu thì code này để khai báo lại AssemblyArr thành mảng 2 chiều, nhưng ko biết tại sao phải làm thế, vì bt vẫn đưa vào listbox được, đồng thời trong sub ShowSearch cũng không động gì đến AssemblyArr cả?!
Không phải khai báo lại thành mảng hai chiều mà là mở rộng mảng hai chiều. Mảng ban đầu của bạn cũng là mảng hai chiều nhưng kích thước chiều thứ hai là 1. Câu lệnh trên là mở rộng kích thước chiều thứ hai thành 2.

Bạn gán mảng có kích thước chiều thứ hai bằng 1 vào thuộc tính list của listbox thì nó chỉ có 1 cột (mặc dù thuộc tính columnscount là 2), gán dữ liệu vào cột thứ hai thì nó lỗi là đúng rồi.
 
Upvote 0
Tại e tưởng sau khi clear listbox rồi thì muốn gán mấy chiều vào cũng được, listbox sẽ nhận số chiều theo lệnh .list(...) :D
như vậy là listbox sẽ nhận kích thước của mảng gán lúc đầu, không thay đổi được à các bác?
 
Upvote 0
Tại e tưởng sau khi clear listbox rồi thì muốn gán mấy chiều vào cũng được, listbox sẽ nhận số chiều theo lệnh .list(...) :D
như vậy là listbox sẽ nhận số chiều của mảng gán lúc đầu, không thay đổi được à các bác?
Thay đổi được, nếu bạn gán lại list() với mảng mới
 
Upvote 0
Tại e tưởng sau khi clear listbox rồi thì muốn gán mấy chiều vào cũng được, listbox sẽ nhận số chiều theo lệnh .list(...) :D
như vậy là listbox sẽ nhận kích thước của mảng gán lúc đầu, không thay đổi được à các bác?
Nếu bạn gán một mảng cho thuộc tính .List thì số cột là kích thước chiều thứ hai của mảng được gán. Nếu bạn dùng phương thức .Additem ngay từ đầu thì số cột là giá trị thuộc tính .ColumnCount.
 
Upvote 0
Định đố hay sao ấy chứ
Mã:
Sheets(Array("1", "2", "3", "4")).FillAcrossSheets Sheets("1").Range("B2")
(Nếu tôi nhớ không lầm thì tôi đã từng đố câu gần tương tự trong mục đối vui về VBA)
Hay quá bác ndu96081631 ơi, không cần phải vòng lặp nào cả, Bác làm như nào vậy hả bác?
 
Upvote 0
Upvote 0
Anh ơi, người ta chưa biết và mới học thì mới mắc sai lầm, anh là người am hiểu nếu anh biết thì anh chỉ dẫn giúp cho người ta đi. Sao anh lại nói như vậy? @truongvu317
Tui chả phải là người am hiểu gì cả, nhưng tui nói thật. Cái thứ nhất phải có file, phải có dữ liệu, mô tả mã lỗi.... Không có thì chả khác nào đánh đố nhau.
 
Upvote 0
Em chào các anh.
Em sưu tầm được cái này để làm nút tắt di chuyển qua lại 2 sheet.
Nhưng khi em dán vào Personal VBA thì nó báo lỗi dòng
Application.OnKey “%`”, “ToggleBack”
Các anh có thể giúp em không ạ. Em cám ơn
Mã:
Dim TabTracker As New TabBack_Class
Sub TabBack_Run()
'PURPOSE: Initiate Tab tracking and shortcut key trigger
‘SOURCE: www.TheSpreadsheetGuru.com
'Enable TabTracker class
Set TabTracker.AppEvent = Application
'Call ToggleBack macro when user keys alt + `
Application.OnKey “%`”, “ToggleBack”
End Sub
Sub ToggleBack()
'PURPOSE: Go Back to Previous Worksheet
‘SOURCE: www.TheSpreadsheetGuru.com
With TabTracker
On Error Resume Next
Workbooks(.WorkbookReference).Worksheets(.SheetReference).Activate
On Error GoTo 0
End With
End Sub
Bạn này sao cứ kiên trì cái phím tắt, tôi thì không thích ba cái vụ này. Thay dòng code này vào thử coi có gì khác không?

Mã:
Application.OnKey "%`", "ToggleBack"
 
Upvote 0
Nếu bạn gán một mảng cho thuộc tính .List thì số cột là kích thước chiều thứ hai của mảng được gán. Nếu bạn dùng phương thức .Additem ngay từ đầu thì số cột là giá trị thuộc tính .ColumnCount.
Bác cho hỏi thêm một chút là em muốn hiện số dòng của listbox listcount vào một label mỗi khi số dòng của listbox thay đổi, em đã thử dùng sự kiện listbox change, listbox after update nhưng không hiệu quả.
 
Upvote 0
Bác cho hỏi thêm một chút là em muốn hiện số dòng của listbox listcount vào một label mỗi khi số dòng của listbox thay đổi, em đã thử dùng sự kiện listbox change, listbox after update nhưng không hiệu quả.
Không có sự kiện có sẵn kiểu như vậy đâu. Số dòng của listbox thay đổi là do bạn thực hiện một lệnh nào đó, như vậy bạn muốn đếm thì đếm khi thực hiện lệnh đó là được.
 
Upvote 0
Không có sự kiện có sẵn kiểu như vậy đâu. Số dòng của listbox thay đổi là do bạn thực hiện một lệnh nào đó, như vậy bạn muốn đếm thì đếm khi thực hiện lệnh đó là được.
Thanks bác nhiều, nhờ bác chỉ dẫn e đã gần hoàn thành được chương trình rồi. Tuy nhiên e đang còn một chỗ mắc cuối nhờ bác xem giúp.
E muốn viết code để tra ngược, khi search vật tư: click vào listbox vật tư -> hiện thiết bị ở listbox thiết bị và khi search thiết bị: click vào listbox thiết bị -> vật tư ở listbox vật tư, việc search vật tư hay search thiết bị chọn bằng option button. Vế 1 em đã làm ok, nhưng ở vế 2: thiết bị -> vật tư thì chỉ chạy khi textbox trống, còn textbox có kí tự thì không chạy. E nghĩ đây không phải lỗi code mà lỗi logic, tuy nhiên e chưa tìm ra được, nhờ bác xem giúp.
Capture.JPG
 

File đính kèm

Upvote 0
Nhờ các anh chị chỉ giúp sửa code để ký hiệu ngày nghỉ theo mã nv điền đúng ngày trong sheet "8".
Xin cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh chị chỉ giúp sửa code để ký hiệu ngày nghỉ theo mã nv điền đúng ngày trong sheet "8".
Xin cảm ơn.
Không biết có phải như vầy không
Mã:
Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long, Col As Long, R As Long
    Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(CStr(tArr(I, 3))) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    R = Dic.Item(sArr(I, 1))
    If R Then
        For J = 1 To Rng.Columns.Count
            If tArr(R, 1) = Rng(1, J) Then
                Col = J: Exit For
            End If
        Next J
        If Col Then dArr(I, Col) = tArr(R, 6)
        Col = 0
    End If  
Next I
Sheet9.Range("E10:AI10").Resize(I - 1).ClearContents
Sheet9.Range("E10:AI10").Resize(I - 1) = dArr
End Sub
 
Upvote 0
Không biết có phải như vầy không
Mã:
Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long, Col As Long, R As Long
    Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(CStr(tArr(I, 3))) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    R = Dic.Item(sArr(I, 1))
    If R Then
        For J = 1 To Rng.Columns.Count
            If tArr(R, 1) = Rng(1, J) Then
                Col = J: Exit For
            End If
        Next J
        If Col Then dArr(I, Col) = tArr(R, 6)
        Col = 0
    End If
Next I
Sheet9.Range("E10:AI10").Resize(I - 1).ClearContents
Sheet9.Range("E10:AI10").Resize(I - 1) = dArr
End Sub
Cảm ơn bạn đã giúp đỡ.
Nhờ Bạn chỉnh lại giúp mình tí nữa ạ. Vì từ cột E:AI có đánh dấu "+" cho ngày làm việc hoặc "TB", "CN". Khi mình sử dụng code này thì nó xóa hết các ngày chấm công.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã giúp đỡ.
Nhờ Bạn chỉnh lại giúp mình tí nữa ạ. Vì từ cột E:AI có đánh dấu "+" cho ngày làm việc hoặc "TB", "CN". Khi mình sử dụng code này thì nó xóa hết các ngày chấm công.
Bạn thử lại Code này
Mã:
Public Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long, R As Long
    Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(CStr(tArr(I, 3))) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    R = Dic.Item(sArr(I, 1))
    For J = 1 To Rng.Columns.Count
        If R Then
            If tArr(R, 1) = Rng(1, J) Then
                dArr(I, J) = tArr(R, 6)
            Else
                dArr(I, J) = sArr(I, J + 3)
            End If
        Else
            dArr(I, J) = sArr(I, J + 3)
        End If
    Next J
Next I
Sheet9.Range("E10:AI10").Resize(I - 1).ClearContents
Sheet9.Range("E10:AI10").Resize(I - 1) = dArr
Set Dic = Nothing
End Sub
 
Upvote 0
Bạn thử lại Code này
Mã:
Public Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long, Col As Long, R As Long
    Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(CStr(tArr(I, 3))) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    R = Dic.Item(sArr(I, 1))
    For J = 1 To Rng.Columns.Count
        If R Then
            If tArr(R, 1) = Rng(1, J) Then
                Col = J: dArr(I, Col) = tArr(R, 6): Col = 0
            Else
                dArr(I, J) = sArr(I, J + 3)
            End If
        Else
            dArr(I, J) = sArr(I, J + 3)
        End If
    Next J
Next I
Sheet9.Range("E10:AI10").Resize(I - 1).ClearContents
Sheet9.Range("E10:AI10").Resize(I - 1) = dArr
Set Dic = Nothing
End Sub
Cảm ơn bạn thật nhiều.
Chúc bạn buổi tối nhiều niềm vui.
 
Upvote 0
Bạn thử lại Code này
Mã:
Public Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long, R As Long
    Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(CStr(tArr(I, 3))) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    R = Dic.Item(sArr(I, 1))
    For J = 1 To Rng.Columns.Count
        If R Then
            If tArr(R, 1) = Rng(1, J) Then
                dArr(I, J) = tArr(R, 6)
            Else
                dArr(I, J) = sArr(I, J + 3)
            End If
        Else
            dArr(I, J) = sArr(I, J + 3)
        End If
    Next J
Next I
Sheet9.Range("E10:AI10").Resize(I - 1).ClearContents
Sheet9.Range("E10:AI10").Resize(I - 1) = dArr
Set Dic = Nothing
End Sub
Bạn giúp mình tí nữa ạ. Mình thử 2 ngày nghỉ cho 1 mã nv nhưng code chỉ lấy ngày sau cùng.
 
Upvote 0
Bạn giúp mình tí nữa ạ. Mình thử 2 ngày nghỉ cho 1 mã nv nhưng code chỉ lấy ngày sau cùng.
Bạn thử xem
HTML:
Public Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long
    Dim Dic As Object, sKey As String, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    sKey = tArr(I, 1) & "#" & tArr(I, 3)
    Dic.Item(sKey) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    For J = 1 To Rng.Columns.Count
        sKey = Rng(1, J) & "#" & sArr(I, 1)
        R = Dic.Item(sKey)
        If R Then
            dArr(I, J) = tArr(R, 6)
        Else
            dArr(I, J) = sArr(I, J + 3)
        End If
    Next J
Next I
With Sheet9
    .Range("E10:AI10").Resize(I - 1).ClearContents
    .Range("E10:AI10").Resize(I - 1) = dArr
End With
còn sai đâu không nha
 
Upvote 0
Bạn thử xem
HTML:
Public Sub CongCham()
    Dim Rng, sArr, tArr, dArr, I As Long, J As Long
    Dim Dic As Object, sKey As String, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet9
    Set Rng = .Range("E8:AI8")
    sArr = .Range("B10", .Range("B" & Rows.Count).End(xlUp)).Resize(, 34).Value
End With
With Sheet3
    tArr = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
    sKey = tArr(I, 1) & "#" & tArr(I, 3)
    Dic.Item(sKey) = I
Next I
ReDim dArr(1 To UBound(sArr), 1 To 31)
For I = 1 To UBound(sArr)
    For J = 1 To Rng.Columns.Count
        sKey = Rng(1, J) & "#" & sArr(I, 1)
        R = Dic.Item(sKey)
        If R Then
            dArr(I, J) = tArr(R, 6)
        Else
            dArr(I, J) = sArr(I, J + 3)
        End If
    Next J
Next I
With Sheet9
    .Range("E10:AI10").Resize(I - 1).ClearContents
    .Range("E10:AI10").Resize(I - 1) = dArr
End With
còn sai đâu không nha
Cảm ơn bạn đã nhiệt tình giúp đỡ.
 
Upvote 0
Xin gỡ rối dùm tôi file excel này, xin cảm ơn nhiều.
Khi tôi chạy Hoàn Thành ở sheets HCC thì báo lỗi ActiveSheet.Paste, sau đó lại chuyển qua lỗi khác.
Mong mọi người giúp, xin cảm ơn.Loi.jpg
 

File đính kèm

Upvote 0
Xin gỡ rối dùm tôi file excel này, xin cảm ơn nhiều.
Khi tôi chạy Hoàn Thành ở sheets HCC thì báo lỗi ActiveSheet.Paste, sau đó lại chuyển qua lỗi khác.
Mong mọi người giúp, xin cảm ơn.View attachment 196735
1/ Ở Topic kia tôi cũng đã góp ý cho bạn là nên nêu rỏ vấn đề cần làm rồi nhờ giúp, người giúp đập bỏ đi và có giải pháp khác rồi làm lại chỉ vài dòng code còn nhanh hơn là mò sửa cái cái Record Macro (sẽ không hiểu hết ý của bạn), nhưng bạn lại không nghe và đưa lên một đống code thừa thải.
2/ Chỉ cần lọc, Add sheet rồi đặt tên sheet mới với tên Cell nào đó chắc khoảng hơn chục dòng code, còn muốn tra bất kỳ cột nào cũng chỉ khoảng chục dòng code nữa thôi. Trong khi bạn Record Macro hơn 100 dòng nhưng chưa chắc đã đáp ứng hết những cái tôi vừa nêu.

Bài kia do bạn vi phạm nội quy nên bị khóa bài viết. Xem ở Link sau:
https://www.giaiphapexcel.com/diendan/threads/chào-mọi-người-mọi-người-có-thể-xem-giúp-tôi-lỗi-của-file-này-được-chứ-xin-cảm-ơn.135154/
 
Lần chỉnh sửa cuối:
Upvote 0
............................
[/ATTACH]
Bạn nên tập thói quen nhận ý kiến đóng góp của các thành viên mới mong nhận được giải pháp tốt nhất.
1/ Cái đầu tiên người trợ giúp phải hiểu bạn muốn làm cái gì? Người ta có hiểu mới giúp được.
2/ Không thành viên nào hiểu cái ý tưởng của bạn nếu bạn không nêu rỏ muốn và cần làm cái gì? Khi hiểu mới cho bạn 1 giải pháp tốt nhất.
3/ Nhìn cái tiêu đề đến 85 cột mà lặp đi lặp lại thì người ta nhìn thấy cũng đã chóng mặt rồi, nên chẳng ai dám vào góp ý hay đưa ra giải pháp khác thì bạn cũng phần nào hiểu được vấn đề.
 
Upvote 0
1/ Ở Topic kia tôi cũng đã góp ý cho bạn là nên nêu rỏ vấn đề cần làm rồi nhờ giúp, người giúp đập bỏ đi và có giải pháp khác rồi làm lại chỉ vài dòng code còn nhanh hơn là mò sửa cái cái Record Macro (sẽ không hiểu hết ý của bạn), nhưng bạn lại không nghe và đưa lên một đống code thừa thải.
2/ Chỉ cần lọc, Add sheet rồi đặt tên sheet mới với tên Cell nào đó chắc khoảng hơn chục dòng code, còn muốn tra bất kỳ cột nào cũng chỉ khoảng chục dòng code nữa thôi. Trong khi bạn Record Macro hơn 100 dòng nhưng chưa chắc đã đáp ứng hết những cái tôi vừa nêu.

Bài kia do bạn vi phạm nội quy nên bị khóa bài viết. Xem ở Link sau:
https://www.giaiphapexcel.com/diendan/threads/chào-mọi-người-mọi-người-có-thể-xem-giúp-tôi-lỗi-của-file-này-được-chứ-xin-cảm-ơn.135154/
Tôi chưa rành code và thiết kế cho lắm, mong bạn giúp, mới thàm gia. Xin cảm ơn.
 
Upvote 0
Xin gỡ rối dùm tôi file excel này, xin cảm ơn nhiều.
Khi tôi chạy Hoàn Thành ở sheets HCC thì báo lỗi ActiveSheet.Paste, sau đó lại chuyển qua lỗi khác.
Mong mọi người giúp, xin cảm ơn.View attachment 196735
Tôi thấy bác kia nói đúng đấy. Tôi cũng mới mò vba nên code viết còn rườm rà, nhưng nhìn code của bác thì choáng luôn.
Bác nên đưa ra dữ liệu nguồn, rồi kết quả cần xử lí ra từ dữ liệu đó thì mọi người mới giúp bác được.
 
Upvote 0
Dạ Kính chào các Anh Chị trên DD
Nhờ Anh sửa lại code giúp em để các dòng tô màu đỏ tại File đính kèm khi nhấn nút " NHAP PHIEU THU" sẽ tự động lưu vào sheet DATA NHAP. Cứ mội lần nhập khoảng 12 ngày mua chung 1 phiếu thanh toán như trên a.
Rất mong nhận được sự giúp đở của A.
Kính chào Anh
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ Kính chào Anh
Nhờ Anh sửa lại code giúp em để các dòng tô màu đỏ tại File đính kèm khi nhấn nút " NHAP PHIEU THU" sẽ tự động lưu vào sheet DATA NHAP. Cứ mội lần nhập khoảng 12 ngày mua chung 1 phiếu thanh toán như trên a.
Rất mong nhận được sự giúp đở của A.
Kính chào Anh
Bạn sử dụng thử đoạn code này xem sao.
Mã:
rivate Sub NHAP_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Sheet3.Range("B12:B18"))
With Sheet9.Range("A65000").End(xlUp)
    .Offset(1).Resize(n) = Sheet3.[B3]
    .Offset(1, 1).Resize(n) = Sheet3.[D3]
    .Offset(1, 3).Resize(n) = Sheet3.[D5]
    .Offset(1, 7).Resize(n, 3).Value = Sheet3.Range("B12").Resize(n, 3).Value
End With
End Sub
 
Upvote 0
Bạn sử dụng thử đoạn code này xem sao.
Mã:
rivate Sub NHAP_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountA(Sheet3.Range("B12:B18"))
With Sheet9.Range("A65000").End(xlUp)
    .Offset(1).Resize(n) = Sheet3.[B3]
    .Offset(1, 1).Resize(n) = Sheet3.[D3]
    .Offset(1, 3).Resize(n) = Sheet3.[D5]
    .Offset(1, 7).Resize(n, 3).Value = Sheet3.Range("B12").Resize(n, 3).Value
End With
End Sub
Cảm ơn Bạn Giaiphap rất nhiều. code quá tuyệt mình vận dụng được rồi. Đa tạ
 
Upvote 0
Cảm ơn Bạn Giaiphap rất nhiều. code quá tuyệt mình vận dụng được rồi. Đa tạ
Em xin nhờ bạn giaiphap có thể viết giúp em đoạn code lọc số liệu từ sheet DATA NHAP sang sheet BANGKE với yêu cầu khi e gõ ngày thanh toán vào 1 ô cho sẳn ở sheet BANGKE thì excel tự lọc và điền vào các cột tương ứng và tách theo từng loại trợ giá trong sheet DATA NHAP. Anh có thể viết code và điền vài dữ liệu vào các cột trong sheet BANGKE cũng được em tự nghiên cứu và phát triển cho các cột kế tiếp. vì e muố phải đọc và hiểu code do e mới tập tành. mong A giúp đỡ. Chân thành cảm ơn A
*** và em cũng xin được Anh cũng như ae trong DD giúp! cảm ơn mọi người
 

File đính kèm

Upvote 0
Em xin nhờ bạn giaiphap có thể viết giúp em đoạn code lọc số liệu từ sheet DATA NHAP sang sheet BANGKE với yêu cầu khi e gõ ngày thanh toán vào 1 ô cho sẳn ở sheet BANGKE thì excel tự lọc và điền vào các cột tương ứng và tách theo từng loại trợ giá trong sheet DATA NHAP. Anh có thể viết code và điền vài dữ liệu vào các cột trong sheet BANGKE cũng được em tự nghiên cứu và phát triển cho các cột kế tiếp. vì e muố phải đọc và hiểu code do e mới tập tành. mong A giúp đỡ. Chân thành cảm ơn A
*** và em cũng xin được Anh cũng như ae trong DD giúp! cảm ơn mọi người
Bạn phải mô tả chi tiết hơn, tôi nhìn vào không biết lấy dữ liệu cột nào để điền vào cột trọng lượng, cột tổng giá thanh toán tính bằng cách nào, cột M để trống là sao? Còn điều kiện lọc là lọc ngày thanh toán hay ngày mua...
 
Upvote 0
Bạn phải mô tả chi tiết hơn, tôi nhìn vào không biết lấy dữ liệu cột nào để điền vào cột trọng lượng, cột tổng giá thanh toán tính bằng cách nào, cột M để trống là sao? Còn điều kiện lọc là lọc ngày thanh toán hay ngày mua...
Chào bạn giaiphap
Bạn điền ngày mua, tên khách, địa chỉ vào cột tương ứng trong bảng kê có gì mình nghiên cứu code của bạn mình thay đổi dữ liệu tại các cột khác. cột trọng lượng là điền cột trọng lượng bên sheet DATA NHAP. Còn cột M là ghi chú ko có cũng dc. còn cột tổng giá sẽ làm bằng công thức à dc bạn à.
Mình đã điền mẫu vào sheet BANGKE bạn xem thử nha.
mỗi ngày có thể thanh toán nhiều phiếu đã mua trước đó. nên khi nhập ngày thanh toán thì ngày này sẽ lọc ra đã thanh toán cho các ngày nò và thanh toán tại nhà máy nào và tác ra từng loại trợ giá.
Cảm ơn bạn nhiều vì đã giúp đỡ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào bạn giaiphap
Bạn điền ngày mua, tên khách, địa chỉ vào cột tương ứng trong bảng kê có gì mình nghiên cứu code của bạn mình thay đổi dữ liệu tại các cột khác. cột trọng lượng là điền cột trọng lượng bên sheet DATA NHAP. Còn cột M là ghi chú ko có cũng dc. còn cột tổng giá sẽ làm bằng công thức à dc bạn à.
Mình đã điền mẫu vào sheet BANGKE bạn xem thử nha.
mỗi ngày có thể thanh toán nhiều phiếu đã mua trước đó. nên khi nhập ngày thanh toán thì ngày này sẽ lọc ra đã thanh toán cho các ngày nò và thanh toán tại nhà máy nào và tác ra từng loại trợ giá.
Cảm ơn bạn nhiều vì đã giúp đỡ.
Bạn xem file đúng yêu cầu của mình chưa nhé! Sau đó phát triển thêm.
 

File đính kèm

Upvote 0
Bạn xem file đúng yêu cầu của mình chưa nhé! Sau đó phát triển thêm.
Chào bạn
Trước tiên xin chân thành cảm ơn bạn đã giúp đỡ.
Dạ gần đúng với ý em còn 1 tí nữa là ok.
Hiện tại kiến thức và kinh nghiệm về VB của mình chưa dịch và chưa hiểu hết đoạn code của bạn. nhưng nhờ bạn thêm một vấn đề như thế này theo ý 1
1. Trong sheet BANGKE sẽ nhập Ngày thanh toán tại ô A3 và nhập tên kho tại ô C7 thì sẽ lọc ra hết các ngày được mua trước đó. Vì yêu cầu phải lọc ra ngày thanh toán và của kho nào.
vd: ngày 05/04/2018 thanh toán cho các ngày 02/04; 03/04; 04/04; 05/04 kho phú bình thì lọc ra được các ngày 2;3;4;5/04 tại kho phú bình, chứ không chỉ lọc ngày 05/04 không thôi và ngày mua sẽ ko lớn hơn ngày thanh toán.
ý 2 và ý 3 ok rồi A. nhưng có thể phần text bên dưới không cần phải dùng code dc không anh. và sao mình không gõ thẳng một đoạn "Giám đốc doanh nghiệp" mà phải + &. Anh có thể giải thích dùm e luôn nha. em cảm ơn nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào bạn
Trước tiên xin chân thành cảm ơn bạn đã giúp đỡ.
Dạ gần đúng với ý em còn 1 tí nữa là ok.
Hiện tại kiến thức và kinh nghiệm về VB của mình chưa dịch và chưa hiểu hết đoạn code của bạn. nhưng nhờ bạn thêm một vấn đề như thế này
1. Trong sheet BANGKE sẽ nhập Ngày thanh toán tại ô A3 và nơi mua (KHO) tại ô C7 thì sẽ lọc ra hết các ngày được mua trước đó. Vì yêu cầu phải lọc ra ngày thanh toán và ngồi thanh toán tại nhà máy đó. nói rõ là có khi mua tại nơi này tính tiền tại chổ có khi KH họ đem qua chổ khác hoặc đến CTy thanh toán luôn. nên bên sheet DATA NHAP em co nơi mua và nơi TT. vì cuối ngày về e phải lọc ra ngày nay chi bao nhiêu tiền và chi chổ nào cònviệc chi cho ai chi mua nhà máy nào họ ko quan tâm.
vd: ngày 05/04/2018 thanh toán cho các ngày 02/04; 03/04; 04/04; 05/04 chứ không chỉ lọc ngày 05/04 không thôi và ngày mua sẽ ko lớn hơn ngày thanh toán.
2. Bang Kê chỉnh dùm cái hàng "Tổng hộ bán thýờng xuyên ðýợc trợ giá (+.... ðồng/TSC) lên trên và các số liệu sẽ xuất hiện bên dưới thay vì đang là cột tổng nằm dưới vì mình phải sử dụng mẫu của BTC.
3. cột ngày mua định dạng ngày bị chuyển sang số nữa bạn ơi.
em có gửi lại file mẫu nha A bên sheet DATA NHAP có các tiêu đề tô đỏ
Tôi sửa code để thục hiện ý 2 và 3 của bạn, còn ý 1 thì đọc hoài vẫn chưa hiểu ô C7 nhập vào để làm việc gì trong điều kiện lọc của bạn, vã lại nơi TT là cột nào sao tôi tìm không thấy.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, ary
If Target.Address = "$A$3" Then
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value
    iCol = Array(9, 4, 5, 6, 7, 1, 12, 1, 1, 11, 13, 1, 14)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If Ngay >= Arr(i, 2) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            j = .Range("A65000").End(xlUp).Row
            For i = j To 14 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    .Range("A" & i).Value = "T" & ChrW(7893) & "ng h" & ChrW(7897) & " bán thý" & ChrW(7901) & "ng xuyên ðý" & ChrW(7907) & _
                    "c tr" & ChrW(7907) & " giá (+" & .Range("M" & (i + 1)).Value & " ð" & ChrW(7891) & "ng/TSC)"
                    .Range("A" & i).Font.Bold = True
                End If
            Next i
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "B" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
                .Offset(2, 1).Value = "Ngý" & ChrW(7901) & "i l" & ChrW(7863) & "p b" & ChrW(7843) & "ng kê"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngày ... tháng .... nãm ....."
                .Offset(2, 11).Value = "Giám ð" & ChrW(7889) & "c doanh nghi" & ChrW(7879) & "p"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(K" & ChrW(253) & ", ghi r" & ChrW(245) & " h" & ChrW(7885) & " tên)"
                .Offset(3, 11).Value = "(K" & ChrW(253) & " tên, ðóng d" & ChrW(7845) & "u)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
            End With
        End With
   End If
End If
End Sub
 
Upvote 0
Tôi sửa code để thục hiện ý 2 và 3 của bạn, còn ý 1 thì đọc hoài vẫn chưa hiểu ô C7 nhập vào để làm việc gì trong điều kiện lọc của bạn, vã lại nơi TT là cột nào sao tôi tìm không thấy.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, ary
If Target.Address = "$A$3" Then
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value
    iCol = Array(9, 4, 5, 6, 7, 1, 12, 1, 1, 11, 13, 1, 14)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If Ngay >= Arr(i, 2) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            j = .Range("A65000").End(xlUp).Row
            For i = j To 14 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    .Range("A" & i).Value = "T" & ChrW(7893) & "ng h" & ChrW(7897) & " bán thý" & ChrW(7901) & "ng xuyên ðý" & ChrW(7907) & _
                    "c tr" & ChrW(7907) & " giá (+" & .Range("M" & (i + 1)).Value & " ð" & ChrW(7891) & "ng/TSC)"
                    .Range("A" & i).Font.Bold = True
                End If
            Next i
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "B" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
                .Offset(2, 1).Value = "Ngý" & ChrW(7901) & "i l" & ChrW(7863) & "p b" & ChrW(7843) & "ng kê"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngày ... tháng .... nãm ....."
                .Offset(2, 11).Value = "Giám ð" & ChrW(7889) & "c doanh nghi" & ChrW(7879) & "p"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(K" & ChrW(253) & ", ghi r" & ChrW(245) & " h" & ChrW(7885) & " tên)"
                .Offset(3, 11).Value = "(K" & ChrW(253) & " tên, ðóng d" & ChrW(7845) & "u)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
            End With
        End With
   End If
End If
End Sub
Trước tiên xin chân thành cảm ơn bạn đã giúp đỡ.
Dạ gần đúng với ý em còn 1 tí nữa là ok.
Hiện tại kiến thức và kinh nghiệm về VB của mình chưa dịch và chưa hiểu hết đoạn code của bạn. nhưng nhờ bạn thêm một vấn đề như thế này theo ý 1
1. Trong sheet BANGKE sẽ nhập Ngày thanh toán tại ô A3 và nhập tên kho tại ô C7 thì sẽ lọc ra hết các ngày được mua trước đó. Vì yêu cầu phải lọc ra ngày thanh toán và của kho nào.
vd: ngày 05/04/2018 thanh toán cho các phiếu mua từ ngày 02/04; 03/04; 04/04; 05/04 kho phú bình thì lọc ra được các ngày 2;3;4;5/04 tại kho phú bình, chứ không chỉ lọc ngày 05/04 không thôi và khi nhập ngày TT thì chỉ lọc từ các ngày mua từ ngày TT đó trở về trước.
ý 2 và ý 3 ok rồi A. nhưng có thể phần text bên dưới không cần phải dùng code dc không anh. và sao mình không gõ thẳng một đoạn "Giám đốc doanh nghiệp" mà phải + &. Anh có thể giải thích dùm e luôn nha. em cảm ơn nhiều
 
Upvote 0
Trước tiên xin chân thành cảm ơn bạn đã giúp đỡ.
Dạ gần đúng với ý em còn 1 tí nữa là ok.
Hiện tại kiến thức và kinh nghiệm về VB của mình chưa dịch và chưa hiểu hết đoạn code của bạn. nhưng nhờ bạn thêm một vấn đề như thế này theo ý 1
1. Trong sheet BANGKE sẽ nhập Ngày thanh toán tại ô A3 và nhập tên kho tại ô C7 thì sẽ lọc ra hết các ngày được mua trước đó. Vì yêu cầu phải lọc ra ngày thanh toán và của kho nào.
vd: ngày 05/04/2018 thanh toán cho các phiếu mua từ ngày 02/04; 03/04; 04/04; 05/04 kho phú bình thì lọc ra được các ngày 2;3;4;5/04 tại kho phú bình, chứ không chỉ lọc ngày 05/04 không thôi và khi nhập ngày TT thì chỉ lọc từ các ngày mua từ ngày TT đó trở về trước.
ý 2 và ý 3 ok rồi A. nhưng có thể phần text bên dưới không cần phải dùng code dc không anh. và sao mình không gõ thẳng một đoạn "Giám đốc doanh nghiệp" mà phải + &. Anh có thể giải thích dùm e luôn nha. em cảm ơn nhiều
Ví dụ nhập vào C7 là Phú Bình thì chỉ lọc kho Phú Bình, còn kho Long Hòa không lọc đúng không? Thứ hai là bạn thử nhập "Giám đốc doanh nghiệp" được rồi hả tính tiếp nhé.
 
Upvote 0
Cảm ơn Bạn Giaiphap rất nhiều. code quá tuyệt mình vận dụng được rồi. Đa tạ
Chào bạn
Bạn vui lòng giúp mình là khi nhấn nút nhập dữ liệu và nhấn 1 lần là nút nhập tự mờ sau đó mình nhấp tạo phiếu mới thì nút nhập hiện ra. vì nếu quen tay mà nhấn liên tục thì nhập trùng liên tục. và trong lúc nhập bị sai mình có thể tạo một nút button goi số phiếu đó lại để sửa sau đó lưu chồng lên đúng với số phiếu đó không Bạn.
Cảm ơn Bạn rất nhiều vì mấy ngày nay đã giúp đỡ mình.
 
Upvote 0
Ví dụ nhập vào C7 là Phú Bình thì chỉ lọc kho Phú Bình, còn kho Long Hòa không lọc đúng không? Thứ hai là bạn thử nhập "Giám đốc doanh nghiệp" được rồi hả tính tiếp nhé.
Dạ đúng! chỉ lọc kho nào dc nhập thôi ạ. à chổ Giám đốc mình chưa nhập nhưng do chưa hiểu nên hỏi để hiểu ý nghĩa thôi ạ. Thank Bạn
 
Upvote 0
Dạ đúng! chỉ lọc kho nào dc nhập thôi ạ. à chổ Giám đốc mình chưa nhập nhưng do chưa hiểu nên hỏi để hiểu ý nghĩa thôi ạ. Thank Bạn
Nếu vậy thì sửa code thế này nhé. Còn việc gõ trực tiếp tên tiếng việt theo bảng mã Unicode trong code là không thể, chính vì vậy những ký tự không dấu thì gõ trực tiếp được còn những ký tự chứa mã Unicode thì bắt buộc phải dùng hàm ChrW để chuyển.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, Kho As String
If Target.Address = "$A$3" Then
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value: Kho = Sheet25.[C7]
    iCol = Array(9, 4, 5, 6, 7, 1, 12, 1, 1, 11, 13, 1, 14)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If (Ngay >= Arr(i, 2)) And (Kho = Arr(i, 8)) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            j = .Range("A65000").End(xlUp).Row
            For i = j To 14 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    .Range("A" & i).Value = "T" & ChrW(7893) & "ng h" & ChrW(7897) & " bán thý" & ChrW(7901) & "ng xuyên ðý" & ChrW(7907) & _
                    "c tr" & ChrW(7907) & " giá (+" & .Range("M" & (i + 1)).Value & " ð" & ChrW(7891) & "ng/TSC)"
                    .Range("A" & i).Font.Bold = True
                End If
            Next i
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "B" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
                .Offset(2, 1).Value = "Ngý" & ChrW(7901) & "i l" & ChrW(7863) & "p b" & ChrW(7843) & "ng kê"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngày ... tháng .... nãm ....."
                .Offset(2, 11).Value = "Giám ð" & ChrW(7889) & "c doanh nghi" & ChrW(7879) & "p"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(K" & ChrW(253) & ", ghi r" & ChrW(245) & " h" & ChrW(7885) & " tên)"
                .Offset(3, 11).Value = "(K" & ChrW(253) & " tên, ðóng d" & ChrW(7845) & "u)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
            End With
        End With
   End If
End If
End Sub
 
Upvote 0
Cho mình hỏi chút các bác. Mình có form dữ liệu như file đính kèm.
Ví dụ mình muốn viết code để copy dữ liệu giữ các Sheet qua lại với nhau. Cụ thể ở đây là Sheet TMV.Map sang Sheet Vietmap
Copy A2:A9 từ TMV.Map sang A2:A9 Vietmap
Copy B2:B9 từ TMV.Map sang B2:B9 Vietmap
Copy E2:E9 từ TMV.Map sang G2:G9 Vietmap
và các cột khác có dữ liệu tương ứng nữa.
Mình có record sồi sửa nhưng tốc độ nó chậm và bị lỗi.
Xin các bác chỉ giáo cho em mấy dòng, còn các dòng sau em tự bổ sung
Thanks all!
 

File đính kèm

Upvote 0
Cho mình hỏi chút các bác. Mình có form dữ liệu như file đính kèm.
Ví dụ mình muốn viết code để copy dữ liệu giữ các Sheet qua lại với nhau. Cụ thể ở đây là Sheet TMV.Map sang Sheet Vietmap
Copy A2:A9 từ TMV.Map sang A2:A9 Vietmap
Copy B2:B9 từ TMV.Map sang B2:B9 Vietmap
Copy E2:E9 từ TMV.Map sang G2:G9 Vietmap
và các cột khác có dữ liệu tương ứng nữa.
Mình có record sồi sửa nhưng tốc độ nó chậm và bị lỗi.
Xin các bác chỉ giáo cho em mấy dòng, còn các dòng sau em tự bổ sung
Cảm ơn all!

Bạn thử:
PHP:
Sub abc()
    With Sheets("TMV.Map")
        .Range("A2:B9").Copy Sheets("Vietmap").Range("A2")
        .Range("E2:E9").Copy Sheets("Vietmap").Range("G2")
    End With
End Sub
 
Upvote 0
Copy A2:A9 từ TMV.Map sang A2:A9 Vietmap
Copy B2:B9 từ TMV.Map sang B2:B9 Vietmap
Copy E2:E9 từ TMV.Map sang G2:G9 Vietmap
PHP:
Public Sub GPE()
With Sheets("Vietmap")
    .Range("A2:B9").Value = Sheets("TMV.Map").Range("A2:B9").Value
    .Range("E2:E9").Value = Sheets("TMV.Map").Range("G2:G9").Value
End With
End Sub
 
Upvote 0
Bạn thử:
PHP:
Sub abc()
    With Sheets("TMV.Map")
        .Range("A2:B9").Copy Sheets("Vietmap").Range("A2")
        .Range("E2:E9").Copy Sheets("Vietmap").Range("G2")
    End With
End Sub
thanks Bác nhé!
Bài đã được tự động gộp:

PHP:
Public Sub GPE()
With Sheets("Vietmap")
    .Range("A2:B9").Value = Sheets("TMV.Map").Range("A2:B9").Value
    .Range("E2:E9").Value = Sheets("TMV.Map").Range("G2:G9").Value
End With
End Sub
Cảm ơn Bác!
 
Upvote 0
Nếu vậy thì sửa code thế này nhé. Còn việc gõ trực tiếp tên tiếng việt theo bảng mã Unicode trong code là không thể, chính vì vậy những ký tự không dấu thì gõ trực tiếp được còn những ký tự chứa mã Unicode thì bắt buộc phải dùng hàm ChrW để chuyển.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, Kho As String
If Target.Address = "$A$3" Then
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value: Kho = Sheet25.[C7]
    iCol = Array(9, 4, 5, 6, 7, 1, 12, 1, 1, 11, 13, 1, 14)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If (Ngay >= Arr(i, 2)) And (Kho = Arr(i, 8)) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            j = .Range("A65000").End(xlUp).Row
            For i = j To 14 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    .Range("A" & i).Value = "T" & ChrW(7893) & "ng h" & ChrW(7897) & " bán thý" & ChrW(7901) & "ng xuyên ðý" & ChrW(7907) & _
                    "c tr" & ChrW(7907) & " giá (+" & .Range("M" & (i + 1)).Value & " ð" & ChrW(7891) & "ng/TSC)"
                    .Range("A" & i).Font.Bold = True
                End If
            Next i
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "B" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
                .Offset(2, 1).Value = "Ngý" & ChrW(7901) & "i l" & ChrW(7863) & "p b" & ChrW(7843) & "ng kê"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngày ... tháng .... nãm ....."
                .Offset(2, 11).Value = "Giám ð" & ChrW(7889) & "c doanh nghi" & ChrW(7879) & "p"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(K" & ChrW(253) & ", ghi r" & ChrW(245) & " h" & ChrW(7885) & " tên)"
                .Offset(3, 11).Value = "(K" & ChrW(253) & " tên, ðóng d" & ChrW(7845) & "u)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
            End With
        End With
   End If
End If
End Sub
Dạ e hiểu rồi Để em nhập xong xem thế nào.à mà cái button nhập khi nhấn 1 lần tự mờ a xem giúp code dùm e với nha. Cảm ơn A nhiều
 
Upvote 0
Bạn thử:
PHP:
Sub abc()
    With Sheets("TMV.Map")
        .Range("A2:B9").Copy Sheets("Vietmap").Range("A2")
        .Range("E2:E9").Copy Sheets("Vietmap").Range("G2")
    End With
End Sub
Cho mình hỏi vấn đề này nữa ạ
Mình có 2 sheet như sau:
1. Sheet "CSDL" tức là sheet cần phải cập nhật thông tin
2. Sheet "Thongtin" tức là sheet thông tin để cập nhập vào sheet "CSDL"
2 sheet CSDL và Thongtin có các cột tương ứng như nhau.
Giờ mình muốn thế này. Nếu thông tin ở Cột A và Cột B của Sheet "CSDL" và sheet "Thongtin" giống nhau thì các thông tin từ cột M đến cột AF
của sheet "Thongtin" nó sẽ copy nhặt sang sheet "CSDL"
thanks các bác.
 

File đính kèm

Upvote 0
Cho mình hỏi vấn đề này nữa ạ
Mình có 2 sheet như sau:
1. Sheet "CSDL" tức là sheet cần phải cập nhật thông tin
2. Sheet "Thongtin" tức là sheet thông tin để cập nhập vào sheet "CSDL"
2 sheet CSDL và Thongtin có các cột tương ứng như nhau.
Giờ mình muốn thế này. Nếu thông tin ở Cột A và Cột B của Sheet "CSDL" và sheet "Thongtin" giống nhau thì các thông tin từ cột M đến cột AF
của sheet "Thongtin" nó sẽ copy nhặt sang sheet "CSDL"
Cảm ơn các bác.

Sub test()

Dim i, lr As Integer

lr = Sheets("Thongtin").Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To lr

If Sheets("Thongtin").Range("A" & i) = Sheets("CSDL").Range("A" & i) And _

Sheets("Thongtin").Range("B" & i) = Sheets("CSDL").Range("B" & i) Then

Sheets("CSDL").Range("M" & i & ":AF" & i).Value = Sheets("Thongtin").Range("M" & i & ":AF" & i).Value

End If

Next

End Sub

Bạn thử xem
 
Upvote 0
Các bác giúp em xem vì sao nó bị lỗi nhé.
Em đang tìm hiểu code trích xuất dữ liệu từ file khác.

Option Explicit
Sub Test()
Dim sFile As String, sSheet As String, sAddr As String
sFile = ThisWorkbook.Path & "\F-1.xls"
sSheet = "リスト"
sAddr = "D5:E10"
Range("D5:E10") = GetData(sFile, sSheet, sAddr)
End Sub
Function GetData(sFile As String, sSheet As String, sAddr As String)
Dim pLink As String, iR As Long, iC As Long, Arr
If Len(Dir(sFile)) Then
Arr = Range(sAddr)
pLink = "'" & Replace(sFile, Dir(sFile), "[" & Dir(sFile) & "]") & sSheet & "'!"
For iR = 1 To Range(sAddr).Rows.Count
For iC = 1 To Range(sAddr).Columns.Count
Arr(iR, iC) = ExecuteExcel4Macro(pLink & Range(sAddr).Cells(iR, iC).Address(, , 2))
Next iC
Next iR
GetData = Arr
End If
End Function
 
Upvote 0
Cho mình hỏi vấn đề này nữa ạ
Mình có 2 sheet như sau:
1. Sheet "CSDL" tức là sheet cần phải cập nhật thông tin
2. Sheet "Thongtin" tức là sheet thông tin để cập nhập vào sheet "CSDL"
2 sheet CSDL và Thongtin có các cột tương ứng như nhau.
Giờ mình muốn thế này. Nếu thông tin ở Cột A và Cột B của Sheet "CSDL" và sheet "Thongtin" giống nhau thì các thông tin từ cột M đến cột AF
của sheet "Thongtin" nó sẽ copy nhặt sang sheet "CSDL"
Cảm ơn các bác.
Thử chạy code này:
PHP:
Public Sub Update_CSDL()
Dim sArr(), tArr(), I As Long, J As Long, Rws As Long, R As Long, Txt As String
tArr = Sheets("Thongtin").Range("A2", Sheets("Thongtin").Range("A2").End(xlDown)).Resize(, 45).Value
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(tArr)
        .Item(tArr(I, 1) & "#" & tArr(I, 2)) = I
    Next I
    sArr = Sheets("CSDL").Range("A2", Sheets("CSDL").Range("A2").End(xlDown)).Resize(, 45).Value
    R = UBound(sArr)
    For I = 1 To R
        Txt = sArr(I, 1) & "#" & sArr(I, 2)
        If .Exists(Txt) Then
            Rws = .Item(Txt)
            For J = 13 To 32
                sArr(I, J) = tArr(Rws, J)
            Next J
        End If
    Next I
End With
Sheets("CSDL").Range("A2").Resize(R, 45) = sArr
End Sub
 
Upvote 0
Các bác giúp em xem vì sao nó bị lỗi nhé.
Em đang tìm hiểu code trích xuất dữ liệu từ file khác.

Option Explicit
Sub Test()
Dim sFile As String, sSheet As String, sAddr As String
sFile = ThisWorkbook.Path & "\F-1.xls"
sSheet = "リスト"
sAddr = "D5:E10"
Range("D5:E10") = GetData(sFile, sSheet, sAddr)
End Sub
Function GetData(sFile As String, sSheet As String, sAddr As String)
Dim pLink As String, iR As Long, iC As Long, Arr
If Len(Dir(sFile)) Then
Arr = Range(sAddr)
pLink = "'" & Replace(sFile, Dir(sFile), "[" & Dir(sFile) & "]") & sSheet & "'!"
For iR = 1 To Range(sAddr).Rows.Count
For iC = 1 To Range(sAddr).Columns.Count
Arr(iR, iC) = ExecuteExcel4Macro(pLink & Range(sAddr).Cells(iR, iC).Address(, , 2))
Next iC
Next iR
GetData = Arr
End If
End Function

Bạn thay tên Sheet trong khung màu đỏ bằng 1 cái tên cụ thể xem
1.jpg
 
Upvote 0
Bạn thay tên Sheet trong khung màu đỏ bằng 1 cái tên cụ thể xem
View attachment 197007
Cảm ơn bạn.
Vẫn không được bạn ơi.
Bài đã được tự động gộp:

Trường hợp em muốn copy paste value mảng B5:H10 thì thay đổi code dưới như thế nào ạ.
Em thử record rồi nhưng vẫn chưa hiểu được.
Các bác hướng dẫn giúp ạ.

Private Sub Workbook_Open()
Application.DisplayAlerts = False
Workbooks.Open ThisWorkbook.Path & "\Data.xls"
ActiveWorkbook.ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.[A1]
ActiveWorkbook.Close False
Application.DisplayAlerts = True
End Sub
Bài đã được tự động gộp:

Trường hợp em muốn thay copy paste dưới bằng copy paste value thì sửa code thế nào ạ.
Các bác hướng dẫn giúp em nhé.
Em cảm ơn.

Private Sub Workbook_Open()
Application.DisplayAlerts = False
Workbooks.Open ThisWorkbook.Path & "\Data.xls"
ActiveWorkbook.ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.[A1]
ActiveWorkbook.Close False
Application.DisplayAlerts = True
End Sub
 

File đính kèm

  • Lỗi code.PNG
    Lỗi code.PNG
    43 KB · Đọc: 3
Lần chỉnh sửa cuối:
Upvote 0
Thử chạy code này:
PHP:
Public Sub Update_CSDL()
Dim sArr(), tArr(), I As Long, J As Long, Rws As Long, R As Long, Txt As String
tArr = Sheets("Thongtin").Range("A2", Sheets("Thongtin").Range("A2").End(xlDown)).Resize(, 45).Value
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(tArr)
        .Item(tArr(I, 1) & "#" & tArr(I, 2)) = I
    Next I
    sArr = Sheets("CSDL").Range("A2", Sheets("CSDL").Range("A2").End(xlDown)).Resize(, 45).Value
    R = UBound(sArr)
    For I = 1 To R
        Txt = sArr(I, 1) & "#" & sArr(I, 2)
        If .Exists(Txt) Then
            Rws = .Item(Txt)
            For J = 13 To 32
                sArr(I, J) = tArr(Rws, J)
            Next J
        End If
    Next I
End With
Sheets("CSDL").Range("A2").Resize(R, 45) = sArr
End Sub
Cảm ơn bác. Nhưng các cột từ AG đến AS không cập nhập dữ liệu được. Bác kiểm tra lại hộ em với.
 
Upvote 0
Dạ e hiểu rồi Để em nhập xong xem thế nào.à mà cái button nhập khi nhấn 1 lần tự mờ a xem giúp code dùm e với nha. Cảm ơn A nhiều
Dạ chào Bạn giaiphap. Code rất ok đã đúng ý mình. cảm ơn bạn nhiều
Nhưng hôm nhờ quên đưa vào cột thành tiền. khi mình lọc xổ ra các KH theo trợ giá và tại cột L sẽ tổng tiền của các khách hàng trong loại trợ giá trên.
cái nữa là cột ngày chưa hiển thị ra ngày mà vẫn ra số ạ.
Nhờ bạn giành tí thời gian giúp mình nha. Cảm ơn rất nhiều
 
Upvote 0
Up file đó lên đây xem thử và đưa một số dữ liệu mẫu. Nhớ là file thật của bạn và cần tính gì nêu hết lên, chứ kiểu này công việc của bạn không xong mà công sức anh em giúp đỡ chẳng có kết quả gì.
 
Upvote 0
Em chào anh chị,
Anh chị giúp em viết code để tìm hệ số tương quan trong Mô hình hồi quy tuyến tính đa biến này với ạ. Em cảm ơn ạ
 

File đính kèm

Upvote 0
Up file đó lên đây xem thử và đưa một số dữ liệu mẫu. Nhớ là file thật của bạn và cần tính gì nêu hết lên, chứ kiểu này công việc của bạn không xong mà công sức anh em giúp đỡ chẳng có kết quả gì.
dạ rồi tối e gửi cho ạ. Cảm ơn rất nhiều
 
Upvote 0
Chào các bác
Em đang lấy dữ liệu từ một Sheet bằng câu lệnh SQL mà bị lỗi này chưa xử lý được, nhờ các bác hỗ trợ.
Mô tả:
- Dữ liệu nằm ở Sheet 1 (em để tạm một cột CIF)
- Câu lệnh đang để ở Sheet 2
- Dữ liệu đầu ra ở Sheet 3
Tuy nhiên khi chạy thì dữ liệu đầu ra chỉ có hơn 20.000 dòng trong khi dữ liệu đầu vào là hơn 400.000 dòng (câu lệnh lấy toàn bộ dữ liệu).
Rất mong các bác giúp đỡ, xin cảm ơn.
 

File đính kèm

Upvote 0
Chào các bác
Em đang lấy dữ liệu từ một Sheet bằng câu lệnh SQL mà bị lỗi này chưa xử lý được, nhờ các bác hỗ trợ.
Mô tả:
- Dữ liệu nằm ở Sheet 1 (em để tạm một cột CIF)
- Câu lệnh đang để ở Sheet 2
- Dữ liệu đầu ra ở Sheet 3
Tuy nhiên khi chạy thì dữ liệu đầu ra chỉ có hơn 20.000 dòng trong khi dữ liệu đầu vào là hơn 400.000 dòng (câu lệnh lấy toàn bộ dữ liệu).
Rất mong các bác giúp đỡ, xin cảm ơn.

Nghe nói chuỗi kết nối nên sửa thành

Mã:
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=" & Wbsk.FullName & _
             ";Extended Properties=""Excel 12.0;HDR=Yes;readOnly=true"";")
 
Upvote 0
Nhờ các bác chuyển hộ em từ hàm trong FILE KetQua qua vba với ạ vì dùng hàm mỗi lần cập nhật hay sửa dữ liệu thì Excel cứ đơ ra chạy rất rất lâu mới cho ra kết quả.

Em xin nói thông tin về 3 FILE của em chút
FILE Gia có Tên ---- PO-----Giá
File PO có Tên --------PO-------Số lượng
File Ketqua có Tên.

Em lấy PO ở FILE PO điều kiện mà max số lượng, lấy giá ở fie giá điều kiện là Tên và PO, khi sảy ra lỗi thì kết quả là " Không tìm thấy dữ liệu".

Trong FILE em giử lên em đã bỏ đi hàm iferror khi để các bác nhìn cho đỡ rối ạ.

Nếu được các bác cải tiến dùm em là khi mở file ketqua thì tự động Copy sheet nằm ở vị trí đầu tiên của file PO và Copy Sheet nằm ở vị trí đầu của file Gia vào trong FILE KetQua và trong FILE KetQua khi em nhập thêm Tên thì cột PO SoLuong và Gia tự động hiện kết quả a.

Khi đóng file hoặc khi mở file thì việc đầu tiên là xoá 2 Sheet Copy đó đi vì em sợ nếu 2 file kia có vấn đề gì đó ko Copy qua được thì khi nhập Tên vào thì kết quả trả về là dữ liệu đã cũ rồi ạ.

Thêm 1 rắc rối nữa là FILE Gia có 2 lớp pass như trong FILE em UP và thường có 1 cái thông báo Link hỏng vậy các bác có thể thêm luôn Password vào code cho em được ko ạ. Nếu Password đúng từ Copy, nếu Password ko đúng thì mở hộp thoại thông báo sai Password or mở cái hộp thoại nhập Password cũng được ạ.

Thêm code kiểm 2 file PO và Gia có tồn tại ko nữa ạ nếu tồn tại thì Copy ko tồn tại thì báo không tìm thấy FILE ạ.
Password file Gia là: 2 số 1 và 1 số ạ
11
1
Thank các bán trước
 

File đính kèm

Upvote 0
Up file đó lên đây xem thử và đưa một số dữ liệu mẫu. Nhớ là file thật của bạn và cần tính gì nêu hết lên, chứ kiểu này công việc của bạn không xong mà công sức anh em giúp đỡ chẳng có kết quả gì.
dạ chào Anh
file em up lên là file em đang làm đó A, và em có chỉnh lại font trong code là VNI-TIME và em sẽ chịu khó sau khi lọc xong định dạng lại cũng dc. trước đây nhập tay vào bảng kê giờ thì quá tuyệt rồi. Chỉ cần nhờ Sư phụ giúp cho làm cthức cho cột thành tiền và Tổng tiền của từng loại trợ giá nữa là tuyệt vời ạ.
Những chổ em tô đỏ là sửa giúp, còn chổ tô xanh là ok rồi ạ.
Chân thành cảm ơn sự nhiệt tình giúp đỡ của Anh.
e vừa nhập thử thì lọc ra ở cột trợ giá lọc từ M2 nhưng nếu 13 KH +5dong thì lúc này chỉ lọc 12 KH thôi anh ơi. Akiểm tra và A test dùm e. a giúp e xong e mới về nhập lại vì file trước của e ko lưu và làm bằng tay và mỗi ngày là 1 sheet.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bác. Nhưng các cột từ AG đến AS không cập nhập dữ liệu được. Bác kiểm tra lại hộ em với.
Đã kiểm tra và đúng yêu cầu:
Giờ mình muốn thế này. Nếu thông tin ở Cột A và Cột B của Sheet "CSDL" và sheet "Thongtin" giống nhau thì các thông tin từ cột M đến cột AF
của sheet "Thongtin" nó sẽ copy nhặt sang sheet "CSDL"
Chỗ nào nói tới cột AG:AS ?
 
Upvote 0
Nghe nói chuỗi kết nối nên sửa thành

Mã:
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=" & Wbsk.FullName & _
             ";Extended Properties=""Excel 12.0;HDR=Yes;readOnly=true"";")

Cảm ơn bro nhé, nhưng những lỗi này cũng lạ nhỉ, nhiều khi không phát hiện nổi.
Đối với câu lệnh SQL, tôi còn gặp một lỗi nữa đó là khi dữ liệu một cột là số (Number), nếu dòng đầu tiên của cột đó có giá trị rỗng, khi Select ra toàn bộ cột đó rỗng luôn, nghĩ mãi đến giờ vẫn chưa hiểu nguyên nhân, chắc thử thay đổi lại kết nối xem sao.

Tks again,
 
Upvote 0
dạ chào Anh
file em up lên là file em đang làm đó A, và em có chỉnh lại font trong code là VNI-TIME và em sẽ chịu khó sau khi lọc xong định dạng lại cũng dc. trước đây nhập tay vào bảng kê giờ thì quá tuyệt rồi. Chỉ cần nhờ Sư phụ giúp cho làm cthức cho cột thành tiền và Tổng tiền của từng loại trợ giá nữa là tuyệt vời ạ.
Những chổ em tô đỏ là sửa giúp, còn chổ tô xanh là ok rồi ạ
Chân thành cảm ơn sự nhiệt tình giúp đỡ của Anh.
Bạn xem thử file.
 

File đính kèm

Upvote 0
Dạ cảm ơn Anh nhiều quá. quá tuyệt anh ơi. thế là ok rồi.
một lần nữa chân thành cảm ơn anh.
có thể cho e xin số điện thoại không ạ
cho em hỏi thêm tí ạ trong code đoạn nào làm cho tự vẽ khung và ubound, lbound là gì vậy A
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ cảm ơn Anh nhiều quá. quá tuyệt anh ơi. thế là ok rồi.
một lần nữa chân thành cảm ơn anh.
có thể cho e xin số điện thoại không ạ
cho em hỏi thêm tí ạ trong code đoạn nào làm cho tự vẽ khung và ubound, lbound là gì vậy A
Tôi không có dùng điện thoại nhé bạn!
 
Upvote 0
Nhờ giúp đỡ. Mình đang cần sửa file bán hàng này lại cho phù hợp với mình. Mình cần bỏ mục "Số Đôi", thêm Vô mục Tên sản phẩm, khi nhập 1 sản phẩm thì phải nhập mục chiết khấu (mục chiết khấu có 2 tùy chọn là nhâp theo % hoặc nhập theo số tiền. Khi in phiếu ra có mục trừ chiết khấu (làm tròn không lấy số lẻ thâp phân), sheet NKxuatthang có cột trừ chiết khấu. em xin cảm ơn ạ.
 

File đính kèm

Upvote 0
Nhờ các bác chuyển hộ em từ hàm trong FILE KetQua qua vba với ạ vì dùng hàm mỗi lần cập nhật hay sửa dữ liệu thì Excel cứ đơ ra chạy rất rất lâu mới cho ra kết quả.

Em xin nói thông tin về 3 FILE của em chút
FILE Gia có Tên ---- PO-----Giá
File PO có Tên --------PO-------Số lượng
File Ketqua có Tên.

Em lấy PO ở FILE PO điều kiện mà max số lượng, lấy giá ở fie giá điều kiện là Tên và PO, khi sảy ra lỗi thì kết quả là " Không tìm thấy dữ liệu".

Trong FILE em giử lên em đã bỏ đi hàm iferror khi để các bác nhìn cho đỡ rối ạ.

Nếu được các bác cải tiến dùm em là khi mở file ketqua thì tự động Copy sheet nằm ở vị trí đầu tiên của file PO và Copy Sheet nằm ở vị trí đầu của file Gia vào trong FILE KetQua và trong FILE KetQua khi em nhập thêm Tên thì cột PO SoLuong và Gia tự động hiện kết quả a.

Khi đóng file hoặc khi mở file thì việc đầu tiên là xoá 2 Sheet Copy đó đi vì em sợ nếu 2 file kia có vấn đề gì đó ko Copy qua được thì khi nhập Tên vào thì kết quả trả về là dữ liệu đã cũ rồi ạ.

Thêm 1 rắc rối nữa là FILE Gia có 2 lớp pass như trong FILE em UP và thường có 1 cái thông báo Link hỏng vậy các bác có thể thêm luôn Password vào code cho em được ko ạ. Nếu Password đúng từ Copy, nếu Password ko đúng thì mở hộp thoại thông báo sai Password or mở cái hộp thoại nhập Password cũng được ạ.

Thêm code kiểm 2 file PO và Gia có tồn tại ko nữa ạ nếu tồn tại thì Copy ko tồn tại thì báo không tìm thấy FILE ạ.
Password file Gia là: 2 số 1 và 1 số ạ
11
1
Thank các bán trước
hix. Em nguyễn cứu code trong diễn dàn cả tháng rồi mà ko tìm thấy code mình cần nên mới mạo muội nhờ mấy bác!!! Nhưng mà tình hình này chắc phải cứu nhâm njawx thôi
 
Upvote 0
Upvote 0
hix. Em nguyễn cứu code trong diễn dàn cả tháng rồi mà ko tìm thấy code mình cần nên mới mạo muội nhờ mấy bác!!! Nhưng mà tình hình này chắc phải cứu nhâm njawx thôi
Để cái thiện tốc độ thì sửa công thức đi, đừng có dùng tham chiếu kiểu A:A, làm vậy sẽ rất chậm do nó phải tính toán, thay bằng A1:A30000 chẳng hạn.
 
Upvote 0
Bạn đưa cái file mẫu lên đi,
File của em đây bác nhưng mà là file chạy bằng hàm ko phải là fife chạy bằng code.
File chạy code em copy trên diễn đàn ghép lại rồi học ghi macro để chỉnh sửa tiếp..... nhưng mà tình hình là cứ bị công việc dè nên ko suy nghĩ được gì
Bài đã được tự động gộp:

Để cái thiện tốc độ thì sửa công thức đi, đừng có dùng tham chiếu kiểu A:A, làm vậy sẽ rất chậm do nó phải tính toán, thay bằng A1:A30000 chẳng hạn.
File gốc của em thì chỉ có 1 đòng công thức dạng text thôi. Mỗi lần em sử dụng hàm em chỉnh số dòng đúng bằng số dòng của FILE giá rồi mới kéo công thức xuống nhưng giờ FILE giá cũng hơn 60000 dòng rồi nên chạy rất chậm ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
File của em đây bác nhưng mà là file chạy bằng hàm ko phải là fife chạy bằng code.
File chạy code em copy trên diễn đàn ghép lại rồi học ghi macro để chỉnh sửa tiếp..... nhưng mà tình hình là cứ bị công việc dè nên ko suy nghĩ được gì
Bài đã được tự động gộp:


File gốc của em thì chỉ có 1 đòng công thức dạng text thôi. Mỗi lần em sử dụng hàm em chỉnh số dòng đúng bằng số dòng của FILE giá rồi mới kéo công thức xuống nhưng giờ FILE giá cũng hơn 60000 dòng rồi nên chạy rất chậm ạ
Nhờ giúp đỡ mà còn đặt mật khẩu file thì có ma mới giúp cho bạn.
 
Upvote 0
Nhờ giúp đỡ mà còn đặt mật khẩu file thì có ma mới giúp cho bạn.
Dạ tại em đặt cho giống với cái FILE lấy giá trong Cty ạ. Ở bài trước em nói Password mở file là 11 và Password ko cho sửa nội dung là 1.
Bài đã được tự động gộp:

Nhờ giúp đỡ mà còn đặt mật khẩu file thì có ma mới giúp cho bạn.
Em đọc khá nhiều bài trong diễn đàn nên em nói hết ý của em ở bài #1797 và nhờ các bác giúp đỡ chứ sợ công sức các bác bỏ ra giúp em mà này thêm cái này mai sửa cái kia em cũng ngại ạ
 
Lần chỉnh sửa cuối:
Upvote 0
kính gửi giaiphap
nhờ A giúp hết dùm e làm 1 việc nữa cho hoàn thiện nha. phần em tô đỏ
em cảm ơn nhiều
Bạn xem kỷ chưa? đặc biệt là ô L32, mình thấy nó sai sai sao ấy. Bạn khẳng định lại lần nửa để giúp xong lại báo công thức chưa chính xác nửa thì làm lại lần nửa mất công.
 
Upvote 0
Bạn xem kỷ chưa? đặc biệt là ô L32, mình thấy nó sai sai sao ấy. Bạn khẳng định lại lần nửa để giúp xong lại báo công thức chưa chính xác nửa thì làm lại lần nửa mất công.
Dạ ô L32 theo file mẫu là hàm sum tổng công cho các ô của từng loại trợ giá. nếu ngày nào đó thanh toán nhiều thì lọc thì là ô
L khác ạ.
em có đoạn code đọc số ra chữ và em muốn đưa code đó vào để đọc ô tông cộng tiền chi thanh toán cho ngày hôm đó
e cảm ơn rất nhiều
 

File đính kèm

Upvote 0
Dạ ô L32 theo file mẫu là hàm sum tổng công cho các ô của từng loại trợ giá. nếu ngày nào đó thanh toán nhiều thì lọc thì là ô
L khác ạ.
em có đoạn code đọc số ra chữ và em muốn đưa code đó vào để đọc ô tông cộng tiền chi thanh toán cho ngày hôm đó
e cảm ơn rất nhiều
Code cho file ở #1815.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol1(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, KHO As String
If Target.Address = "$A$3" Then
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value: KHO = Sheet25.[$C$7]
    iCol = Array(9, 4, 5, 6, 7, 1, 11, 1, 1, 10, 12, 1, 13)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If (Ngay >= Arr(i, 2)) And (KHO = Arr(i, 8)) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            .Range("L14").FormulaR1C1 = "=RC[-5]*RC[-2]*(RC[-1]+RC[1])"
            .Range("L14").AutoFill Destination:=.Range("L14:L" & (k + 13)), Type:=xlFillDefault
            .Range("L14:L" & (k + 13)).Value = .Range("L14:L" & (k + 13)).Value
            j = .Range("A65000").End(xlUp).Row
            For i = j To 13 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                    .Range("B" & i).Value = "Toång hoä baùn thöôøng xuyeân ñöôïc trôï giaù +" & .Range("M" & (i + 1)).Value & " ñoàng/TSC"
                    .Range("B" & i).Font.Name = "VNI-Times"
                    .Range("B" & i & ":L" & i).Font.Bold = True
                End If
            Next i
            For Each Rng In .Range("L14:L" & .Range("L65000").End(xlUp).Row).SpecialCells(2).Areas
                .Range("J" & (Rng.Row - 1)).Formula = "=sum(" & Replace(Rng.Offset(, -2).Address, "$", "") & ")"
                .Range("L" & (Rng.Row - 1)).Formula = "=sum(" & Replace(Rng.Address, "$", "") & ")"
            Next
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            With .Range("A65000").End(xlUp)
                .Offset(1).Value = "Toång giaù trò haøng hoùa ñöôïc mua vaøo "
                .Offset(1).Resize(, 13).Font.Name = "VNI-Times"
                .Offset(1).Resize(, 13).Font.Bold = True
                .Offset(1).Resize(, 13).Font.Color = -16776961
                .Offset(1).Resize(, 6).HorizontalAlignment = xlCenter
                .Offset(1).Resize(, 6).Merge
                .Offset(1, 9).Formula = "=SUMIF(R14C3:R[-1]C3,"""",R14C10:R[-1]C10)"
                .Offset(1, 11).Formula = "=SUMIF(R14C3:R[-1]C3,"""",R14C12:R[-1]C12)"
            End With
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "Baèng chöõ:"
                .Offset(, 1).Formula = "=HamDocTV(" & .Offset(-1, 11).Address & ")" 'Sua ham doc tieng viet cho nay
                .Offset(2, 1).Value = "Ngöôøi laäp baûng keâ"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngaøy ... thaùng .... naêm ......"
                .Offset(2, 11).Value = "Giaùm ñoác danh nghieäp"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(Kyù vaø ghi roõ hoï teân)"
                .Offset(3, 11).Value = "(Kyù teân, ñoùng daáu)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
                .Resize(5, 13).Font.Name = "VNI-Times"
            End With
        End With
   End If
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End If
End Sub
 
Upvote 0
Em mới tập tành reco macro nhưng khi save và chạy file thì lỗi như trong hình. ko biết là phải sửa thế nào. nhờ mấy bác giúp em sửa với ạ
Private Sub Workbook_Open()
Sheets("PO").Select
Cells.Select
Selection.ClearContents
Sheets("GIA").Select
Cells.Select
Selection.ClearContents
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\PO.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("PO").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("PO.xlsx").Activate
ActiveWindow.Close
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\GIA.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("GIA").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("GIA.xlsx").Activate
ActiveWindow.Close
Sheets("Sheet1").Select
Range("A1").Select
End Sub

Loi code.jpgThong bao khi save.jpg
 

File đính kèm

Upvote 0
Em mới tập tành reco macro nhưng khi save và chạy file thì lỗi như trong hình. ko biết là phải sửa thế nào. nhờ mấy bác giúp em sửa với ạ
Private Sub Workbook_Open()
Sheets("PO").Select
Cells.Select
Selection.ClearContents
Sheets("GIA").Select
Cells.Select
Selection.ClearContents
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\PO.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("PO").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("PO.xlsx").Activate
ActiveWindow.Close
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\GIA.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("GIA").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("GIA.xlsx").Activate
ActiveWindow.Close
Sheets("Sheet1").Select
Range("A1").Select
End Sub

View attachment 197193View attachment 197194
Đưa file, kèm theo mô tả mục đích, mọi người viết lại cho nhanh, chứ chỉnh mấy cái macro mất nhiều thời gian mà vẫn dễ có lỗi.
 
Upvote 0
Em mới tập tành reco macro nhưng khi save và chạy file thì lỗi như trong hình. ko biết là phải sửa thế nào. nhờ mấy bác giúp em sửa với ạ
Private Sub Workbook_Open()
Sheets("PO").Select
Cells.Select
Selection.ClearContents
Sheets("GIA").Select
Cells.Select
Selection.ClearContents
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\PO.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("PO").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("PO.xlsx").Activate
ActiveWindow.Close
Workbooks.Open ("C:\Users\pmc_y\Documents\THAO\TEXT\GIA.xlsx")
Cells.Select
Selection.Copy
Windows("File ket qua.xls").Activate
Sheets("GIA").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("GIA.xlsx").Activate
ActiveWindow.Close
Sheets("Sheet1").Select
Range("A1").Select
End Sub

View attachment 197193View attachment 197194
Nếu chỉ dùng code để copy dữ liệu không thì dùng code này.
Mã:
Private Sub Workbook_Open()
Dim Wb As Workbook, tWb As Workbook
Set tWb = ThisWorkbook
    tWb.Sheets("PO").Cells.ClearContents
    tWb.Sheets("GIA").Cells.ClearContents
    Set Wb = Workbooks.Open(tWb.Path & "\PO.xlsx")
    Wb.Sheets(1).Cells.Copy tWb.Sheets("PO").Range("A1")
    Wb.Close False
    Set Wb = Workbooks.Open(tWb.Path & "\Gia.xlsx")
    Wb.Sheets(1).Cells.Copy tWb.Sheets("Gia").Range("A1")
    Wb.Close False
End Sub
 
Upvote 0
Code cho file ở #1815.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr(), dArr(), iCol1(), i As Integer, k As Integer, Ngay, j As Integer, Rng As Range, KHO As String
If Target.Address = "$A$3" Then
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    Arr = Sheet9.Range("A2:O" & Sheet9.Range("A65000").End(xlUp).Row).Value
    ReDim dArr(1 To UBound(Arr, 1), 1 To 13)
    Ngay = Target.Value: KHO = Sheet25.[$C$7]
    iCol = Array(9, 4, 5, 6, 7, 1, 11, 1, 1, 10, 12, 1, 13)
    For i = LBound(Arr, 1) To UBound(Arr, 1)
        If (Ngay >= Arr(i, 2)) And (KHO = Arr(i, 8)) Then
            k = k + 1
            For j = 0 To 12
                If iCol(j) <> 1 Then dArr(k, j + 1) = Arr(i, iCol(j))
            Next j
        End If
    Next i
    Sheet25.Range("A14:M" & (Sheet25.Range("A65000").End(xlUp).Row) + 5).Clear
    If k <> 0 Then
        With Sheet25
            .Range("A14").Resize(k, 13).Value = dArr
            .Sort.SortFields.Clear
            .Range("A14:M" & (k + 13)).Sort Key1:=.Range("M14:M" & (k + 13)), order1:=xlDescending, Header:=xlNo
            .Range("L14").FormulaR1C1 = "=RC[-5]*RC[-2]*(RC[-1]+RC[1])"
            .Range("L14").AutoFill Destination:=.Range("L14:L" & (k + 13)), Type:=xlFillDefault
            .Range("L14:L" & (k + 13)).Value = .Range("L14:L" & (k + 13)).Value
            j = .Range("A65000").End(xlUp).Row
            For i = j To 13 Step -1
                If .Range("M" & i) <> .Range("M" & (i - 1)) Then
                    .Rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                    .Range("B" & i).Value = "Toång hoä baùn thöôøng xuyeân ñöôïc trôï giaù +" & .Range("M" & (i + 1)).Value & " ñoàng/TSC"
                    .Range("B" & i).Font.Name = "VNI-Times"
                    .Range("B" & i & ":L" & i).Font.Bold = True
                End If
            Next i
            For Each Rng In .Range("L14:L" & .Range("L65000").End(xlUp).Row).SpecialCells(2).Areas
                .Range("J" & (Rng.Row - 1)).Formula = "=sum(" & Replace(Rng.Offset(, -2).Address, "$", "") & ")"
                .Range("L" & (Rng.Row - 1)).Formula = "=sum(" & Replace(Rng.Address, "$", "") & ")"
            Next
            .Range("M14:M" & .Range("A65000").End(xlUp).Row).ClearContents
            With .Range("A65000").End(xlUp)
                .Offset(1).Value = "Toång giaù trò haøng hoùa ñöôïc mua vaøo "
                .Offset(1).Resize(, 13).Font.Name = "VNI-Times"
                .Offset(1).Resize(, 13).Font.Bold = True
                .Offset(1).Resize(, 13).Font.Color = -16776961
                .Offset(1).Resize(, 6).HorizontalAlignment = xlCenter
                .Offset(1).Resize(, 6).Merge
                .Offset(1, 9).Formula = "=SUMIF(R14C3:R[-1]C3,"""",R14C10:R[-1]C10)"
                .Offset(1, 11).Formula = "=SUMIF(R14C3:R[-1]C3,"""",R14C12:R[-1]C12)"
            End With
            .Range("A14:M" & .Range("A65000").End(xlUp).Row).Borders.LineStyle = 1
            With .Range("A65000").End(xlUp).Offset(1)
                .Value = "Baèng chöõ:"
                .Offset(, 1).Formula = "=HamDocTV(" & .Offset(-1, 11).Address & ")" 'Sua ham doc tieng viet cho nay
                .Offset(2, 1).Value = "Ngöôøi laäp baûng keâ"
                .Offset(2, 1).Font.Bold = True
                .Offset(1, 11).Value = "Ngaøy ... thaùng .... naêm ......"
                .Offset(2, 11).Value = "Giaùm ñoác danh nghieäp"
                .Offset(2, 11).Font.Bold = True
                .Offset(3, 1).Value = "(Kyù vaø ghi roõ hoï teân)"
                .Offset(3, 11).Value = "(Kyù teân, ñoùng daáu)"
                .Offset(2, 1).Resize(2).HorizontalAlignment = xlCenter
                .Offset(1, 11).Resize(3).HorizontalAlignment = xlCenter
                .Resize(5, 13).Font.Name = "VNI-Times"
            End With
        End With
   End If
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End If
End Sub
Dạ gửi A giaiphap
Nhờ A đưa code vào file dùm sao e đưa vào bảng tính đứng im ko lọc gì cả.
cảm ơn Anh
Bài đã được tự động gộp:

Dạ gửi A giaiphap
Nhờ A đưa code vào file dùm sao e đưa vào bảng tính đứng im ko lọc gì cả.
cảm ơn Anh
Dạ cảm ơn A giaiphap
code ok rồi A. em viết thêm định dạng tiền tệ bị lỗi.
chân thành cảm ơn sự giúp đở của Anh. Mong được thêm sự hỗ trợ hướng dẫn của Anh trong thời gian tới.
Cảm ơn A nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Status
Không mở trả lời sau này.

Bài viết mới nhất

Back
Top Bottom