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 ạ..
Phần tô đậm nghĩa là thế nào...File sẽ chạy tự động xóa khi còn 1 hoặc 2 cột hoặc là
chạy xóa dữ liệu những cột mình cần thôi..
Em xin cảm ơn các Anh Chị và Diễn Đàn Excell nhiều...
Bạn chay thử code tự động nàynghĩ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...
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
Bạn làm như sau : nhấn alt+F8 -> run hoac enterSao 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..
Tức là hiển thị từng bảng qua các bước chạy code à bạn?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....
Cột nào đã xóa thì trên dòng 1 = 0 mà bạncó 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...
Số liệu bắt đầu từ a5, mấy dòng cũng đượcBạ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..
- ý 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...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
Bạn muốn hiển thị kết quả như thế nao- ý 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.....
Thử file này xem đã đúng ý bạn chưamì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
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.Thử file này xem đã đúng ý bạn chưa
Lỗi thế nào bạn gửi file lênOK 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.
Đưa file lỗi đó bạn, file này không lỗimì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.
ý mình nhầm.. đây bạn..Đưa file lỗi đó bạn, file này không lỗi
Bạn cho hỏi dòng số 1 & số 3 có phải là tổng của từng cột hay khôngý mình nhầm.. đây bạn..
Vào thời điểm bắt đầu tính, nếu tổng dòng 1 & 3 không đúng là code sẽ bị lỗi. Bạn kiểm tra xem tổng các cột khi paste đã đúng hay chưađú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 đó....
OK rồi bạn .. bạn cho hỏi. code này mặc định nó sẽ xóa bao nhiêu cột rồi mới dừng.. mình có thể chủ động thay đổi số cột cần xóa được không bạn.Vào thời điểm bắt đầu tính, nếu tổng dòng 1 & 3 không đúng là code sẽ bị lỗi. Bạn kiểm tra xem tổng các cột khi paste đã đúng hay chưa
Xóa phải có điểm dừng - thí dụ ra lệnh xóa 6 cột trong 10 cột chẳng hạn- vì có khi xóa một hồi có khi nó xóa ....sạch sẽ, thí dụ với dữ liệu trong bài nó sẽ xóa theo thứ tự các cột 5 - 9 - 2 - 10 - 4 - 3 - 7 khi xóa xong cột thứ 7, sang thằng thứ 8 (cũng là cột 8) còn 2 em mang số 1, nếu xóa đi...... thì sạch sẽ, chẳng còn gì để mà làm tiếp. HícOK rồi bạn .. bạn cho hỏi. code này mặc định nó sẽ xóa bao nhiêu cột rồi mới dừng.. mình có thể chủ động thay đổi số cột cần xóa được không bạn.
Cảm ơn.
code này có phần giống như ý bài 23. code sẽ xóa liên tục, mỗi lần xóa đều lưu lại kết quả liền trước. Tới khi xóa hết tất cả thì dừng, lấy kết quả liền trước khi dừng làm đáp án vì vậy không xác định trước được là sẽ xóa bao nhiêu cột.OK rồi bạn .. bạn cho hỏi. code này mặc định nó sẽ xóa bao nhiêu cột rồi mới dừng.. mình có thể chủ động thay đổi số cột cần xóa được không bạn.
Cảm ơn.
Cái này bí mịt bạn...Xóa phải có điểm dừng - thí dụ ra lệnh xóa 6 cột trong 10 cột chẳng hạn- vì có khi xóa một hồi có khi nó xóa ....sạch sẽ, thí dụ với dữ liệu trong bài nó sẽ xóa theo thứ tự các cột 5 - 9 - 2 - 10 - 4 - 3 - 7 khi xóa xong cột thứ 7, sang thằng thứ 8 (cũng là cột 8) còn 2 em mang số 1, nếu xóa đi...... thì sạch sẽ, chẳng còn gì để mà làm tiếp. Híc
Mà ...cái này là cái gì ngộ vậy bạn ( hỏi cho biết thôi)
Thân
Vậy ạ.. liệu mình có thế cố định code chỉ chạy xóa tối đa 7 cột thôi được không..code này có phần giống như ý bài 23. code sẽ xóa liên tục, mỗi lần xóa đều lưu lại kết quả liền trước. Tới khi xóa hết tất cả thì dừng, lấy kết quả liền trước khi dừng làm đáp án vì vậy không xác định trước được là sẽ xóa bao nhiêu cột.
Với dạng bài của bạn, số cột sẽ xóa ( hoặc số cột không xóa ) có lẽ chỉ có thể xác định gần đúng thôi bạn
Nếu nhỡ sau khi xóa 6 cột, 4 cột còn lại có tổng bằng nhau thì lần thứ 7, kết quả sẽ là = 0. Việc xóa tối đa 7 cột chắc cần phải thêm điều kiện lựa chọn cột để xóa bạn aVậy ạ.. liệu mình có thế cố định code chỉ chạy xóa tối đa 7 cột thôi được không..
Cách của Bác hay quá... có điều quá trình xóa vẫn chưa được như em muốn lắm. Bác xem lại sheet 3 em làm thủ công.. có thể chạy theo cách em làm thủ công thì ngon..thanks Bác.Bạn thử file này, làm ở sheet 2, thay đổi số cột muốn xóa ở [F1] rồi bấm vào hình mèo chuột
Thân
ok.. có vẻ phức tạp nhỉ.. đành thôi vậy có gì em thủ công nốt vậy .. Em xin chân thành cảm ơn Bác nhiều...Nếu nhỡ sau khi xóa 6 cột, 4 cột còn lại có tổng bằng nhau thì lần thứ 7, kết quả sẽ là = 0. Việc xóa tối đa 7 cột chắc cần phải thêm điều kiện lựa chọn cột để xóa bạn a
Bạn concogia có thể xem giúp cho mình thêm chút nữa được không .. mình gửi file nhờ bạn xem hộ .. thankBạn thử file này, làm ở sheet 2, thay đổi số cột muốn xóa ở [F1] rồi bấm vào hình mèo chuột
Thân