Tạo lịch

Liên hệ QC

thuynhung1979

Thành viên mới
Tham gia
22/2/08
Bài viết
25
Được thích
8
Chao các bạn.
Mình có đề bài tạo lịc như vậy mà mình không làm được. Nhờ các bạn giúp mình với. Mà không được sử dụng VBA đâu nha.

_________

Chú ý: Bạn chỉ cần post bài ở một topic. Không nên post nhiều nơi như vậy. Bài của bạn sẽ được mọi người xem qua và trả lời.

Thân,
Jenni
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Việc tạo 12 tờ lịch tháng trên 1 bảng tính chẳng khó khăn gì... Cái rắc rối của bạn là ở chổ tô màu...
Gợi ý: Bạn sắp lại dử liệu, mổi hội trường 1 cột là xong!

Thôi.. làm luôn đây!
Tôi gữi lên cho bạn 2 file, 1 file Calendar gốc chỉ có lich và 1 file có dử liệu như bạn nói... (Khi tô màu hồng lên thấy xấu quá nên tôi sửa lại thành màu cam, bạn có thể sửa lại theo ý mình nhé)
Về phần lich có thể tham khảo tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=7899
Tuy nhiên cho đến hôm nay tôi đã pháp hiện ra công thức đơn giãn hơn, nó nằm trong file đính kèm và có lẽ đây chính là giãi pháp đơn giản nhất để tạo 1 tờ lịch tháng (chỉ dùng có 2 name)
ANH TUẤN
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Trước mình thấy có 1 bạn làm cái này cũng OK như Mr Tuấn làm, gửi bạn tham khảo...
 

File đính kèm

Trước mình thấy có 1 bạn làm cái này cũng OK như Mr Tuấn làm, gửi bạn tham khảo...
Công thức này ko tổng quát vì phải tạo công thức khác nhau cho 12 tờ, đã vậy lại còn tùm lum các cột phụ... Còn tôi chỉ cần 1 công thức duy nhất, copy và paste cho 11 tờ lịch còn lại, ko có cột phụ gì cả.. nhanh gọn và tổng quát hơn nhiều...
Mặc khác yêu cầu của tác giã ko phải chỉ có tạo lịch mà thôi, bạn xem kỹ lại đi
ANH TUẤN
 
Lần chỉnh sửa cuối:
Cảm ơn Anh Tuấn và các bạn. Mình sẽ làm thử xem sao! Nếu có vấn đề gì thì mình sẽ hỏi lại.
 
Công thức này ko tổng quát vì phải tạo công thức khác nhau cho 12 tờ, đã vậy lại còn tùm lum các cột phụ... Còn tôi chỉ cần 1 công thức duy nhất, copy và paste cho 11 tờ lịch còn lại, ko có cột phụ gì cả.. nhanh gọn và tổng quát hơn nhiều...
Mặc khác yêu cầu của tác giã ko phải chỉ có tạo lịch mà thôi, bạn xem kỹ lại đi
ANH TUẤN

Bác Tuấn giải bài này đi, em loay hoay mãi chưa ra được kết quả.

Dữ liệu hàng dọc, trả về kết quả thì theo 12 bảng, chẳng theo trật tự gì.

Em chẳng biết dùng cái gì để conditional format nữa.

Cám ơn bác
 
Bác Tuấn giải bài này đi, em loay hoay mãi chưa ra được kết quả.

Dữ liệu hàng dọc, trả về kết quả thì theo 12 bảng, chẳng theo trật tự gì.

Em chẳng biết dùng cái gì để conditional format nữa.

Cám ơn bác
Bạn làm 1 tháng thôi.. Conditional Formating cũng trong tháng đó thôi... Cuối cùng copy và paste sang 11 tháng còn lại là dc chứ gì
(Trong file đính kèm tại bài #2 tôi giãi cả rồi còn gì)
ANH TUẤN
 
Hãy xem VBA nó làm NTN!

Nhờ các bạn giúp mình với. Mà không được sử dụng VBA đâu nha.

Nếu muốn tham khảo, thì chép đoạn code này vô CS VBE;
Khi thực hiện, mảco sẽ tạo ra tờ lịch tại sheet mới & có tô tờ lịch ngày mai màu đỏ

PHP:
Option Explicit
Sub CreateCalendar()
Dim lMonth As Long, lDays As Long, bTong As Byte
Dim strMonth As String, strAddress As String
Dim rStart As Range, rCell As Range
Dim Dat As Date
    'Add new sheet and format'
    Worksheets.Add:                                     Application.ScreenUpdating = False
    ActiveWindow.DisplayGridlines = False
        With Cells
            .ColumnWidth = 4:                                   .Font.Size = 8
        End With
    'Create the Month headings'
    For lMonth = 1 To 4
        Select Case lMonth
            Case 1
                strMonth = "January":                       Set rStart = Range("A1")
            Case 2
                strMonth = "April":                         Set rStart = Range("A8")
            Case 3
                strMonth = "July":                          Set rStart = Range("A15")
            Case 4
                strMonth = "October":                       Set rStart = Range("A22")
    End Select
'Merge, AutoFill and align months'
    With rStart
        .Value = strMonth:                              .HorizontalAlignment = xlCenter
        .Interior.ColorIndex = 34:                      .Font.Bold = True
        With .Range("A1:G1")
            .Merge:                                     .BorderAround LineStyle:=xlContinuous
        End With
        .Range("A1:G1").AutoFill Destination:=.Range("A1:U1")
    End With
    Next lMonth
     'Pass ranges for months'
    For lMonth = 1 To 12
        strAddress = Choose(lMonth, "A2:G7", "H2:N7", "O2:U7", "A9:G14", "H9:N14", "O9:U14", _
                    "A16:G21", "H16:N21", "O16:U21", "A23:G28", "H23:N28", "O23:U28")
        lDays = 0
        Range(strAddress).BorderAround LineStyle:=xlContinuous
        'Add dates to month range and format'
        For Each rCell In Range(strAddress)
            lDays = lDays + 1
            Dat = DateSerial(Year(Date), lMonth, lDays)
                If Month(Dat) = lMonth Then ' It's a valid date
                    With rCell
                        .Value = Dat
                        bTong = Sheets("data").Range("B" & lDays + 1) + Sheets("data").Range("C" _
                            & lDays + 1) + Sheets("data").Range("D" & lDays + 1)
                        If bTong < 80 Then
                            .Interior.ColorIndex = 33:      .NumberFormat = "dd"
                        ElseIf bTong < 100 Then
                            .Interior.ColorIndex = 36:      .NumberFormat = "dd  "
                        ElseIf bTong > 99 Then
                            .Interior.ColorIndex = 39:      .NumberFormat = "dd    "
                        End If
                                                
                    End With
                End If
        Next rCell
    Next lMonth
    'add con formatting
     With Range("A1:U28")
           .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=TODAY()+1"
           .FormatConditions(1).Font.ColorIndex = 3
    End With
    Range("B30:C30").Interior.ColorIndex = 33:     Range("D30") = "Duoi 80"
    Range("B32:C32").Interior.ColorIndex = 36:     Range("D32") = "Duoi 100"
    Range("B34:C34").Interior.ColorIndex = 39:     Range("D34") = "Tren 99"
End Sub
 
Web KT

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

Back
Top Bottom