Đánh số thự tự tự động những ô đã được merge.
Ở cột A em có các ô bị Merge(vùng màu xanh). Em thử viết code để đánh số thự tự 1 cách tự đông liên tục(Xem File đính kèm) nhưng kết quả không chính xác(Các số TT không liên tục). Em xin hỏi các anh chị 3 vấn đề như sau:
+ Code em bị sai ở đâu? Cách khắc phục?
+ Nếu các ô đã bị Merge như vậy thì có thể dùng code để giải quyết không? Nếu có cho em xin code tham khảo?
+ Nếu không thể dùng code thi có cách giải quyết tự động nào khác không(Công thức chẳng hạn).
Em xin cảm ơn!Option Explicit Public Sub DanhSTT() Dim i As Long, cll As Range For Each cll In Selection If cll = "" Then i = i + 1 cll = i End if Next cll End Sub
Câu 1: Tôi lấy ví dụ: Lúc chưa chạy code thì các ô A3, A4, A5 đều trống (Cll="") nên khi chọn vùng A1:A20 và chạy code, chúng sẽ được gán lần lượt các giá trị 3, 4, 5, và tất nhiên là câu lệnh i = i + 1 đều được thực thi (tuy nhiên chỉ có ô đầu của vùng đã merge là A3 được giữ giá trị lại). Do đó khi Cll là ô A6 thì i đã có giá trị là 6, chính vì vậy mà sau khi chạy code, ô A6 có giá trị là 6.
Câu 2: Một code để tham khảo như sau (có thể còn luộm thuộm và chưa hay nhưng giải quyết được vấn đề):
Sub DanhSTT1()
Dim i As Long, Cll As Range
Set Cll = Selection(1, 1)
Do While Cll.Row < Selection.Row + Selection.Rows.Count
i = i + 1
Cll = i
Set Cll = Cll.Offset(1)
Loop
End Sub
Câu 3: Tôi bó tay!
www.giaiphapexcel.com/diendan/threads/%C4%90%C3%A1nh-s%E1%BB%91-th%E1%BB%B1-t%E1%BB%B1-t%E1%BB%B1-%C4%91%E1%BB%99ng-nh%E1%BB%AFng-%C3%B4-%C4%91%C3%A3-%C4%91%C6%B0%E1%BB%A3c-merge.93552/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
A1 gõ 1.
Quét chọn A2:An và gõ =Max(a$1:a1)+1 và nhấn Ctrl+Enter.
Giải pháp công thức thì chỉ còn cách đó thôi, nếu A1:A2 bị Merge thì A1 gõ 1, chọn A3:An và gõ =MAX(A$1:A2)+1, Ctrl+Enter. Cứ vậy mà quét chọn vùng và sửa công thức nếu ô đầu Merge nhiều ô.
Bài này dùng code đơn giản mà. Kể cả Merge cell tại A1 cũng chỉ cần for next trong cái Selection là được. Chỉ cần 3 dòng code. Thử đi. Bảo đảm ngắn hơn code bài số 2
Giống code của bài số 9, nhưng nếu thêm vài cái dấu ":" thì chỉ còn có 1 dòng code à nha.
Sub abc()
Dim cell As Range
For Each cell In Selection
cell = Application.Max(Selection) + 1
Next
End Sub