Kathy cần một công thức có thể thay đổi bất kỳ ngày nào trong tháng hiện tại thành ngày cuối cùng của tháng trước. Cô ấy cũng lưu ý rằng sẽ rất hữu ích nếu có một macro VBA có thể thực hiện việc này với các ngày trong một phạm vi ô đã chọn.

Trên thực tế, có một số cách tiếp cận công thức khác nhau mà bạn có thể sử dụng để xác định ngày mong muốn. Hai cái này ngắn nhất và dễ sử dụng nhất:

=A1-DAY(A1)

=EOMONTH(A1,-1)

Cách đầu tiên hoạt động vì “ngày 0” của tháng hiện tại luôn được coi là ngày cuối cùng của tháng trước. Do đó, nếu ngày trong ô A1 là 25/9/20, bạn sẽ lấy ngày đó trừ đi 25 (giá trị DAY), cho ra ngày 9/0/20 hoặc 8/31/20.

Công thức thứ hai hoạt động nhờ việc bao gồm tham số thứ hai cho hàm EOMONTH. Tham số này được sử dụng để cho biết số tháng trong quá khứ (tiêu cực) hoặc tương lai (dương) sẽ được tính vào cuối tháng.

Trong cả hai trường hợp, bạn có thể cần phải định dạng ô chứa công thức dưới dạng ngày tháng. Nếu không, những gì bạn thấy có thể là số sê-ri cơ bản được Excel sử dụng để tính toán ngày tháng.

Nếu bạn muốn một macro thực sự sẽ chuyển đổi ngày trong một phạm vi đã chọn thành ngày cuối cùng của tháng trước, thì thao tác sau sẽ thực hiện thủ thuật.

Sub LastDayPreviousMonth()

Dim rCell As Range

For Each rCell In Selection         If IsDate(rCell) And Not rCell.HasFormula Then             rCell.Value = WorksheetFunction.EoMonth(rCell.Value, -1)

End If     Next rCell End Sub

Macro bước qua từng ô trong phạm vi đã chọn và kiểm tra xem nó có chứa ngày tháng và không phải là công thức hay không. (Nói cách khác, nếu ngày trong ô là kết quả của một công thức, thì công thức sẽ không bị thay đổi.)

Sau đó, hàm EOMONTH được sử dụng, như đã mô tả trước đó, để tính ngày mong muốn.

Cần lưu ý rằng cách tiếp cận macro cũng sẽ chuyển đổi ngày tháng dạng văn bản. Ví dụ: nếu một ô chứa, dưới dạng văn bản, ngày “15/6/20”,

thì macro sẽ thay đổi nó thành 5/30/20. Sau khi ngày đã điều chỉnh được nhét trở lại ô, nó sẽ hiển thị dưới dạng số sê-ri ngày / giờ, không phải dưới dạng văn bản.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13304) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.