Tự động điền dữ liệu vào các ô vừa bỏ merge cell

Liên hệ QC

nguyenhoangtuananh9897

Thành viên mới
Tham gia
6/4/22
Bài viết
38
Được thích
11
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.
 

File đính kèm

  • MERGE.xlsx
    24.2 KB · Đọc: 15
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.
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.
 
Upvote 0
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.
 
Lần chỉnh sửa cuối:
Upvote 0
Thử 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
 
Upvote 0
Bài này nên học cách làm thủ công đi cho có kỹ năng
Kỹ năng vòi code từ GPE hiệu quả hơn. :p

Nói chơi vậy chứ dân GPE chìu khách bỏ bố. Chả cần học kỹ năng gì cả. Muốn vòi cứ việc vòi. Gần như bảo đảm 100% sẽ có giải đáp.

Thêm: dân GPE có tật ngứa code. Càng gãi càng ngứa. Cứ "xin giúp em chút nữa" là gãi sướng mê tơi.
 
Upvote 0
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" -> ""
Cám ơn các bạn đã hỗ trợ.
 
Upvote 0
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ợ.
Nếu thủ công thì làm các bước như thế này: (Không dư không thiếu nhé)
Chọn B2:B21 → F5 → Special → Constants → OK → Unmerge → F5 → Special → Blank → OK → Gõ "=B2" (không nháy) → Ctrl Enter
 
Upvote 0
Thử 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
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 ngang :)
 
Upvote 0
Web KT

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

Back
Top Bottom