Xử lý tự động đánh số theo thứ tự ngày trong tiếng Anh

Liên hệ QC

satthuvae

Thành viên thường trực
Tham gia
12/3/09
Bài viết
381
Được thích
52
Nhờ các cao thủ chỉ giáo làm thế nào có thể đánh số ngày tự động có mẫu st, th, rd trên cùng của ngày đó, mình đang cần lập báo cáo tài chính tự động. Rất mong các cao thủ chỉ giáo mình.
Xin cám ơn.
 

File đính kèm

Cám ơn bạn, mình đọc nhưng vẫn không làm cách nào được, vì cái này là mũ của ngày tháng. Bạn xem xử lý giúp mình. Mình rất cần.
 
Cám ơn bạn, mình đọc nhưng vẫn không làm cách nào được, vì cái này là mũ của ngày tháng. Bạn xem xử lý giúp mình. Mình rất cần.
Thì tôi đã giúp bạn chỉ ra là công thức không làm được. Bạn chờ thành viên khác giúp đỡ bằng code xem sao.
 
Nhờ các cao thủ xem có code nào giúp mình với.
 
Nhờ các cao thủ chỉ giáo làm thế nào có thể đánh số ngày tự động có mẫu st, th, rd trên cùng của ngày đó, mình đang cần lập báo cáo tài chính tự động. Rất mong các cao thủ chỉ giáo mình.
Xin cám ơn.
Mấy chữ th, st, ... kg có trong Alt code, nên bài này fải viết code thôi
 
Giống vầy phải không ta:
1ˢᵗ, 2ⁿᵈ, 3ʳᵈ, 4ᵗʰ
 
Nếu dùng vba thì
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s$, i&
    If Target.Count > 1 Or Target.Column <> 3 Or (Not IsNumeric(Target)) Then Exit Sub
    Application.EnableEvents = False
    For i = 1 To 31
        If Target = i Then
            Select Case i
                Case 1, 21, 31
                    s = "st"
                Case 2, 22
                    s = "nd"
                Case 3, 23
                    s = "rd"
                Case Else
                    s = "th"
            End Select
            Target = Target.Text & s
            Target.Characters(Len(Target.Text) - 1, 2).Font.Superscript = True
            Exit For
        End If
    Next
    Application.EnableEvents = True
 End Sub
 
Nếu dùng vba thì
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s$, i&
    If Target.Count > 1 Or Target.Column <> 3 Or (Not IsNumeric(Target)) Then Exit Sub
    Application.EnableEvents = False
    For i = 1 To 31
        If Target = i Then
            Select Case i
                Case 1, 21, 31
                    s = "st"
                Case 2, 22
                    s = "nd"
                Case 3, 23
                    s = "rd"
                Case Else
                    s = "th"
            End Select
            Target = Target.Text & s
            Target.Characters(Len(Target.Text) - 1, 2).Font.Superscript = True
            Exit For
        End If
    Next
    Application.EnableEvents = True
 End Sub
Sao lại dùng vòng lặp chi vậy anh? Bỏ vòng lặp được mà. Dùng Select Case Target được rồi.
Và nếu không xoá định dạng trước thì nhập lần thứ 2 có thể bị kỳ lắm đó
 
Lần chỉnh sửa cuối:
Sao lại dùng vòng lặp chi vậy anh? Bỏ vòng lặp được mà. Dùng Select Case Target được rồi.
Và nếu không xoá định dạng trước thì nhập lần thứ 2 có thể bị kỳ lắm đó
Tại em lười kiểm tra target có phải số nguyên trong khoảng từ 1 đến 31 không (thay thế if target>=1 and target<= 31 and target=INT(target)), vòng lặp ngắn nên cũng không ảnh hưởng. Còn xóa superscript cho lần sau thì em chưa biết thế nào? Hay là chơi xấu bằng cách thêm ký tự trống ở cuối để xóa?
 
Lần chỉnh sửa cuối:
Tại em lười kiểm tra target có phải số nguyên trong khoảng từ 1 đến 31 không (thay thế if target>=1 and target<= 31 and target=INT(target)), vòng lặp ngắn nên cũng không ảnh hưởng. Còn xóa superscript cho lần sau thì em chưa biết thế nào? Hay là chơi xấu bằng cách thêm ký tự trống ở cuối để xóa?
Chèn thêm dòng xoá trước rồi mới định dạng lại
PHP:
Target.Characters.Font.Superscript = False
 
Mình cám ơn các bạn rất nhiều, các bạn có thể viết lại code hướng dẫn sử dụng file này giúp mình với, minh loay hoay mãi mà không được.
 

File đính kèm

Bạn ơi, mình đã đưa code vào rùi mà, nhập cột c cũng ko được, bạn làm giúp mình với.
 
Mình làm giống như bạn nhưng vẫn không được, bạn có thể làm ví dụ giúp mình không, mình không giỏi cái này. Rất mong bạn chỉ giáo tận tình, xin cám ơn.
 
Cám ơn bạn mình làm được rùi, nhưng mình làm phiền bạn một chút nữa thôi, bạn chỉ giúm cho mình, khi mình muốn chuyển sang cột khác, hay ô khác trong bảng đó, mình sẽ chỉnh code đó như thế nào.
[TABLE="width: 64"]
[TR]
[TD]
Private Sub Worksheet_Change(ByVal Target As Range)
[/TD]
[/TR]
[TR]
[TD] Dim s$, i&[/TD]
[/TR]
[TR]
[TD] If Target.Count > 1 Or Target.Column <> 3 Or (Not IsNumeric(Target)) Then Exit Sub[/TD]
[/TR]
[TR]
[TD] Application.EnableEvents = False[/TD]
[/TR]
[TR]
[TD] For i = 1 To 31[/TD]
[/TR]
[TR]
[TD] If Target = i Then[/TD]
[/TR]
[TR]
[TD] Select Case i[/TD]
[/TR]
[TR]
[TD] Case 1, 21, 31[/TD]
[/TR]
[TR]
[TD] s = "st"[/TD]
[/TR]
[TR]
[TD] Case 2, 22[/TD]
[/TR]
[TR]
[TD] s = "nd"[/TD]
[/TR]
[TR]
[TD] Case 3, 23[/TD]
[/TR]
[TR]
[TD] s = "rd"[/TD]
[/TR]
[TR]
[TD] Case Else[/TD]
[/TR]
[TR]
[TD] s = "th"[/TD]
[/TR]
[TR]
[TD] End Select[/TD]
[/TR]
[TR]
[TD] Target = Target.Text & s[/TD]
[/TR]
[TR]
[TD] Target.Characters(Len(Target.Text) - 1, 2).Font.Superscript = True[/TD]
[/TR]
[TR]
[TD] Exit For[/TD]
[/TR]
[TR]
[TD] End If[/TD]
[/TR]
[TR]
[TD] Next[/TD]
[/TR]
[TR]
[TD] Application.EnableEvents = True[/TD]
[/TR]
[TR]
[TD] End Sub[/TD]
[/TR]
[/TABLE]
Cám ơn bạn!!!!!
 
Web KT

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

Back
Top Bottom