Dùng VBA lấy dữ liệu từ cell merge

Liên hệ QC

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Em đang dùng công thức lookup("zzz",Vùng merge) để lấy thông tin từ vùng merge. Nhưng dạo này dữ liệu nhiều lấy xong em copy lấy giá trị để bỏ công thức thì file thường bị đóng đột ngột không lưu được. Có cách dùng bằng VBA thay thế không ạ (không dùng hàm đó trong VBA)?
 

File đính kèm

Lần chỉnh sửa cuối:
Em đang dùng công thức lookup("zzz",Vùng merge) để lấy thông tin từ vùng merge. Nhưng dạo này dữ liệu nhiều lấy xong em copy lấy giá trị để bỏ công thức thì file thường bị đóng đột ngột không lưu được. Có cách dùng bằng VBA thay thế không ạ (không dùng hàm đó trong VBA)?
Gửi bạn tham khảo
PHP:
Sub test()
    Dim Rng As Range
    
    For Each Rng In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
        If Len(Rng) Then
            Rng.Offset(, 1).Resize(Rng.MergeArea.Count) = Rng.Value
        End If
    Next
End Sub
 
Upvote 0
Theo mình, tốt nhất ta không nên áp dụng trộn ô trong các trang tính chứa dữ liệu; Chỉ trộn ô, làm đẹp ở những trang "báo cáo" cuối nguồn mà thôi.
 
Upvote 0
Theo mình, tốt nhất ta không nên áp dụng trộn ô trong các trang tính chứa dữ liệu; Chỉ trộn ô, làm đẹp ở những trang "báo cáo" cuối nguồn mà thôi.
File em xuất ra từ hệ thống nó mặc định là cột đó dữ liệu giống nhau là nó merge nên lúc nào cũng phải lặp lại bước lấy thông tin rồi xóa đi cột ấy anh ạ :((
Bài đã được tự động gộp:

Gửi bạn tham khảo
PHP:
Sub test()
    Dim Rng As Range
 
    For Each Rng In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
        If Len(Rng) Then
            Rng.Offset(, 1).Resize(Rng.MergeArea.Count) = Rng.Value
        End If
    Next
End Sub
Để mình thử luôn, cảm ơn bạn nhé. Chúc bạn cuối tuần vui vẻ bên người gia đình!
P/s: Đúng như mình mong muốn, tốc độ nhanh, tùy chỉnh cột nhận kết quả đơn giản và linh hoạt, cảm ơn bạn một lần nữa :)
 
Lần chỉnh sửa cuối:
Upvote 0
File em xuất ra từ hệ thống nó mặc định là cột đó dữ liệu giống nhau là nó merge nên lúc nào cũng phải lặp lại bước lấy thông tin rồi xóa đi cột ấy anh ạ
Góp ý cho bạn. Nếu File xuất ra từ hệ thống thì có hể làm vầy:
1/ Code chọn Folder > chọn File cần lấy vào 1 sheet nào đó.
2/ Bỏ merge và xóa dòng cột trống.
3/ Gộp dữ liệu vào sheet theo dõi rồi dựa vào dữ liệu sheet này làm cái gì tiếp theo thì nêu rõ nhu cầu.
 
Lần chỉnh sửa cuối:
Upvote 0
Cho mình hỏi là khi mình sửa ở cell merge thì mình phải nhấn Alt + F8 thì ô bên cạnh mới chạy.
Có cách nào để nó tự sửa không ?
 
Upvote 0
Góp ý cho bạn. Nếu File xuất ra từ hệ thống thì có hể làm vầy:
1/ Code chọn Folder > chọn File cần lấy vào 1 sheet nào đó.
2/ Bỏ merge và xóa dòng cột trống.
3/ Gộp dữ liệu vào sheet theo dõi rồi dựa vào dữ liệu sheet này làm cái gì tiếo theo thì nêu rõ nhu cầu.

Cảm ơn bạn, hiện tại mình thấy như vậy là đủ, và lại gợi ý 1 của bạn mình chưa làm bao giờ, có thời gian mình sẽ ngâm cứu thêm hoặc nếu có thể xin bạn vui lòng chỉ giúp code mẫu :)
Bài đã được tự động gộp:

Cho mình hỏi là khi mình sửa ở cell merge thì mình phải nhấn Alt + F8 thì ô bên cạnh mới chạy.
Có cách nào để nó tự sửa không ?
Bạn có thể tham khảo code mình tùy chỉnh lại của bạn vanthinh3101 như sau nhé:
PHP:
Private Sub Worksheet_change(ByVal target As Range)
    Dim Rng As Range
    If Not Intersect(target, Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing Then
        For Each Rng In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
            If Len(Rng) Then
                Rng.Offset(, 1).Resize(Rng.MergeArea.Count) = Rng.Value
            End If
        Next
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom