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
Không có file, chỉ gửi hình. Mình xin gửi code hìnhChà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à A1100000 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 dễ nên có nhiều cách, tuy nhiên sử dụng filter để copy qua mới là thú vị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.
Anh có thể chỉ giúp để em và mọi người học hỏi được khôngBà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ị
Bạn thử xem sao đã, kiếm thú vui hihiAnh có thể chỉ giúp để em và mọi người học hỏi được không
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 ạBạn thử xem sao đã, kiếm thú vui hihi
Nhiều cái mốc xì gì bạn.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ị
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à xongNế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 ạ
Với bài này thì em sử dụng hàm Xlookup là tối ưu nhất trong khả nă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 đâyNhiề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.
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á.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
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
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
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
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
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ưu ý cột A dữ liệu tượng trưng và có trùng mã nên ko thế dùng VlookupCá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.
Code căn bản không có gì xấu. Không tự viết được thì xin cũng chả sao.Ngẫm lại mình cũng hay xin code, trợ giúp đồng môn xin code.
...
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
Nếu không dùng VBA thì mọi thứ khác đều có thể Ctrl+Z để chữa tính nhầm....
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
Bài này mình nghĩ không cần dùng đến VBA đâu.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à A1100000 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
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ủ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
rồi Dữ liệu 1 triệu dòng kéo như bạn xong Banh máy luôn, treo luôn kakaBà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
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ạnBà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
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.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