Tạo nhắc việc trên lịch kèm nhiều điều kiện

Liên hệ QC

9xconduongtoidi

Thành viên mới
Tham gia
6/12/14
Bài viết
10
Được thích
0
Chào các anh chị. Như trong file em muốn trên sheet Calendar sẽ hiển thị đúng ngày theo định dạng: "Ngày hết hạn quay HM Trần Văn A" (Nội dung + tên KH).
Mong mọi người giúp đỡ ạ
 

File đính kèm

Cách 1: Dùng UDF (UserDefineFormula) tại B4
=Noidung(B3)

Copy sang phải và xuống các ô còn lại (Mình làm tháng đầu tiên, các tháng sau bạn tự làm)

Với code dưới đây được dán vào module1 (Alt-F11 mở VBA, insert/modules/module1)
PHP:
Option Explicit
Function Noidung(ByVal cell As Range) As String
Dim rng, i&, j&, lr&
Application.Volatile
With Worksheets("Sheet1")
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    rng = .Range("A1:D" & lr).Value2
End With
For i = 2 To lr
    For j = 2 To 4
        If rng(i, j) = cell.Value2 Then
            If Noidung = "" Then
                Noidung = rng(1, j) & rng(i, 1)
            Else
                Noidung = Noidung & "; " & rng(1, j) & rng(i, 1)
            End If
        End If
    Next
Next
End Function
Cách 2: Sẽ bổ sung bài sau
 

File đính kèm

Cách 2:
Nếu không muốn đi đến từng ô trong từng tháng để paste, dùng subroutine. Trong chế độ soạn thảo, nhấn F5 1 lần để lấy kết quả.
Nhược điểm: Không tự động cập nhật mỗi khi có thay đổi, mà phải chạy sub (hoặc tạo 1 nút button, gán code cho nó rồi click, như mình làm trong file)
PHP:
Option Explicit
Sub Noidung2()
Dim rng, i&, j&, lr&, lr2&, cell As Range, nd As String
Application.ScreenUpdating = False
With Worksheets("Sheet1")
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    rng = .Range("A1:D" & lr).Value2
End With
With Worksheets("Calendar")
    lr2 = .Cells(Rows.Count, "B").End(xlUp).Row
    For Each cell In .Range("B2:H" & lr2)
        nd = ""
        If IsDate(cell) Then
            cell.Offset(1, 0).ClearContents
            For i = 2 To lr
                For j = 2 To 4
                    If rng(i, j) = cell.Value2 Then
                        If nd = "" Then
                            nd = rng(1, j) & rng(i, 1)
                        Else
                            nd = nd & "; " & rng(1, j) & rng(i, 1)
                        End If
                    End If
                Next
            Next
            cell.Offset(1, 0).Value = nd
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub
Bài đã được tự động gộp:

Cái này có chức năng gì thế anh?
Và lúc nào thì dùng nó, lúc nào không thế ạ
Volatile formula, nghĩa là mỗi khi có sự thay đổi trên bảng tính (dù không có liên quan đến các ô mà nó tham chiếu đến), nó cũng tự động cập nhật. VD: INDIRECT, OFFSET, ADDRESS,... dẫn đến tốc độ bị ảnn hưởng.
Với UDF, bình thường, trên sheet có thể nó sẽ không tự động cập nhật khi có sự thay đổi (non volatile).
Bởi vậy, để nó tự cập nhật, ép nó trở thành volatile
PHP:
Application.Volatile
 

File đính kèm

Lần chỉnh sửa cuối:
Cách 2:
Nếu không muốn đi đến từng ô trong từng tháng để paste, dùng subroutine. Trong chế độ soạn thảo, nhấn F5 1 lần để lấy kết quả.
Nhược điểm: Không tự động cập nhật mỗi khi có thay đổi, mà phải chạy sub (hoặc tạo 1 nút button, gán code cho nó rồi click, như mình làm trong file)
Em cảm ơn anh, cách 2 em làm thuận tiện nhất. Tuy nhiên, chắc câu hỏi của em không dc rõ ràng. Em đang cần nó hiển thị cả những trường hợp
Ngày hết hạn HĐĐịnh giá lại tài sản
VBA em không rõ lắm, mong anh chỉ dạy giúp ạ
 
Em cảm ơn anh, cách 2 em làm thuận tiện nhất. Tuy nhiên, chắc câu hỏi của em không dc rõ ràng. Em đang cần nó hiển thị cả những trường hợp
Ngày hết hạn HĐĐịnh giá lại tài sản
VBA em không rõ lắm, mong anh chỉ dạy giúp ạ
Bạn thử hết chưa? Trong ô thể hiện hết các thông tin mà.
VD: nếu 1 ngày có 2 trường hợp xảy ra thì trong ngày đó sẽ là:
"Ngày hết hạn HĐ: Nguyễn Văn A; Định giá lại tài sản: Nguyễn Văn B"
Bạn thử lại nếu không được thì điền tay kết quả mong muốn và gửi file lại nhé.
 
Bạn thử hết chưa? Trong ô thể hiện hết các thông tin mà.
VD: nếu 1 ngày có 2 trường hợp xảy ra thì trong ngày đó sẽ là:
"Ngày hết hạn HĐ: Nguyễn Văn A; Định giá lại tài sản: Nguyễn Văn B"
Bạn thử lại nếu không được thì điền tay kết quả mong muốn và gửi file lại nhé.
Em cảm ơn anh rất nhiều ạ. Em test lại thì đúng rồi ạ.
1. E muốn thêm các trường nội dung thì sửa ntn ạ. Ví dụ như thêm ngày bổ sung tài sản, ngày hết hạn món vay... tại dòng 1 sheet 1
2. Trong file đang bị dính lỗi liền chữ Ngày HH vòng quay HMTrần Văn B. A sửa luôn giùm e với ạ.
Làm phiền a quá, e cảm ơn a lần nữa ạ.
 
Bổ sung thêm gì thì bạn thêm cột vào rồi điền 1, 2 kết quả bằng tay để mình sẽ giúp bằng code
 
Web KT

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

Back
Top Bottom