nguyenhoangtuananh9897
Thành viên mới
- Tham gia
- 6/4/22
- Bài viết
- 38
- Được thích
- 11
Khi merge cells thì sự kiện Worksheet_SelectionChange được kích hoạt nhưng tôi thấy không có sự kiện gì để bắt được động tác hủy merge cells. Có thể bấm vào 1 cell nào đó sau khi hủy merge thì được.Chào mọi người,
Như tiêu đề, mình có một file bị merge cell. Nhờ mọi người giúp mình cách nào (hoặc code) để bỏ merge cell và tự động điền dữ liệu vào các ô vừa được bỏ merge cell.
File đính kèm mình có ví dụ cụ thể.
Cám ơn mọi người rất nhiều.
Việc bấm vào menu Unmerge... như bài trong link tương đương với việc tôi gợi ý bấm 1 ô nào đó sau khi unmerge. Vấn đề ở đây là phải bấm vào cái gì đó (tự định nghĩa ngoài menu có sẵn của Excel) thì code mới chạy chứ nó không tự động điền.Xem công cụ Kutools như ở đây https://vi.extendoffice.com/product/kutools-for-excel/excel-unmerge-cells-and-fill.html
Bạn xem thử. . .bỏ merge cell và tự động điền dữ liệu vào các ô vừa được bỏ merge cell.
Private Sub WriteUnmerge(ByVal Rng As Range)
Dim Cel As Range, MerRng As Range
Application.ScreenUpdating = False
For Each Cel In Rng
If Cel.MergeCells Then
Set MerRng = Cel.MergeArea
MerRng.UnMerge
MerRng.Value = Cel.Value
End If
Next
Application.ScreenUpdating = True
End Sub
Sub Main()
Dim InputRng As Range
On Error Resume Next
Set InputRng = Application.InputBox("Chon vùng bo merge: ", "Chon vùng", Selection.Address, Type:=8)
On Error GoTo 0
If Not InputRng Is Nothing Then
WriteUnmerge InputRng
End If
End Sub
Kỹ năng vòi code từ GPE hiệu quả hơn.Bài này nên học cách làm thủ công đi cho có kỹ năng
Hôm qua mình vừa nghĩ ra cách thủ công. Trong cột vừa có các ô merge, vừa có các ô trống. Điền dữ liệu vào các ô trống trước "ZZZ" chẳng hạn. Lúc này cột chứa các ô có dữ liệu, chọn toàn bộ cột sau đó unmerge, cột sẽ xuất hiện các ô không có dữ liệu. Dùng hàm để điền giá trị vào các ô trống vừa xuất hiện. Sau đó lọc dùng Replace để thay "ZZZ" -> ""Bài này nên học cách làm thủ công đi cho có kỹ năng
Nếu thủ công thì làm các bước như thế này: (Không dư không thiếu nhé)Hôm qua mình vừa nghĩ ra cách thủ công. Trong cột vừa có các ô merge, vừa có các ô trống. Điền dữ liệu vào các ô trống trước "ZZZ" chẳng hạn. Lúc này cột chứa các ô có dữ liệu, chọn toàn bộ cột sau đó unmerge, cột sẽ xuất hiện các ô không có dữ liệu. Dùng hàm để điền giá trị vào các ô trống vừa xuất hiện. Sau đó lọc dùng Replace để thay "ZZZ" -> ""
Cám ơn các bạn đã hỗ trợ.
Cám ơn bạn. Code của bạn giúp xử lý các ô merge theo chiều dọc lẫn chiều ngangThử code này :
Mã:Private Sub WriteUnmerge(ByVal Rng As Range) Dim Cel As Range, MerRng As Range Application.ScreenUpdating = False For Each Cel In Rng If Cel.MergeCells Then Set MerRng = Cel.MergeArea MerRng.UnMerge MerRng.Value = Cel.Value End If Next Application.ScreenUpdating = True End Sub Sub Main() Dim InputRng As Range On Error Resume Next Set InputRng = Application.InputBox("Chon vùng bo merge: ", "Chon vùng", Selection.Address, Type:=8) On Error GoTo 0 If Not InputRng Is Nothing Then WriteUnmerge InputRng End If End Sub