Code xoá hàng theo điều kiện? (2 người xem)

  • Thread starter Thread starter 790312
  • Ngày gửi Ngày gửi
Liên hệ QC

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

790312

Thành viên hoạt động
Tham gia
7/4/08
Bài viết
181
Được thích
8
Nhờ các bác viết giùm đoạn code,nội dung mình ghi trong file đính kèm.Thanks.
 

File đính kèm

Không hiểu điều kiện xóa của bạn lắm????
 
Upvote 0
Không hiểu điều kiện xóa của bạn lắm????
Những hàng có giá trị cột A và B giống nhau sẽ khoanh vùng xoá hàng mà giá trị bên cột D không nằm trong khoảng ĐẦU,GIỮA,CUỐI.Thí dụ bên cột D giá trị các hàng là:
0
0
0
0,697
0,697
0,697
1,825
1,825
1,825
3,65
3,65
3,65
Thì nó sẽ xoá các hàng có giá trị là 0,697 vì khoảng đầu là 0,khoảng giữa là 1,825,khoảng cuối là 3,65.Còn các hàng có đầu,giữa,cuối rồi thì không xoá.Như:
0
0
1,725
1,725
3,45
3,45
Xoá hàng phụ thuộc và cột A và B như đã nói ở trên.
Thanks.
 
Lần chỉnh sửa cuối:
Upvote 0
Như thế này đúng không?
paperclip.png
Tập tin đính kèm
Đúng rồi bác ah,nhưng từ hàng 92 nó có ĐẦU,GIỮA,CUỐI thì giữ nguyên bác ah.Code của bác là nó lại xoá mất khúc GIỮA.Nhờ bác xem lại giúp.Thanks.
 
Upvote 0
Đúng rồi bác ah,nhưng từ hàng 92 nó có ĐẦU,GIỮA,CUỐI thì giữ nguyên bác ah.Code của bác là nó lại xoá mất khúc GIỮA.Nhờ bác xem lại giúp.Thanks.
Bạn test code này thử xem sao nhé
Mã:
Sub DeleteRowsPA2()Dim Arr(), ArrKQ(), Tmp1, Tmp2
Dim i As Long, j As Long
'On Error Resume Next
ReDim ArrKQ(1 To UBound(Arr), 1 To 4)
Application.ScreenUpdating = False
Tmp1 = 0
Tmp2 = 0
For i = Sheet1.[a65500].End(3).Row + 1 To 2 Step -1
  If Sheet1.Range("D" & i).Value = 0 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp1 = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value = Tmp1 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp2 = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value > 0 And Sheet1.Range("D" & i).Value <> Tmp1 And Sheet1.Range("D" & i).Value <> Tmp2 Then
     Sheet1.Range("D" & i).EntireRow.Delete
  End If
Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Bạn test code này thử xem sao nhé
Mã:
Sub DeleteRowsPA2()Dim Arr(), ArrKQ(), Tmp1, Tmp2
Dim i As Long, j As Long
'On Error Resume Next
ReDim ArrKQ(1 To UBound(Arr), 1 To 4)
Application.ScreenUpdating = False
Tmp1 = 0
Tmp2 = 0
For i = Sheet1.[a65500].End(3).Row + 1 To 2 Step -1
  If Sheet1.Range("D" & i).Value = 0 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp1 = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value = Tmp1 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp2 = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value > 0 And Sheet1.Range("D" & i).Value <> Tmp1 And Sheet1.Range("D" & i).Value <> Tmp2 Then
     Sheet1.Range("D" & i).EntireRow.Delete
  End If
Next
Application.ScreenUpdating = True
End Sub
Bác test lại code giùm e,sao nó không chạy được?
 

File đính kèm

Upvote 0
Đây bác ah.KQ là cột bôi đỏ.
Bạn xem lại mô tả của bạn ở bài 1, chắc chắn có sự nhầm lẫn.
Giữa của bạn là nói về vị trí hay số lượng? Mình xem 1 vài lần nhưng vẫn không hiểu rõ vì yêu cầu bài 1 và kết quả của bai 11 trái ngược nhau
 
Upvote 0
Dữ liệu tổng thể của bạn
Nhóm số 0
Nhóm số >0 thứ 1
Nhóm số >0 thứ 2
Nhóm số >0 thứ 3
File đầu tiên bạn bảo xóa Nhóm số >0 thứ 1, bây giờ kết quả bạn lại cần xóa Nhóm số >0 thứ 3 là sao???
Dạ 2 bác hiểu lầm ý e rồi.Ngay từ đầu e đã nói đến ĐẦU,GIỮA,CUỐI.
Bài 1 có:
0
0
0.697
0.697
1.825
1.825
3.65
3.65
Cái e cần là xóa 0.697 vì ĐẦU là 0,GIỮA là 1.825,CUỐI là 3.65.
1.825 là số nằm giữa 0 và 3.65.Bài 11 phải xóa hàng có giá trị 3.23 và 2.685.Ý e là vậy 2 bác ah.Mong 2 bác giúp e.Cảm ơn 2 bác nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ 2 bác hiểu lầm ý e rồi.Ngay từ đầu e đã nói đến ĐẦU,GIỮA,CUỐI.
Bài 1 có:
0
0
0.697
0.697
1.825
1.825
3.65
3.65
Cái e cần là xóa 0.697 vì ĐẦU là 0,GIỮA là 1.825,CUỐI là 3.65.
1.825 là số nằm giữa 0 và 3.65.Bài 11 phải xóa hàng có giá trị 3.23 và 2.685.Ý e là vậy 2 bác ah.Mong 2 bác giúp e.Cảm ơn 2 bác nhiều.
Thế bài #11
Bạn có|Bạn cần
0​
|
0
0​
|
0
0​
|
0
1,725​
|
1,725
1,725​
|
1,725
1,725​
|
1,725
3,23​
|
3,45
3,23​
|
3,45
3,23​
|
3,45
3,45​
|

3,45​
|

3,45​
|
Vậy số giữa của bạn là số như thế nào???
 
Lần chỉnh sửa cuối:
Upvote 0
Thế bài #11
Bạn có|Bạn cần
0​
|
0
0​
|
0
0​
|
0
1,725​
|
1,725
1,725​
|
1,725
1,725​
|
1,725
3,23​
|
3,45
3,23​
|
3,45
3,23​
|
3,45
3,45​
|

3,45​
|

3,45​
|
Vậy số giữa của bạn là số như thế nào???
Số giữa là sô 1.725 mà bác.Số cuối chia cho 2 ra kết quả là số GIỮA bác ah.Cảm ơn bác nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Hiểu dzồi, nhưng còn cái này nữa
Số lượng những số xuất hiện trong vùng trùng cột A & B có phải chỉ dao động là 3 hoặc 4 không hay nó nhiều hơn 4
Số ở giữa phải đảm bảo luôn luôn có nhé
Híc, bài này hay đây
 
Lần chỉnh sửa cuối:
Upvote 0
Số giữa là sô 1.725 mà bác.Số cuối chia cho 2 ra kết quả là số GIỮA bác ah.Cảm ơn bác nhiều.
Trời ơi! bạn không nói từ đầu để mất thời gian
Test code này xem sao nhé
Mã:
Sub DeleteRows()
Dim Tmp
Dim i As Long
On Error Resume Next
Application.ScreenUpdating = False
For i = Sheet1.[a65500].End(3).Row + 1 To 2 Step -1
  If Sheet1.Range("D" & i).Value = 0 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value > 0 And Sheet1.Range("D" & i).Value <> Tmp / 2 And Sheet1.Range("D" & i).Value <> Tmp Then
     Sheet1.Range("D" & i).EntireRow.Delete
  End If
Next
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Hiểu dzồi, nhưng còn cái này nữa
Số lượng nhưng số xuất hiện trong vùng trùng cột A & B có phải chỉ dao động là 3 hoặc 4 không hay nó nhiều hơn 4
Số ở giữa phải đảm bảo luôn luôn có nhé
Híc, bài này hay đây
Có thể nó nhiều hơn 4 bác ah,nhưng chỉ cần lấy thằng CUỐI chia cho 2 là được thằng GIỮA,Thằng ĐẦU thì lúc nào cũng là 0 rồi.Bài toán của e thì chỉ cần lấy thằng ĐẦU,GIỮA,CUỐI thôi.Thanks.
 
Upvote 0
Trời ơi! bạn không nói từ đầu để mất thời gian
Test code này xem sao nhé
Mã:
Sub DeleteRows()
Dim Tmp
Dim i As Long
On Error Resume Next
Application.ScreenUpdating = False
For i = Sheet1.[a65500].End(3).Row + 1 To 2 Step -1
  If Sheet1.Range("D" & i).Value = 0 And Sheet1.Range("D" & i - 1).Value > 0 Then
   Tmp = Sheet1.Range("D" & i - 1).Value
  End If
  If Sheet1.Range("D" & i).Value > 0 And Sheet1.Range("D" & i).Value <> Tmp / 2 And Sheet1.Range("D" & i).Value <> Tmp Then
     Sheet1.Range("D" & i).EntireRow.Delete
  End If
Next
Application.ScreenUpdating = True
End Sub
Code chạy ra KQ sai rồi bác ơi.Bác test lại giùm e với.Thanks.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom