Xin code copy từ sheet bị ẩn (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

chau1505

Thành viên mới
Tham gia
24/10/18
Bài viết
9
Được thích
0
Như tiêu đề, nhờ anh chị viết giúp em đoạn code copy từ sheet ẩn với ạ. e có dùng đoạn này để copy
Mã:
Sub a()
Sheet1.Range("A2:A12").Copy Sheet2.Range("A2:A12")
End Sub
Mà e dùng trên vùng dữ liệu lớn và cop nhiều lần thì nó quay lâu quá.
Mong anh chị giúp đỡ. em cảm ơn nhiều!
 

File đính kèm

Như tiêu đề, nhờ anh chị viết giúp em đoạn code copy từ sheet ẩn với ạ. e có dùng đoạn này để copy
Mã:
Sub a()
Sheet1.Range("A2:A12").Copy Sheet2.Range("A2:A12")
End Sub
Mà e dùng trên vùng dữ liệu lớn và cop nhiều lần thì nó quay lâu quá.
Mong anh chị giúp đỡ. em cảm ơn nhiều!
Thử:
PHP:
Sub abc()
    Dim b, a, i, j
    With Sheets("Sheet1")
        a = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
    End With
    ReDim b(1 To (UBound(a)), 1 To 1)
    j = 1
    For i = 1 To UBound(a)
            b(j, 1) = a(i, 1)
            j = j + 1
    Next
    Sheets("Sheet2").Range("A2").Resize(UBound(b)) = b
End Sub
 
Upvote 0
Nhìn thấy rõ ràng là trong mỗi vòng lặp luôn có j = i. Vậy sao không rút gọn thành?
Mã:
Sub abc()
    Dim b, a, i, j
    With Sheets("Sheet1")
        a = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
    End With
    ReDim b(1 To (UBound(a)), 1 To 1)
  
    For i = 1 To UBound(a)
            b(i, 1) = a(i, 1)
    Next
    Sheets("Sheet2").Range("A2").Resize(UBound(b)) = b
End Sub
Ngoài ra sau một hồi chạy tốn điện nước thì mảng b giống hệt mảng a. Vậy thì tại sao không đập luôn mảng a xuống sheet mà lại tạo mảng b?

Thêm nữa nếu trong cột A chỉ có A2 có giá trị thì code bị lỗi. Nếu chỉ A1 có giá trị thì kết quả không như mong đợi.
 
Lần chỉnh sửa cuối:
Upvote 0
Thử:
PHP:
Sub abc()
    Dim b, a, i, j
    With Sheets("Sheet1")
        a = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
    End With
    ReDim b(1 To (UBound(a)), 1 To 1)
    j = 1
    For i = 1 To UBound(a)
            b(j, 1) = a(i, 1)
            j = j + 1
    Next
    Sheets("Sheet2").Range("A2").Resize(UBound(b)) = b
End Sub
dạ em cảm ơn. Nhưng nếu e chỉ muốn copy vùng nào đó thôi thì chỉnh code trên lại như thế nào ạ. Ví dụ vùng A2:B10 thôi chẳng hạn. Tại em mới mò mẫm nên chưa hiểu lắm. Em cảm ơn nhiều!
 
Upvote 0
anh có thể giúp e với được không ạ. Em cảm ơn anh nhiều. e copy nguyên 1 mảng mà nó quay lâu quá
Lâu quá là sao? A2:B10? Nếu không thì là vùng nào?

Cho tập tin lên đây. Sửa tất cả các cột bí mật thành vd. Nguyễn Văn A chẳng hạn: vd. chọn cột D -> Delete -> D1 = Nguyễn Văn A -> copy xuống dưới. Tập tin lưu với tên kjác và đính kèm, bắt buộc kèm theo cả code mà bạn cho là lâu.quá để người khác biết bạn đã thử thế nào.
 
Upvote 0
anh có thể giúp e với được không ạ. Em cảm ơn anh nhiều. e copy nguyên 1 mảng mà nó quay lâu quá
bạn copy kia có khả năng trong mảng có công thức nó mới lâu chứ nếu là dữ liệu thì nhanh mà.mà copy thì mình nghĩ chắc cứ copy cả mảng rồi past theo kiểu value thôi chắc cũng nhanh :D
 
Upvote 0
Dạ, anh cho em gửi file. nhờ các anh chị xem giúp em với. em chạy mà nó quay mòng mòng nhìn bất não nề :(
 
Upvote 0
Dạ, anh cho em gửi file. nhờ các anh chị xem giúp em với. em chạy mà nó quay mòng mòng nhìn bất não nề :(
Tôi hiểu thế này. Sau khi bạn gửi câu hỏi trên GPE thì được tư vấn bằng một đoạn code. Bạn bắt chước code đó và thử nghiệm. Sau khi chạy code đó bạn vẫn kêu: e copy nguyên 1 mảng mà nó quay lâu quá. Vậy bài trước tôi đề nghị đính kèm tập tin với code mà bạn bắt chước. Code đó làm gì có trong tập tin bạn đính kèm.

Tôi mở tập tin thôi cũng thấy lâu nhưng tôi không tò mò vì sao
 
Upvote 0
Tôi hiểu thế này. Sau khi bạn gửi câu hỏi trên GPE thì được tư vấn bằng một đoạn code. Bạn bắt chước code đó và thử nghiệm. Sau khi chạy code đó bạn vẫn kêu: e copy nguyên 1 mảng mà nó quay lâu quá. Vậy bài trước tôi đề nghị đính kèm tập tin với code mà bạn bắt chước. Code đó làm gì có trong tập tin bạn đính kèm.

Tôi mở tập tin thôi cũng thấy lâu nhưng tôi không tò mò vì sao
ui chết chết, em gửi nhầm file :(((((
 

File đính kèm

Upvote 0
ui chết chết, em gửi nhầm file :(((((
Bạn thử thêm dòng đầu
Mã:
Application.Calculation = xlCalculationManual
thêm dòng cuối
Mã:
Application.Calculation = xlCalculationAutomatic

Bạn có công thức ở đâu đó? Bạn nói ra thì biết, tôi không bỏ công tò mò.

Nhưng sao lại phải lặp lại
Mã:
Sheet1.Range("P15:V405").Value = Sheet8.Range("I10:O400").Value
...
Sheet1.Range("P15:V405").Value = Sheet8.Range("R10:X400").Value
...
Cứ thế gần chục lần?
 
Upvote 0
Bạn thử thêm dòng đầu
Mã:
Application.Calculation = xlCalculationManual
thêm dòng cuối
Mã:
Application.Calculation = xlCalculationAutomatic

Bạn có công thức ở đâu đó? Bạn nói ra thì biết, tôi không bỏ công tò mò.

Nhưng sao lại phải lặp lại
Mã:
Sheet1.Range("P15:V405").Value = Sheet8.Range("I10:O400").Value
...
Sheet1.Range("P15:V405").Value = Sheet8.Range("R10:X400").Value
...
Cứ thế gần chục lần?
Để tăng thời gian mà bác
 
Upvote 0
Bạn thử thêm dòng đầu
Mã:
Application.Calculation = xlCalculationManual
thêm dòng cuối
Mã:
Application.Calculation = xlCalculationAutomatic

Bạn có công thức ở đâu đó? Bạn nói ra thì biết, tôi không bỏ công tò mò.

Nhưng sao lại phải lặp lại
Mã:
Sheet1.Range("P15:V405").Value = Sheet8.Range("I10:O400").Value
...
Sheet1.Range("P15:V405").Value = Sheet8.Range("R10:X400").Value
...
Cứ thế gần chục lần?
Ah ah, để em làm cái vòng lặp chổ này
 
Upvote 0
Web KT

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

Back
Top Bottom