Code VBa xuất dữ liệu theo số dòng Quy định

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Văn Toàn 1996

Thành viên hoạt động
Tham gia
5/6/23
Bài viết
102
Được thích
22
Chào tất cả các bạn. Tôi cần 1 đoạn code xuất dữ liệu như sau. Vùng dữ liệu của tôi là A1:D100000 tôi muốn cứ cách 5 dòng xuất ra vùng cột G
cụ thể các dòng (1,6,11,16...). Xin chân thành cảm ơn

1689660655025.png
 

File đính kèm

  • BUOC NHAY.PNG
    BUOC NHAY.PNG
    178.1 KB · Đọc: 51
Upvote 0
Cái này thì cần gì VBA bạn.
G1 = 1
G2 = G1 + 5
Tương tự kéo công thức cột G xuống
Mấy giá trị bên cạnh thì bạn dùng hàm Vlookup hoặc Index + Match sang là được.
Bài này dễ nên có nhiều cách, tuy nhiên sử dụng filter để copy qua mới là thú vị :D
 
Upvote 0
Bài này hồi xưa mình mới học Excel hay dùng cách này
F1 cho nó = 1
F2 =F1+5 rồi kéo từ F2 xuống dưới

G1="tên của mình" & "G" & F1
Ví dụ

="Văn Toàn 1996" & "G" & F1

Sau đó kéo công thức từ G1 xuông dưới

Cuối cùng
Copy cột G rồi paste lại cột G kiểu paste 123 cho nó thành giá trị
Chọn nguyên cột G, bấm CTRL +H
Chỗ Find what: điền vào: Văn Toàn 1996
Chỗ Replace with: điền vào: =
 
Upvote 0
Bạn thử xem sao đã, kiếm thú vui hihi
Nếu filter theo màu vàng rồi copy thì chắc em làm được, còn viết công thức với filter thì em không có tí ý tưởng gì anh ạ :D
Với bài này thì em sử dụng hàm Xlookup là tối ưu nhất trong khả năng.
 
Upvote 0
Bài này dễ nên có nhiều cách, tuy nhiên sử dụng filter để copy qua mới là thú vị :D
Nhiều cái mốc xì gì bạn.
Thớt đã biết mánh GPE từ đầu rồi: Muốn vòi code cho dễ thì cứ việc thêm chi tiết dữ liệu khủng hằng trăm ngàn dòng.
 
Upvote 0
Nếu filter theo màu vàng rồi copy thì chắc em làm được, còn viết công thức với filter thì em không có tí ý tưởng gì anh ạ :D
Với bài này thì em sử dụng hàm Xlookup là tối ưu nhất trong khả năng.
Mình có nói công thức đâu, bước 1 thì filter cột stt bằng "*1" -> OK. Bước 2 thì filter "*6" tick vào cái ô khoanh đỏ là xong :D
1689668059450.png

Nhiều cái mốc xì gì bạn.
Thớt đã biết mánh GPE từ đầu rồi: Muốn vòi code cho dễ thì cứ việc thêm chi tiết dữ liệu khủng hằng trăm ngàn dòng.
Nhiều khi thớt chưa biết mà do bác mách nước nên các thành viên khác mới biết đây --=0
 
Upvote 0
Mình có nói công thức đâu, bước 1 thì filter cột stt bằng "*1" -> OK. Bước 2 thì filter "*6" tick vào cái ô khoanh đỏ là xong :D
View attachment 292870


Nhiều khi thớt chưa biết mà do bác mách nước nên các thành viên khác mới biết đây --=0
Cái vụ Add current selection filter này đúng là giờ em mới biết luôn anh, đúng là lâu nay filter phà phà mà tối cổ quá. :D
 
Upvote 0
Bài này bạn cũng có thể dùng công thức ở cột G1
=INDEX(A:A, (ROW()-1)*5+1)
Bài đã được tự động gộp:

Ngẫm lại mình cũng hay xin code, trợ giúp đồng môn xin code.
Cách 1
Mã:
Sub cong_thuc()
    Dim i As Integer
    Dim j As Integer
    
    j = 1
    
    For i = 1 To 1000 Step 5
        Sheets("Sheet1").Range("G" & j).FormulaR1C1 = "=R" & i & "C1"
        j = j + 1
    Next i
End Sub

Cách 2
Mã:
Sub viet_binh_thuong()
Dim i As Integer
Dim j As Integer

j = 1

For i = 1 To 1000 Step 5

Sheets("Sheet1").Range("G" & j).Formula = "=A" & i
j = j + 1

Next i
End Sub

Cách 3:
Mã:
Sub viet_bang_mang()
Dim dataArray() As Variant
Dim i As Integer
Dim j As Integer


dataArray = Sheets("Sheet1").Range("A1:A1000").Value

j = 1

For i = 1 To 1000 Step 5
Sheets("Sheet1").Range("G" & j).Value = dataArray(i, 1)
j = j + 1
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này bạn cũng có thể dùng công thức ở cột G1
=INDEX(A:A, (ROW()-1)*5+1)
Bài đã được tự động gộp:

Ngẫm lại mình cũng hay xin code, trợ giúp đồng môn xin code.
Cách 1
Mã:
Sub cong_thuc()
    Dim i As Integer
    Dim j As Integer
   
    j = 1
   
    For i = 1 To 1000 Step 5
        Sheets("Sheet1").Range("G" & j).FormulaR1C1 = "=R" & i & "C1"
        j = j + 1
    Next i
End Sub

Cách 2
Mã:
Sub viet_binh_thuong()
Dim i As Integer
Dim j As Integer

j = 1

For i = 1 To 1000 Step 5

Sheets("Sheet1").Range("G" & j).Formula = "=A" & i
j = j + 1

Next i
End Sub

Cách 3:
Mã:
Sub viet_bang_mang()
Dim dataArray() As Variant
Dim i As Integer
Dim j As Integer


dataArray = Sheets("Sheet1").Range("A1:A1000").Value

j = 1

For i = 1 To 1000 Step 5
Sheets("Sheet1").Range("G" & j).Value = dataArray(i, 1)
j = j + 1
Next i
End Sub

Cái này thì cần gì VBA bạn.
G1 = 1
G2 = G1 + 5
Tương tự kéo công thức cột G xuống
Mấy giá trị bên cạnh thì bạn dùng hàm Vlookup hoặc Index + Match sang là được.
Lưu ý cột A dữ liệu tượng trưng và có trùng mã nên ko thế dùng Vlookup
 
Upvote 0
Ngẫm lại mình cũng hay xin code, trợ giúp đồng môn xin code.
...
Code căn bản không có gì xấu. Không tự viết được thì xin cũng chả sao.

Nhưng riêng ở GPE thì chĩnh các thành viên mê viết code đã vô tình tạo thói xấu cho người khác. Thay vì chịu khó tìm hiểu thêm để tự làm (thủ công) thì xin code cho bớt thao tác. Thành thói quen rồi thì bắt đầu tránh thủ công càng nhiều càng tốt, bởi vì mọt lần làm sẽ lâu gấp 5-10 lần người khác, do không thuần thục.
Lại cũng có người hay nảy "sáng kiến" rồi ngờ người ta thực thi giùm. Những người này đáng lẽ phải suy nghĩ cho chính chắn: "sáng kiến ấy chỉ làm bớt thao tác thủ công, chứ chả nâng cao trình độ Excel của mình chút tẹo nào"
 
Upvote 0
.......................................
 
Lần chỉnh sửa cuối:
Upvote 0
Bài của bạn là vùng dữ liệu bạn dùng code này thử
Mã:
Sub vung_du_lieu_buoc_nhay_nam()
    Dim dataArray() As Variant
    Dim i As Integer
    Dim j As Integer
    
    
    dataArray = Sheets("Sheet1").Range("A1:D1000").Value
    
    j = 1
    
    For i = 1 To 1000 Step 5
        
      
        Sheets("Sheet1").Range("G" & j).Value = dataArray(i, 1)
        
      
        Sheets("Sheet1").Range("H" & j).Value = dataArray(i, 2)
        
      
        Sheets("Sheet1").Range("I" & j).Value = dataArray(i, 3)
        
        Sheets("Sheet1").Range("J" & j).Value = dataArray(i, 4)
        
        j = j + 1
        
    Next i
End Sub
 
Upvote 0
...
Nhiều khi thớt chưa biết mà do bác mách nước nên các thành viên khác mới biết đây --=0
Nếu không dùng VBA thì mọi thứ khác đều có thể Ctrl+Z để chữa tính nhầm.
Cứ việc thử mọi cách chứ có gì đâu mà sợ, phải chờ người khác khám phá giùm mình.
Ba cái thứ này tôi có chồng giấy nháp bên cạnh, thử mọi kiểu, ghi vào giấy. Sau đó độc lại thì tổng kết được hầu hết nẻo nách sử dụng của công cụ ấy.
Chủ trương học của tôi là ghi lại rồi tổng kết. Các bạn không chịu ghi cho nên thấy nó nhiều quá rồi ngại không nhớ hết.
 
Upvote 0
Chào tất cả các bạn. Tôi cần 1 đoạn code xuất dữ liệu như sau. Vùng dữ liệu của tôi là A1:D100000 tôi muốn cứ cách 5 dòng xuất ra vùng cột G
cụ thể các dòng (1,6,11,16...). Xin chân thành cảm ơn

View attachment 292865
Bài này mình nghĩ không cần dùng đến VBA đâu.
Bạn thử cách này xem sao:
- E1 = 1
- E2 = MOD(ROW(E1),5)+1. Kéo công thức cho đến hết
- Filter cột E = 1. Copy sang vùng bạn cần
 
Upvote 0
Bài của bạn là vùng dữ liệu bạn dùng code này thử
Mã:
Sub vung_du_lieu_buoc_nhay_nam()
    Dim dataArray() As Variant
    Dim i As Integer
    Dim j As Integer
   
   
    dataArray = Sheets("Sheet1").Range("A1:D1000").Value
   
    j = 1
   
    For i = 1 To 1000 Step 5
       
     
        Sheets("Sheet1").Range("G" & j).Value = dataArray(i, 1)
       
     
        Sheets("Sheet1").Range("H" & j).Value = dataArray(i, 2)
       
     
        Sheets("Sheet1").Range("I" & j).Value = dataArray(i, 3)
       
        Sheets("Sheet1").Range("J" & j).Value = dataArray(i, 4)
       
        j = j + 1
       
    Next i
End Sub
cảm ơn bạn. Đã test dữ liệu 800.000 dòng uống xong ly cà phê nó còn chưa chạy xong ( đã đổi biến Integer thành và Long và chưa thêm Application.ScreenUpdating = False )
Bài đã được tự động gộp:

Bài này mình nghĩ không cần dùng đến VBA đâu.
Bạn thử cách này xem sao:
- E1 = 1
- E2 = MOD(ROW(E1),5)+1. Kéo công thức cho đến hết
- Filter cột E = 1. Copy sang vùng bạn cần
rồi Dữ liệu 1 triệu dòng kéo như bạn xong Banh máy luôn, treo luôn kaka
Bài đã được tự động gộp:

Bài này bạn cũng có thể dùng công thức ở cột G1
=INDEX(A:A, (ROW()-1)*5+1)
Bài đã được tự động gộp:

Ngẫm lại mình cũng hay xin code, trợ giúp đồng môn xin code.
Cách 1
Mã:
Sub cong_thuc()
    Dim i As Integer
    Dim j As Integer
   
    j = 1
   
    For i = 1 To 1000 Step 5
        Sheets("Sheet1").Range("G" & j).FormulaR1C1 = "=R" & i & "C1"
        j = j + 1
    Next i
End Sub

Cách 2
Mã:
Sub viet_binh_thuong()
Dim i As Integer
Dim j As Integer

j = 1

For i = 1 To 1000 Step 5

Sheets("Sheet1").Range("G" & j).Formula = "=A" & i
j = j + 1

Next i
End Sub

Cách 3:
Mã:
Sub viet_bang_mang()
Dim dataArray() As Variant
Dim i As Integer
Dim j As Integer


dataArray = Sheets("Sheet1").Range("A1:A1000").Value

j = 1

For i = 1 To 1000 Step 5
Sheets("Sheet1").Range("G" & j).Value = dataArray(i, 1)
j = j + 1
Next i
End Sub
Tất cả các cách bạn giúp thực sự không có tính tốc độ khi dữ liệu lớn .dù sao cảm ơn bạn
 
Upvote 0
rồi Dữ liệu 1 triệu dòng kéo như bạn xong Banh máy luôn, treo luôn kaka
Chém gió, mấy công thức hạt bụi như vậy nháy mắt cái là xong, 1 triệu dòng mà to chắc.
Bài toán cỏn con suy nghĩ cho lòng vòng rồi còn bày đặt tốc độ này nọ.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom