Giúp em sửa bảng tính công (1 người xem)

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

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

hipbinot

Thành viên mới
Tham gia
7/9/14
Bài viết
2
Được thích
1
em mới dùng exel nên cũng chả biết hàm gì cả . e đã lấy 1 bảng tính công của 1 bạn trong diễn dàn sửa lại ,nhưng có 1 vấn đề là ô tổng cộng ko hiện thị nửa ngày công , ví dụ như 30.5 ngày công thì nó làm tròn thành 31 ngày công , a chị nào giúp e hiện thị được ko ạ và giúp e trình bày lại bảng tính công luôn -0-/. chứ e ngồi nghịch 1 lúc thì nó càng rối, nếu có thêm đc lịch vào thì tốt quá
 

File đính kèm

Biếu bạn 1 bảng chấm công mẫu

E. đã lấy 1 bảng tính công của 1 bạn trong diễn dàn sửa lại ,nhưng có 1 vấn đề là ô tổng cộng ko hiện thị nửa ngày công , ví dụ như 30.5 ngày công thì nó làm tròn thành 31 ngày công , a chị nào giúp e hiện thị được ko ạ và giúp e trình bày lại bảng tính công luôn -0-/. chứ e ngồi nghịch 1 lúc thì nó càng rối, nếu có thêm đc lịch vào thì tốt quá

(*) Danh sách nhân viên cần có mã; Tránh trùng nhau của họ tên trong đơn vị.
Bạn nghiền ngẫm cách tạo mã của mình; khoa học lắm đó nha!

(*) Bảng CC này xài được 2 năm; Sau đó bạn sẽ biết cách sửa!

(*) Còn cái dụ bạn nói mới xaiExcel thì mình tin; Vì bạn chưa biết cả chuyện định dạng 1 ô cho dễ nhìn & nhìn cho đúng!
 

File đính kèm

Không cho nhập liệu vào những ngày không tồn tại trong tháng !

(*) Danh sách nhân viên cần có mã; Tránh trùng nhau của họ tên trong đơn vị.
Bạn nghiền ngẫm cách tạo mã của mình; khoa học lắm đó nha!
Các bạn cho tôi hỏi thêm: lấy file của thầy SA_DQ làm ví dụ
Vì các tháng 4,6,... không có ngày 31 nên tôi không muốn cho nhập liệu ở cột AH. Vậy ta làm thế nào khi đang ở các tháng không có ngày 31 (cột AH) thì ta kg được nhập liệu ở cột này?
Đặt biệt là tháng 2 có năm nhuần và kg nhuần !?

Tôi nghĩ dùng Validation nhưng vẫn chưa tìm ra! mong nhờ các bạn hướng dẫn.
Cảm ơn các bạn!
 
Dù tháng có là 31 ngày chăng nữa, bạn cũng cần định dạng điều kiện ở tất cả các cột chứa ngày 29 trở đi;
Nếu CQ bạn ít người thì đó là chuyện nhỏ; Nhưng nếu CQ bạn vài trăm người thì máy sẽ ì ạch chạy mà thôi;

Mình đề xuất cách này: Viết 1 macro sự kiện tại nút chọn tháng cho bảng chấm công & duyệt các cột từ ngày 29 này;
Nếu nó/chúng nó đã sang tháng khác thì ta cho ẩn các cột đó đi.

Ẩn rồi thì lấy đâu chổ mà nhập nữa(!)

Cái này có vẻ dễ xơi hơn đó bạn!
 
Mình đề xuất cách này: Viết 1 macro sự kiện tại nút chọn tháng cho bảng chấm công & duyệt các cột từ ngày 29 này;
Nếu nó/chúng nó đã sang tháng khác thì ta cho ẩn các cột đó đi.

Ẩn rồi thì lấy đâu chổ mà nhập nữa(!)

Cái này có vẻ dễ xơi hơn đó bạn!
Bạn có thể giúp mình cái VBA để cho ẩn cột được kg!
Cảm ơn bạn trước
 
Các bạn cho tôi hỏi thêm: lấy file của thầy SA_DQ làm ví dụ
Vì các tháng 4,6,... không có ngày 31 nên tôi không muốn cho nhập liệu ở cột AH. Vậy ta làm thế nào khi đang ở các tháng không có ngày 31 (cột AH) thì ta kg được nhập liệu ở cột này?
Đặt biệt là tháng 2 có năm nhuần và kg nhuần !?

Tôi nghĩ dùng Validation nhưng vẫn chưa tìm ra! mong nhờ các bạn hướng dẫn.
Cảm ơn các bạn!
Gởi bạn
Tôi vừa dùng Validation & Conditional.F
sử dụng cho cả năm nhuần & kg nhuần
Bạn thử chọn tháng & năm sẽ thấy!
 

File đính kèm

Bạn có thể giúp mình cái VBA để cho ẩn cột được kg!
Cảm ơn bạn trước

Chờ câu này của bạn từ hôm qua kia!

Sau khi xem file của Hồng Vân mới thấy là cả 2 file chưa xóa dữ liệu cũ của các cột tháng sau; & điều này VBA làm được như sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [Ak1]) Is Nothing Then
    Dim Cls As Range, Rws As Long
    
    Columns("AF:AH").Hidden = False
    Rws = [b6].CurrentRegion.Rows.Count
    For Each Cls In [AF5].Resize(, 3)
        If Month(Cls.Value) <> Target.Value Then
            Cls.Offset(1).Resize(Rws).Clear     '<=|'
            Cls.EntireColumn.Hidden = True
        End If
    Next Cls
 End If
End Sub

Bạn chép macro này đè lên toàn bộ cái đã có trong file giúp nha!

!!!
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Chờ câu này của bạn từ hôm qua kia!

Sau khi xem file của Hồng Vân mới thấy là cả 2 file chưa xóa dữ liệu cũ của các cột tháng sau; & điều này VBA làm được như sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [Ak1]) Is Nothing Then
    Dim Cls As Range, Rws As Long
    
    Columns("AF:AH").Hidden = False
    Rws = [b6].CurrentRegion.Rows.Count
    For Each Cls In [AF5].Resize(, 3)
        If Month(Cls.Value) <> Target.Value Then
            Cls.Offset(1).Resize(Rws).Clear     '<=|'
            Cls.EntireColumn.Hidden = True
        End If
    Next Cls
 End If
End Sub

Bạn chép macro này đè lên toàn bộ cái đã có trong file giúp nha!

!!!
OoÔ rất tuyệt, cảm ơn 2 ban nhiều
 
Chờ câu này của bạn từ hôm qua kia!

Sau khi xem file của Hồng Vân mới thấy là cả 2 file chưa xóa dữ liệu cũ của các cột tháng sau; & điều này VBA làm được như sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [Ak1]) Is Nothing Then
    Dim Cls As Range, Rws As Long
    
    Columns("AF:AH").Hidden = False
    Rws = [b6].CurrentRegion.Rows.Count
    For Each Cls In [AF5].Resize(, 3)
        If Month(Cls.Value) <> Target.Value Then
            Cls.Offset(1).Resize(Rws).Clear     '<=|'
            Cls.EntireColumn.Hidden = True
        End If
    Next Cls
 End If
End Sub



!!!
Em dùng code trên & sửa để cho phù hơp với File của em. Sau khi sửa thì code của em nó xóa số liệu trong các cell AG59, AH59 và AI59
cụ thể khi chọn tháng 2 ở cell AK1
Nhờ các thầy cô & anh chi sửa giúp để code không xóa 3 cell nói trên, em cảm ơn!
Sau đây là code của em đã sửa
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [Ak1]) Is Nothing Then
    Dim Cls As Range, Rws As Long
    
    Columns("AG:AI").Hidden = False
    Rws = [B8].CurrentRegion.Rows.Count
    For Each Cls In [AG6].Resize(, 3)
        If Month(Cls.Value) <> Target.Value Then
            Cls.Offset(2).Resize(Rws).ClearContents    '<=|'
            Cls.EntireColumn.Hidden = True
        End If
    Next Cls
 End If
End Sub
 

File đính kèm

Chắc bạn chưa hiểu câu lệnh này:

PHP:
  Rws = [B8].CurrentRegion.Rows.Count
Giờ thì bạn làm thế này:
PHP:
Rws = [B8].CurrentRegion.Rows.Count - N

Bạn cứ tăng trị N lên cho đến khi nó không xóa những gì của bạn cần là được cả 2 vấn đề:
(1) Tại sao?
(2) Như thế nào?

Chúc vui!
 
(*) Danh sách nhân viên cần có mã; Tránh trùng nhau của họ tên trong đơn vị.
Bạn nghiền ngẫm cách tạo mã của mình; khoa học lắm đó nha!

(*) Bảng CC này xài được 2 năm; Sau đó bạn sẽ biết cách sửa!

(*) Còn cái dụ bạn nói mới xaiExcel thì mình tin; Vì bạn chưa biết cả chuyện định dạng 1 ô cho dễ nhìn & nhìn cho đúng!
cám ơn bác :D e trước giờ có dùng tới đâu ,, đến lúc cần thì lại ko bít :D
 
Chắc bạn chưa hiểu câu lệnh này:

PHP:
  Rws = [B8].CurrentRegion.Rows.Count
Giờ thì bạn làm thế này:
PHP:
Rws = [B8].CurrentRegion.Rows.Count - N

Bạn cứ tăng trị N lên cho đến khi nó không xóa những gì của bạn cần là được cả 2 vấn đề:
(1) Tại sao?
(2) Như thế nào?

Chúc vui!
Nếu xóa 2 cell định dạng màu trắng thì N = 2
Hôm qua vì kg xóa 2 ceel trên nên khi sửa code
PHP:
Cls.Offset(2).Resize(Rws).ClearContents
thành
PHP:
Cls.Offset(2).Resize(Rws - 2).ClearContents
nó kg ra kết quả
Cảm ơn bạn
 
Chào các bạn!
Mình lấy File của bạn Hong.Van (làm ví dụ ). Thông thường để tô chữ thì dùng C.F ví dụ như tô màu chữ các ngày thứ 7 hay Chủ Nhật, nhưng nay mình muốn tô màu cho cả các ngày Nghỉ lễ như Tết tây, Nguyên đán, ... (có trong danh sách của Sheet
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn có 2 việc cần làm ngay, đó là:

(1) Sang trang tính 'NghiLe', chọn vùng [c4:c13] & gán cho nó cái tên 'NgLe'

(2) Chép nội dung sau đây, đè lên toàn bộ macro có trong file của bạn đã đưa lên:

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [Ak1]) Is Nothing Then
    Dim Cls As Range, Sh As Worksheet, Rng As Range, lRg As Range
    Dim Rws As Long
    
    Columns("AG:AI").Hidden = False
    Rws = [B8].CurrentRegion.Rows.Count
    Set Sh = ThisWorkbook.Worksheets("NghiLe")
    Set Rng = Sh.Range("NgLe")
    Rng.NumberFormat = "mm/dd/yyyy"
    [e6].Resize(2, 31).Interior.ColorIndex = 2
    For Each Cls In [e6:AI6]
        Set lRg = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
        If Not lRg Is Nothing Then
            Cls.Resize(2).Interior.ColorIndex = 3
        Else
            If Weekday(Cls.Value) = 1 Then
                Cls.Resize(2).Interior.ColorIndex = 38
            ElseIf Weekday(Cls.Value) = 7 Then
                Cls.Resize(2).Interior.ColorIndex = 35
            End If
        End If
        If Cls.Column > 32 And Month(Cls.Value) <> Target.Value Then
            Cls.Offset(2).Resize(Rws - 2).ClearContents  '<=|'
            Cls.EntireColumn.Hidden = True
        End If
    Next Cls
 End If
End Sub

& chúc bạn thành công!
 
Cho tôi hỏi thêm, bây giờ tôi muốn code tô đến dòng cuối của bảng tình (đến dòng Tổng cộng) thì sửa code như thế nào?

Tô làm gì cho fí màu làm vậy!

Nếu muôn, bạn tự tìm hiểu đi & sửa lại 3 câu lệnh sau khi tham khảo lệnh xóa dữ liệu trong cột thuộc về tháng sau:
PHP:
Cls.Offset(2).Resize(Rws - 2).ClearContents  '<=|'
 
SPAM 1 chút

Mình cũng rất vui vì bạn đã 'mò' ra được các vấn đề bạn cần!

Dù sao cũng thật lòng nhắn bạn rằng, không nhất thiết fải tô màu cả cột làm vậy; Có cách khác vẫn hay, đó là freeze panes
 

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

Back
Top Bottom