Sử dụng công thức nào? để đánh số BB Nghiệm thu công việc (1 người xem)

  • Thread starter Thread starter vanle33
  • Ngày gửi Ngày gửi

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

vanle33

Thành viên gạo cội
Tham gia
30/10/08
Bài viết
5,978
Được thích
4,016
Giới tính
Nam
Em up file "Gui GPE" trong đó co 2 file Danh muc bbnt và Dap tran GD3
Em muốn tại cột F (ô màu xanh) của "Dap tran GD3" se bang cột D của "Danh muc bbnt" thỏa mãn các điều kiện sau
1) Chỉ tìm tên biên bản có đuôi là "NTCV" để điền sang cột F của "Dap tran GD3" ví dụ 01-Đ23/NTCV
2) Tìm kiếm tại cột B của "Danh muc bbnt" có tên khối đổ giống tên khối đổ bên cột B của "Dap tran GD3"
3) E muốn dò tìm tên khối đổ trong tất cả các Sheet từ Đợt 1 đến Đợt 24
4) Dò tìm theo tên khối là "BT-XV-35" hoặc "Khối đổ BT-XV-35" hoặc "ĐT-XV-35" hoặc "Khối đổ ĐT-XV-35" Vì có rất nhiều các khối đổ trong các Sheet của em có tên gần giống nhau. Nhưng thực ra đó là các khối khác nhau!

Ví dụ Cho ra kết quả như thế này là chính xác
Tại "Danh mục bbnt" khối đổ BT-XV-35 có tên BBNT công việc là 05-Đ23/NTCV
Thì tại "Dap tran GD3" tên của BBNT công việc tại ô F124 là 05-Đ23/NTCV
Thanks
 

File đính kèm

Code của bạn đây.
Mình đã chèn sheet Thongke vao chung voi file Danh muc cho tiện. Lưu ý là mình đã chuyển font bạn về UNICOE hết rồi, nếu font khác sẽ không chạy nha
PHP:
Sub Khoido()
Application.ScreenUpdating = False
Dim arr(), dk, dktim, i, DV, tim
dktim = Range([b11], [b11].End(4)).Value
DV = "Kh" & ChrW(7889) & "i " & ChrW(273) & ChrW(7893) & " "
ReDim arr(1 To UBound(dktim), 1 To 1)
For i = 1 To UBound(dktim)
dk = DV & dktim(i, 1)
    For Each sh In Worksheets
    If sh.Name <> "Thong ke Dap tran GD3" Then
        Set tim = sh.Range(sh.[b20], sh.[b100]).Find(dk)
        If Not tim Is Nothing Then
            If Right(sh.Cells(tim.Row + 1, 4), 4) = "NTCV" Then
                arr(i, 1) = sh.Cells(tim.Row + 1, 4)
            Else
                arr(i, 1) = ""
            End If
        End If
    End If
    Next
Next
[f11].Resize(UBound(dktim), 1) = arr
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Code của bạn đây.
Mình đã chèn sheet Thongke vao chung voi file Danh muc cho tiện. Vì file nặng quá nên mình xoá hết các sheet kia, bạn copy sheet vào file và chạy code nha

[/PHP]
Sao em đã copy tất cả các Sheet qua Danh muc bbnt. Và ấn Command Button nhưng không thấy ra kết quả gì?
 
Tải lại file trên đi, mình vừa sửa lại. Không có kết quả là tại khác font chữ

File này mình giữ font nguyên thuỷ đấy
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Mình chạy thử và kiểm tra kết quả thấy
Cùng tên BB là 04-Đ24/NTCV thì tại ô D28 của Sheet Dot 24 tương ứng là của khoi ĐT-XV-14, 17
Nhưng tại ô F100 của Sheet Dâptran GD3 thì lại là cuả khối ĐT-XV-1
Dẫn đến KQ sai
Bạn sửa giúp mình nhé
Nếu cùng tên khối đổ thì các tên BB phải giống nhau!
 
Thử lại code này xem thế nào
PHP:
Sub Khoido()
Application.ScreenUpdating = False
Dim arr(), dk, dktim, i, DV, tim
dktim = Range([b11], [b11].End(4)).Value
ReDim arr(1 To UBound(dktim), 1 To 1)
For i = 1 To UBound(dktim)
dk = [h1] & " " & dktim(i, 1)
    For Each sh In Worksheets
    If sh.Name <> "Thong ke Dap tran GD3" Then
        Set tim = sh.Range(sh.[b20], sh.[b100]).Find(dk, , , xlWhole)
        If Not tim Is Nothing Then
            If Right(sh.Cells(tim.Row + 1, 4), 4) = "NTCV" Then
                arr(i, 1) = sh.Cells(tim.Row + 1, 4)
            Else
                arr(i, 1) = ""
            End If
        End If
    End If
    Next
Next
[f11].Resize(UBound(dktim), 1) = arr
Application.ScreenUpdating = True
End Sub
 
Và khi có cùng tên khối đổ thì số BB đó sẽ ở cả hai tên khối đổ đó ở "Dap tran GD3"
Ví dụ như tại Sheet "Dot 24" khối ĐT-XV-14, 17 có số BB là 04-Đ24/NTCV thì tại Sheet " Dap tran GD3" 2 khối ĐT-XV-14 và khối ĐT-XV-17 sẽ cùng có tên là 04-Đ24/NTCV
Vì vậy 1 khối đổ có thể có nhiều tên BB

A quang hai ơi!
A chú ý cho e điều kiện ở bài #10 nhé, cả phần chữ đỏ đó
Thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình pó tay rồi, dữ liệu kiểu đó thì ngoài khả năng của mình rồi. Vậy mong anh chị khác tiếp tay giúp dùm.
 
Có 1 vấn đề là các khối đổ ở nhiều giai đoạn khác nhau và có thể cùng tên. Code có thể phân biệt đc ko a? Và code có thể chạy đồng thời nhiều giai đoạn khác nhau như "Dap tran GD3" đc ko
Em up lên các giai đoạn cần đánh tên BB là file 111.rar
Ngoài file Dap tran GD3 còn có 11 file các Giai doạn khác trong 111.rar
 

File đính kèm

Thử lại code này xem thế nào
PHP:
Sub Khoido()
Application.ScreenUpdating = False
Dim arr(), dk, dktim, i, DV, tim
dktim = Range([b11], [b11].End(4)).Value
ReDim arr(1 To UBound(dktim), 1 To 1)
For i = 1 To UBound(dktim)
dk = [h1] & " " & dktim(i, 1)
    For Each sh In Worksheets
    If sh.Name <> "Thong ke Dap tran GD3" Then
        Set tim = sh.Range(sh.[b20], sh.[b100]).Find(dk, , , xlWhole)
        If Not tim Is Nothing Then
            If Right(sh.Cells(tim.Row + 1, 4), 4) = "NTCV" Then
                arr(i, 1) = sh.Cells(tim.Row + 1, 4)
            Else
                arr(i, 1) = ""
            End If
        End If
    End If
    Next
Next
[f11].Resize(UBound(dktim), 1) = arr
Application.ScreenUpdating = True
End Sub
Code ở trên có phải code anh đã làm trong bài #7 không a?
 
Chỉ khác 1 dòng này

Set tim = sh.Range(sh.[b20], sh.[b100]).Find(dk, , , xlWhole)
 
Bạn xem kỹ lại cách bố trí dữ liệu của khối đổ, trước đây mình cũng bố trí dữ liệu y chang như thế và kết quả là bị sếp đuổi việc nên giờ mình rút kinh nghiệm rồi. Thà rằng lúc đầu nhập dữ liệu đúng nguyên tắc rồi sau đó khỏe.
 
Bạn xem kỹ lại cách bố trí dữ liệu của khối đổ, trước đây mình cũng bố trí dữ liệu y chang như thế và kết quả là bị sếp đuổi việc nên giờ mình rút kinh nghiệm rồi. Thà rằng lúc đầu nhập dữ liệu đúng nguyên tắc rồi sau đó khỏe.
A cũng làm trong Công ty XD ah? E có thể thêm 1 cột phụ ngoài vùng in tứưngơng ứng với các khối đổ. Rồi sau đó e thêm Các giai đoạn tương ứng với các khối đổ đó ở các đợt (1->24)
A giúp e viết code để tìm kiếm tên BB ở các đợt (1 -> 24) và điền sang 12 sheet Thống kê các Giai đoạn nhé
Thanks a
 
Code đã viết có thể sử dụng cho các giai đoạn mà. Nhưng tại ô H1 phải thêm từ Khối đổ nha( mình đã định dạng font ô này màu trắng rồi
 
Bạn tải lại file của bài 7 nghen, đã chỉnh sửa code trong file
 
Đúng rồi, mình quên dòng lệnh ,,, xlWhole. Đã sửa lại rồi.
 
Nếu cấu trúc dữ liệu và điều kiện tìm giống nhau thì phải chạy thôi, còn khác nhau thì chắc là không chạy. Đoán đại như vậy.
 
Mình khồng hiểu tại sao bạn vẫn chưa áp dụng đựơc cho những sheet khác. Phải xét lại những điều kiện sau:
1. Tên khối đổ trong 11 sheet kia có nằm trong 24 sheet của file danh muc BBNT hay không?
2. Điều kiên BB có phải là 4 chữ cuối là NTCV hay không

Nếu thoả 2 điều kiện trên thì ít nhất phải ra được kết quả mặc dù không thể hiện hết kết quả vì lý do dữ liệu của bạn không đồng nhất và code chưa xử lý được việc này.
 
Mình khồng hiểu tại sao bạn vẫn chưa áp dụng đựơc cho những sheet khác. Phải xét lại những điều kiện sau:
1. Tên khối đổ trong 11 sheet kia có nằm trong 24 sheet của file danh muc BBNT hay không?
2. Điều kiên BB có phải là 4 chữ cuối là NTCV hay không

Nếu thoả 2 điều kiện trên thì ít nhất phải ra được kết quả mặc dù không thể hiện hết kết quả vì lý do dữ liệu của bạn không đồng nhất và code chưa xử lý được việc này.
E xin trả lời
1) Tên các khối đổ trong toàn bộ 12 giai đoạn đều có trong các Đợt 1 đến 24. Có lẽ e phải tạo 1 cột phụ và ghi tên giai đoạn tương ứng của các khối đổ trong Đợt 1 đến 24. A giúp e viết lại code sau khi e đã thêm cột phụ nhé!
2)Có cần điều kiện tên BB phải có 4 chữ cuối là NTCV. Vì đây là số BB của Nghiệm thu Công việc (NTCV) mà
 
Các anh chị trên Diễn đàn giúp em đề tài này nhé. Kèm thêm các điều kiện ở bài #10, #11, #13, #19
Chứ em cứ tự tìm tên BB thủ công, chắc die mất |||||--=0
 
Theo quan điểm của mình thì làm thế này
1. Chiu khó tách những khối đổ nào đã gọp chung lại ra hết
2. Nếu sheet Thong ke Dap tran GD3 đã chạy OK thi copy những sheet kia vào sheet Thong ke Dap tran GD3 rồi chạy code. Bạn xem lại dữ liệu đi, bạn có thể nào đưa ra nguyên tắc khi trộn các khối với nhau không? Nếu có nguyên tắc thì sẽ có cách (mặc dù khó nhưng cũng sẽ có cách). Nếu bản thân của bạn không đưa ra được nguyên tắc trộn khối với nhau thi làm sao người khác hiểu được mà viết code tiếp chứ.
 
Theo quan điểm của mình thì làm thế này
1. Chiu khó tách những khối đổ nào đã gọp chung lại ra hết
2. Nếu sheet Thong ke Dap tran GD3 đã chạy OK thi copy những sheet kia vào sheet Thong ke Dap tran GD3 rồi chạy code. Bạn xem lại dữ liệu đi, bạn có thể nào đưa ra nguyên tắc khi trộn các khối với nhau không? Nếu có nguyên tắc thì sẽ có cách (mặc dù khó nhưng cũng sẽ có cách). Nếu bản thân của bạn không đưa ra được nguyên tắc trộn khối với nhau thi làm sao người khác hiểu được mà viết code tiếp chứ.
Sau khi em đã thêm cột phụ để ghi tên các giai đoạn tương ứng như bài #30, thì a giúp e viết code nhé
Vì 1 khối đổ có thể được đổ nhiều ngày nên nó có tên ở nhiều giai đoạn!
Và vì cùng 1 ngày đổ thì có đồng thời nhiều giai đoạn (1 ngày đổ có thể có 2 hay 3 giai đoạn ...)
 
Nếu phải thêm cột phụ gi đó thì hãy quên đi cái code đã viết trước đó, mọi thứ coi như mới hoàn toàn đi. Cung cấp lại điều kiên phù hợp với cái cột phụ gì đó, nhưng các khổi đổ vẫn trộn lẫn vào nhau và bạn không cho biết được nguyên tắc thì xin chịu thua. Mình không có khả năng dựa vào cái từ "có thể" của bạn để viết đâu. Nói chung điều kiện và dữ liệu rõ ràng thì có thể viết, nếu không thì pótay
 
Nếu phải thêm cột phụ gi đó thì hãy quên đi cái code đã viết trước đó, mọi thứ coi như mới hoàn toàn đi. Cung cấp lại điều kiên phù hợp với cái cột phụ gì đó, nhưng các khổi đổ vẫn trộn lẫn vào nhau và bạn không cho biết được nguyên tắc thì xin chịu thua. Mình không có khả năng dựa vào cái từ "có thể" của bạn để viết đâu. Nói chung điều kiện và dữ liệu rõ ràng thì có thể viết, nếu không thì pótay
E gửi lại file đã thêm các điều kiện như bài #31 và #34.
Các điều kiện lập code em đã ghi trong Sheet "Dot 24" (Ghi chú 1 + 2 + 3 màu đỏ) cua Danh muc bbnt11
Mong các bác giúp em!
Thanks
 

File đính kèm

Mong có sự giúp đỡ các anh chị trên Diễn đàn
Thanks
 
Hôm nay mình up lại câu hỏi này , mong các anh chị tiếp tục giúp đỡ
 
Mong mọi người tiếp tục giúp đỡ vấn đề trên!
Xin BQT thứ lỗi vì đưa bài có nội dung gần giống bài trước . Em muốn giải quyết cho được vấn đề của em mà!
Thanks
 
Các cao thủ VBA cùng nhau giúp mình bài toán trên với nhé!
Thanks
 
Mọi người chung tay giúp mình nhé!
Thanks
 

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

Back
Top Bottom