Xóa dữ liệu từng cột theo giá trị lớn nhất

Liên hệ QC

quanthienhan

Thành viên hoạt động
Tham gia
4/2/07
Bài viết
120
Được thích
3
Mọi người xem giúp em có code hay cách nào để giải quyết các bước em làm thủ công thế này không ạ..
 

File đính kèm

  • 123.xlsx
    27 KB · Đọc: 8
nghĩa là mình có thể chủ động xóa số lượng cột dữ liệu theo mình muốn - tự động có thể chạy hết các cột...
 
nghĩa là mình có thể chủ động xóa số lượng cột dữ liệu theo mình muốn - tự động có thể chạy hết các cột...
Bạn chay thử code tự động này
Mã:
Sub XoaCotMax_TuDong()
Dim Nguon, Dong, Cot
Dim Tong, Tong_
Dim Kq
Dim i, j, k, x, z, t
With Sheet1
    Kq = .Range("a5").CurrentRegion
    Dong = UBound(Kq)
    Cot = UBound(Kq, 2)
    Tong_ = .Range("a1:l3")
End With
x = Cot
Do While x > 0
    Nguon = Kq
    Tong = Tong_
    z = 0
    For j = 1 To Cot
        If z < Tong(1, j) * 100 + Tong(2, j) Then
            z = Tong(1, j) * 100 + Tong(2, j)
            t = j
        End If
    Next j
    t = CLng(Left(t, 2))
    ReDim Kq(1 To Dong - Tong(1, t), 1 To Cot)
    For j = 1 To Cot
        Kq(1, j) = Nguon(1, j)
        If j <> t Then Tong_(1, j) = 0
    Next j
    z = 1
    x = 0
    For i = 2 To Dong
        If Nguon(i, t) = 0 Then
            z = z + 1
            For j = 1 To Cot
                Tong_(1, j) = Tong_(1, j) + Nguon(i, j)
                x = x + Tong_(1, j)
                Kq(z, j) = Nguon(i, j)
            Next j
        End If
    Next i
    Dong = Dong - Tong(1, t)
    Tong_(1, t) = 0
Loop
Sheet1.Range("n1:y93").Clear
Sheet1.Range("n5").Resize(UBound(Nguon), Cot) = Nguon
Sheet1.Range("n1").Resize(UBound(Tong), UBound(Tong, 2)) = Tong
End Sub
 
Sao mình chạy không được bạn.. bạn có thể cho vào file luôn giúp mình được không ..thanks nhiều..
 
Bác CHAOQUAY có thể chạy cụ thể giúp em dc không.. mà code trên chạy thì mình có biết, hoặc đánh dấu những cột nào đã được xóa hay không ? cái này em rất cần, và khi muốn thay đổi ( số lượng cột bị xóa ) ta phải thay số liệu nào..thanks bác nhiều....
 
Sao mình chạy không được bạn.. bạn có thể cho vào file luôn giúp mình được không ..Cảm ơn nhiều..
Bạn làm như sau : nhấn alt+F8 -> run hoac enter
Bài đã được tự động gộp:

Bác CHAOQUAY có thể chạy cụ thể giúp em dc không.. mà code trên chạy thì mình có biết, hoặc đánh dấu những cột nào đã được xóa hay không ? cái này em rất cần, và khi muốn thay đổi ( số lượng cột bị xóa ) ta phải thay số liệu nào..Cảm ơn bác nhiều....
Tức là hiển thị từng bảng qua các bước chạy code à bạn?
 

File đính kèm

  • Copy of 123.xlsb
    28.8 KB · Đọc: 4
có thể đánh dấu hoặc tô màu các cột đã được code chạy xóa dữ liệu.... như mình làm thủ công thì.. các cột bị xóa là.. 1.2.3.4.5.8.9 .. cột còn lại là 0.6.7.... mình đánh dấu thứ tự như ô A5...
Bài đã được tự động gộp:

Bạn cho mình hỏi.. mình muốn chạy nhiều giữ liệu hơn thì thay thông số nào... trên ví dụ xét 93 hàng thôi.. mình muốn lên 200 thì thay vào đâu..thank..
 
có thể đánh dấu hoặc tô màu các cột đã được code chạy xóa dữ liệu.... như mình làm thủ công thì.. các cột bị xóa là.. 1.2.3.4.5.8.9 .. cột còn lại là 0.6.7.... mình đánh dấu thứ tự như ô A5...
Cột nào đã xóa thì trên dòng 1 = 0 mà bạn
Bạn cho mình hỏi.. mình muốn chạy nhiều giữ liệu hơn thì thay thông số nào... trên ví dụ xét 93 hàng thôi.. mình muốn lên 200 thì thay vào đâu..thank..
Số liệu bắt đầu từ a5, mấy dòng cũng được
 
Cột nào đã xóa thì trên dòng 1 = 0 mà bạn

Số liệu bắt đầu từ a5, mấy dòng cũng được
- ý mình là . nếu như xoa giá trị các cột theo giá trị nhiều nhất hiện tại... như ví dụ trên.. cột E có tổng giá trị là 28 lớn nhất.. sau khi mình Sort&filter để xóa đi các giá trị mình muốn... thì mình lại có Cột I có tổng giá trị lớn nhất... và mình lại Sort&filter để xóa đi các giá trị mình muốn...
sau các bước như thế thì Cột A = 0.... ( trong khi cột A chưa được xóa.. hay là không phải xóa ) .. và mình muốn biết và đánh dấu các cột được code xóa .. và các cột không và chưa được code xóa đã = 0 . như trường hợp cột A của ví dụ trên... .. mình cần biết các cột có tổng giá trị = 0 khi đã được code chạy qua.....
 
- ý mình là . nếu như xoa giá trị các cột theo giá trị nhiều nhất hiện tại... như ví dụ trên.. cột E có tổng giá trị là 28 lớn nhất.. sau khi mình Sort&filter để xóa đi các giá trị mình muốn... thì mình lại có Cột I có tổng giá trị lớn nhất... và mình lại Sort&filter để xóa đi các giá trị mình muốn...
sau các bước như thế thì Cột A = 0.... ( trong khi cột A chưa được xóa.. hay là không phải xóa ) .. và mình muốn biết và đánh dấu các cột được code xóa .. và các cột không và chưa được code xóa đã = 0 . như trường hợp cột A của ví dụ trên... .. mình cần biết các cột có tổng giá trị = 0 khi đã được code chạy qua.....
Bạn muốn hiển thị kết quả như thế nao
 
mình có đánh dấu các cột từ 0 -> 9 của hàng A5.. nếu được có thể tô màu các ô đó . đánh dấu nhận biết các cột đã được code chạy xóa... như vậy các ô.. 12345.89 sẽ được tô màu... thanks
 
mình có đánh dấu các cột từ 0 -> 9 của hàng A5.. nếu được có thể tô màu các ô đó . đánh dấu nhận biết các cột đã được code chạy xóa... như vậy các ô.. 12345.89 sẽ được tô màu... Cảm ơn
Thử file này xem đã đúng ý bạn chưa
 

File đính kèm

  • Copy of 123.xlsb
    29 KB · Đọc: 6
Thử file này xem đã đúng ý bạn chưa
OK quá chuẩn rồi bạn ơi... mà còn một chút nữa... sao mình xóa bớt dữ liệu gốc .. chạy code thì báo lỗi .. cũng như mình pate thêm giữ liệu nữa vào chạy code đều báo lỗi không được.. nhờ bạn xem giúp thêm chút nữa... thanks.
 
OK quá chuẩn rồi bạn ơi... mà còn một chút nữa... sao mình xóa bớt dữ liệu gốc .. chạy code thì báo lỗi .. cũng như mình pate thêm giữ liệu nữa vào chạy code đều báo lỗi không được.. nhờ bạn xem giúp thêm chút nữa... Cảm ơn.
Lỗi thế nào bạn gửi file lên
 
mình copy lại dữ liệu gốc pate vô chạy code thì ok.. nhưng khi copy thử dữ liệu bên Sheet2 vô chạy code thì báo lỗi...không được..bạn xem giúp mình ..thank.
 

File đính kèm

  • 1234.xlsm
    32.6 KB · Đọc: 4
đúng rồi bạn.. dòng 1 là tổng của từng cột..để mỗi lần delete mình cần lấy giá trị tổng cột nào lớn nhất để delete tiếp.. ( dòng 3 là tổng lúc đầu chưa delete từng cột -).. mình làm thủ công . nên khi delete đên trường hợp có 2 cột bằng nhau.. mình sẽ so sánh giá trị tổng cột lúc đầu ở dòng thứ 3.. cột nào có giá trị lớn hơn mình sẽ ưu tiên delete cột đó....
 
Web KT
Back
Top Bottom