- Tham gia
- 5/6/23
- Bài viết
- 106
- Được thích
- 19
Sub zzz2()
Dim OVung As Range, VVung As Range
Dim ArrVung, ArrKQ
Dim i&, j&, k&, l&, m&, DongDau&, DongCuoi&
Set OVung = Application.InputBox("Chon vung:", , , , , , , 8)
' Set OVung = [A6]
Set VVung = OVung.CurrentRegion
DongCuoi = VVung.End(xlDown).Row
DongDau = Cells(DongCuoi, "A").End(xlUp).Row
ArrVung = VVung.Formula
ReDim ArrKQ(6 * (Int(UBound(ArrVung, 1) / 10)) + Application.Min(UBound(ArrVung, 1) Mod 10, 6), UBound(ArrVung, 2))
For i = LBound(ArrVung, 1) To Int(UBound(ArrVung, 1) / 10)
For k = 1 To 6 Step 1
l = 10 * (i - 1) + k
m = 6 * (i - 1) + k
For j = LBound(ArrVung, 2) To UBound(ArrVung, 2)
ArrKQ(m, j) = ArrVung(l, j)
Next
Next
Next
VVung.Clear
Cells(DongDau, 1).Resize(UBound(ArrKQ, 1), UBound(ArrKQ, 2)) = ArrKQ
End Sub
Ông bạn siêu nhẩy, diễn đàn max 1tr, cứ cho nhớ được 1% là cũng bá đạo rồi. Chia sẻ cách nhớ nhở???Bằng cách có khả năng ghi nhớ quá khứ (các bài của thớt), có khả năng tìm về quá khứ và phán đoán các vấn đề liên quan.
Hàm là code đã có sẵn. Dùng hàm đại khái như dùng code đã có sẵn....
Code lụi em thấy giống chơi dao quá.
Vậy: nếu em muốn dùng VBA thì bảng phải cấm dùng công thức phải không các bác?
Cứ nhiều mảng cho dễ nhìn bác, với lại đây là 2 chiều, redim chỉ được phần đuôi.Kết luận: chỉ cần một mảng, đầu ra ghi chồng lên đầu vào.
Bạn bị tật chủ quan, không chịu tìm hiểu người ta nói gì.Cứ nhiều mảng cho dễ nhìn bác, với lại đây là 2 chiều, redim chỉ được phần đuôi.
Cần lắm 1 code mẫu để hiểu mảng chồng mảng bác ạ?
Tại hắn không hiểu dùng biến k để làm gì. Mà có khi chẳng biết trước bao nhiêu dòng/ cột thì redim bao nhiêu cho vừa.Bạn bị tật chủ quan, không chịu tìm hiểu người ta nói gì.
Bài toán đạt 3 điểm như đã dẫn thì redim làm cái gì?
lúc chưa sửa thì khó hiểu, sau khi sửa em đã vắt trán suy nghĩ và hiểu sơ.
Toàn các kiểu càng học càng dốt, và càng nghe lão ct mắng.Hehe, còn cách học râu ông cằm bà hay lắm bác ạ.
Đen tô đậm: Có vài lần tôi phê bình cách đặt biến đếm dòng là k. Nhưng bà con cứ theo người khởi xướng ban đầu.Tại hắn không hiểu dùng biến k để làm gì. Mà có khi chẳng biết trước bao nhiêu dòng/ cột thì redim bao nhiêu cho vừa.
Lại còn nhầm lẫn redim với redim preserve nữa chứ. Chả hiểu cách học ra sao nữa.
...
Hehe, mỗi người có 1 cách mà. Bác nào code giúp cho mọi người được thì đó là giúp người, còn mình thì thử giúp người để giúp mình.
Bạn ơi.Code không khó lắm, quan trọng là đề bài phải dễ.
Mã:Option Explicit Sub zzz() Dim i& Dim OHienTai As Range For i = 1 To 1000 Step 1 Set OHienTai = Range("A" & i) If [OHienTai] = 7 Or [OHienTai] = 8 Or [OHienTai] = 9 Or [OHienTai] = 10 Then [OHienTai].EntireRow.Delete i = i - 1 End If Next End Sub
Đây là kỹ thuật cao bác ạ, lấy mỗi nơi 1 tí, rồi sửa, cứ vài lần lỗi là sẽ được. Cái hay là không cần bẫy lỗi. Cứ chạy cứ ngon, gặp lỗi lại mò tiếp.Mệnh đề mình cho là hay nhất trong các bài đăng trong chủ đề này!
Chúc bạn có ngày làm việc hôm nay hiệu quả!
BS: Ghép code là sao ta, chưa hiểu!
Hãy đi theo lối riêng của mình. Ai cũng xóa từ dưới lên thì lấy ai xóa từ trên xuống.Bạn ơi.
Xóa từ dưới lên trên chớ hỳ
Trên diễn đàn cũng đã có chỉ ra vài cách 'xóa' từ trên, như. . . . Hãy đi theo lối riêng của mình. Ai cũng xóa từ dưới lên thì lấy ai xóa từ trên xuống.
Con cua thì suốt đời bò ngang.Hãy đi theo lối riêng của mình. Ai cũng xóa từ dưới lên thì lấy ai xóa từ trên xuống.
Code dưới cũng là loại cấy ghép.Đây là kỹ thuật cao bác ạ, lấy mỗi nơi 1 tí, rồi sửa, cứ vài lần lỗi là sẽ được. Cái hay là không cần bẫy lỗi. Cứ chạy cứ ngon, gặp lỗi lại mò tiếp.
Hãy đi theo lối riêng của mình. Ai cũng xóa từ dưới lên thì lấy ai xóa từ trên xuống.
Option Explicit
Public dN As Boolean
Sub xxx()
Dim sTT() As Integer
Dim rws
Dim i, k
If dN = True Then Exit Sub
dN = True
With Sheet1
If .AutoFilterMode Then .AutoFilterMode = False
rws = .Range("A" & Rows.Count).End(xlUp).Row
End With
ReDim sTT(1 To rws, 1 To 1)
For i = 7 To rws Step 10
For k = i To i + 3
sTT(k, 1) = 1
Next k
Next i
With Sheet1
.Range("D1").Resize(rws, 1) = sTT
.Range("D1").CurrentRegion.AutoFilter 1, 1
.Range("D2", .Range("D2").End(xlDown)).EntireRow.SpecialCells(xlCellTypeVisible).Delete
.AutoFilterMode = False
.Range("D1").CurrentRegion.Clear
End With
End Sub
Bác vẫn còn đam mê món này à? Hôm qua em ghép code chưa chuẩn nên vẫn lỗi.Trên diễn đàn cũng đã có chỉ ra vài cách 'xóa' từ trên, như
1./ Những dòng nào không cần xóa thì cho vô mảng
2./ Những dòng nào cần xóa thì cho vô Rng - tham biến Range (khai báo từ trước)
3./ . . . . (?)
Nếu dùng filter thì oánh từ trung lộ ra biên rồi.Làm từ dưới lên hay trên xuống cũng không rõ nữa