Ghép dòng với nhiều điều kiện

Liên hệ QC

pt_hcl

Thành viên hoạt động
Tham gia
15/2/11
Bài viết
138
Được thích
2
[FONT=+mn-ea]Mình gặp phải trường hợp hóc búa thân gửi GPE giúp đỡ:[/FONT]
[FONT=+mn-ea]Tìm và ghép n dòng thoả mãn điều kiện: (Đây là bài tổng quát)[/FONT]
[FONT=+mn-ea]- Nếu n dòng ghép lại có số cột rỗng lớn nhất ở trong hàng là m thì ít nhất có m cột đầu tiên phải rỗng là thoả mãn điều kiện và chép sang sheet khác![/FONT]
[FONT=+mn-ea]- Mình có gửi kèm theo file minh hoạ cho trường hợp cụ thể! [/FONT]
[FONT=+mn-ea]- Cảm ơn GPE![/FONT]
[FONT=+mn-ea]- Chúc một ngày Valentine vui vẻ - hạnh phúc![/FONT]
(Mình không hiểu vì sao với tên thành viên cũ: hcl_pt thì mình không thể nào tải file lên diễn đàn được đành phải đăng kí với tên mới- Mong GPE thông cảm)
 
Lần chỉnh sửa cuối:
Bài toán của bạn có thể hiểu như thế này không vậy:

(|) Tìm vùng có ô rỗng lớn nhất trong dòng;

(|) Chỉ chọn ra các dòng có số ô rỗng lớn nhất kể từ đầu dòng;

(|) Đem các dòng thoả 2 điều kiện ghép với các dòng có số ô rỗng ít hơn các dòng này;

Ví dụ dòng 9 & dòng 16 có số ô rỗng lớn nhất là 6 ô & đều bắt đầu từ cột 'C'

Ta có thể đem lần lượt từ chúng ghép với các dòng có số ô rỗng cực đại nhỏ hơn hay =6 là OK chứ ghì?

Chờ tin bạn;

(Nếu bạn muốn kiểm tra lại NICH cũ đã được cho chuyển file lên hay chưa thì fát biểu vớ ban Điều hành để được thoả mãn iêu cầu)
 
(|) Tìm vùng có ô rỗng lớn nhất trong dòng;

(|) Chỉ chọn ra các dòng có số ô rỗng lớn nhất kể từ đầu dòng;

(|) Đem các dòng thoả 2 điều kiện ghép với các dòng có số ô rỗng ít hơn các dòng này;

Ví dụ dòng 9 & dòng 16 có số ô rỗng lớn nhất là 6 ô & đều bắt đầu từ cột 'C'

Ta có thể đem lần lượt từ chúng ghép với các dòng có số ô rỗng cực đại nhỏ hơn hay =6 là OK chứ ghì?

Chờ tin bạn;

(Nếu bạn muốn kiểm tra lại NICH cũ đã được cho chuyển file lên hay chưa thì fát biểu vớ ban Điều hành để được thoả mãn iêu cầu)

Vâng! Như thế này bạn à: Mình xin lấy một ví dụ cụ thể để minh hoạ:
* Trường hợp tìm và ghép 2 dòng:
- Trường hợp 1: nếu 2 dòng ghép lại thoả mãn 2 điều kiện sau thì chép sang sheet2:
+ ĐK1: số cột rỗng lớn nhất ở trong hàng là 1 (bắt đầu tính từ cột đầu tiên có dữ liệu)
+ ĐK2:ít nhất 1 cột đầu tiên liên tiếp tính từ cột C phải rỗng
Ví dụ như file mình gửi kèm: dòng 4 và dòng 5 là thoả mãn: ít nhất có 1 cột đầu tiên là cột C rỗng và số cột rỗng lớn nhất có trong hàng bắt đầu tính từ cột đầu tiên có dữ liệu là 1 => dòng 4-5 thoả mãn điều kiện sẽ được chép sang sheet2
- Trường hợp 2: nếu 2 dòng ghép lại thoả mãn 2 điều kiên sau thì chép sang sheet3:
+ ĐK1: số cột rỗng lớn nhất ở trong hàng là 2 (bắt đầu tính từ cột đầu tiên có dữ liệu)
+ ĐK2:ít nhất 2 cột đầu tiên liên tiếp tính từ cột C phải rỗng
Ví dụ như file mình gửi kèm: dòng 5 và dòng 6 là thoả mãn: ít nhất có 2 cột đầu tiên là cột C; D rỗng và số cột rỗng lớn nhất có trong hàng bắt đầu tính từ cột đầu tiên có dữ liệu là 2 =>dòng 5-6 thoả mãn điều kiện sẽ được chép sang sheet3
- Tương tự với các trường hợp còn lại!
* Nói cách khác: Tìm và ghép 2 dòng (3 dòng) sao cho thoả mãn điều kiện: Số cột đầu tiên liên tiếp tính từ cột C phải rỗng và lớn hơn hoặc bằng số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên.
- Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 1 thì chép sang sheet2
- Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 2 thì chép sang sheet3
- Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 3 thì chép sang sheet4
- Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 4 thì chép sang sheet5
* Mong bạn xem xét và giúp đỡ! Chân thành cảm ơn bạn! Cảm ơn GPE!
 
Minh đã viết lại macro xác định số ô rỗng cực đại có trong hàng (Macro trước chưa hoàn toàn đúng trong những trường hợp bạn vừa đưa lên)
& Mình cũng đã viết hàm người dùng xác định số ô rỗng cực đại trong hàng luôn rồi.
Như vậy vấn đề chép sẽ không là gì, nếu hiểu được í của bạn.

Tuy nhiên ta chưa hiểu nhau, đáng tiếc!

Tại cột 'C' của bạn chỉ có C17:C19 có dữ liệu, vậy các dòng này không thể thoả điều kiện để sang Sheet2 (?) Các dòng khác thỉ thoả hết nếu đem so với dòng đầu tiên của bạn (!) & Đã thoả thì chép hết theo cặp chứ gì?

Xong trang này ta sẽ sang trang tiếp!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Minh đã viết lại macro xác định số ô rỗng cực đại có trong hàng (Macro trước chưa hoàn toàn đúng trong những trường hợp bạn vừa đưa lên)
& Mình cũng đã viết hàm người dùng xác định số ô rỗng cực đại trong hàng luôn rồi.
Như vậy vấn đề chép sẽ không là gì, nếu hiểu được í của bạn.

Tuy nhiên ta chưa hiểu nhau, đáng tiếc!

Tại cột 'C' của bạn chỉ có C17:C19 có dữ liệu, vậy các dòng này không thể thoả điều kiện để sang Sheet2 (?) Các dòng khác thỉ thoả hết nếu đem so với dòng đầu tiên của bạn (!) & Đã thoả thì chép hết theo cặp chứ gì?

Xong trang này ta sẽ sang trang tiếp!

Thật vui vì bạn đã giúp mình! Đúng vậy bạn ạ!
- Nếu cột C có dữ liệu thì bỏ qua!
Mình xin nói lại phần điều kiện và có kèm theo file minh hoạ:
* Tìm và ghép 2 dòng (3 dòng) sao cho thoả mãn điều kiện: Số cột đầu tiên liên tiếp tính từ cột C phải rỗng và lớn hơn hoặc ít nhất bằng số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên.
1, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 1 thì chép sang sheet2

2, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 2 thì chép sang sheet3
3, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 3 thì chép sang sheet4
4, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 4 thì chép sang sheet5
+ Mình xin gửi kèm theo file có lấy 2 ví dụ minh hoạ cho trường hợp 1 và 4 ở sheet1 và có dán trường hợp thoả mãn sang các sheet2 và sheet5!
Chân thành cảm ơn bạn!
 
Lần chỉnh sửa cuối:
Thật vui vì bạn đã giúp mình! Đúng vậy bạn ạ!
- Nếu cột C có dữ liệu thì bỏ qua!
Mình xin nói lại phần điều kiện và có kèm theo file minh hoạ:
* Tìm và ghép 2 dòng (3 dòng) sao cho thoả mãn điều kiện: Số cột đầu tiên liên tiếp tính từ cột C phải rỗng và lớn hơn hoặc ít nhất bằng số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên.
1, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 1 thì chép sang sheet2

2, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 2 thì chép sang sheet3
3, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 3 thì chép sang sheet4
4, Nếu số cột rỗng lớn nhất có trong hàng tính từ cột có dữ liệu đầu tiên là 4 thì chép sang sheet5
+ Mình xin gửi kèm theo file có lấy 2 ví dụ minh hoạ cho trường hợp 1 và 4 ở sheet1 và có dán trường hợp thoả mãn sang các sheet2 và sheet5!
Chân thành cảm ơn bạn!
Híc, đọc bài này dễ bị "tẩu hỏa nhập ma" quá
Mù mờ mình hiểu thế này:
1)- GHÉP 2 DÒNG: là gom chung dữ liệu các cột tương ứng của 2 dòng đó. Thí dụ ghép dòng 4 & 5 ta gom C4&C5; D4&D5......SI4&SI5
2)- Rỗng đầu tiên: là số ô rỗng liên tục tính từ cột C
3)- Rỗng trong hàng: là số ô rỗng liên tục tính từ cột có dữ liệu chấm dứt "Rỗng đầu tiên"
Nếu đúng như thế bạn thử chạy code này xem sao:
Mã:
Public Sub Ghep2dong()
Dim Vung, I As Long, J As Long, K As Long, iDau As Long, iMax As Long, SoSanh As Long, M As Long, kK As Long
 Vung = [c4:si22].Value
     For I = 1 To UBound(Vung) - 1
      If Vung(I, 1) = "" Then
         For J = I + 1 To UBound(Vung)
           If Vung(J, 1) = "" Then
                For K = 1 To 501
                    If Vung(I, K) & Vung(J, K) = "" Then
                        iDau = iDau + 1
                    Else
                        kK = K
                        Exit For
                    End If
                Next K
                    For M = kK To 501
                        If Vung(I, M) & Vung(J, M) = "" Then
                            SoSanh = SoSanh + 1
                            iMax = Application.WorksheetFunction.Max(iMax, SoSanh)
                        Else
                            SoSanh = 0
                        End If
                    Next M
                        If iMax < 5 Then
                                    If iMax < iDau Or iMax = iDau Then
                                        Range(Cells(I + 3, 1), Cells(I + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(3)
                                        Range(Cells(J + 3, 1), Cells(J + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(2)
                                    End If
                        End If
                        iDau = 0: SoSanh = 0: iMax = 0
               End If
        Next J
       End If
    Next I
End Sub
Trúng thì tốt, còn trật thì mình cũng....chịu thua nó thội, nhìn chóng mặt lắm
Híc
Thân
 
Híc, đọc bài này dễ bị "tẩu hỏa nhập ma" quá
Mù mờ mình hiểu thế này:
1)- GHÉP 2 DÒNG: là gom chung dữ liệu các cột tương ứng của 2 dòng đó. Thí dụ ghép dòng 4 & 5 ta gom C4&C5; D4&D5......SI4&SI5
2)- Rỗng đầu tiên: là số ô rỗng liên tục tính từ cột C
3)- Rỗng trong hàng: là số ô rỗng liên tục tính từ cột có dữ liệu chấm dứt "Rỗng đầu tiên"
Nếu đúng như thế bạn thử chạy code này xem sao:
Mã:
Public Sub Ghep2dong()
Dim Vung, I As Long, J As Long, K As Long, iDau As Long, iMax As Long, SoSanh As Long, M As Long, kK As Long
Vung = [c4:si22].Value
For I = 1 To UBound(Vung) - 1
If Vung(I, 1) = "" Then
For J = I + 1 To UBound(Vung)
If Vung(J, 1) = "" Then
For K = 1 To 501
If Vung(I, K) & Vung(J, K) = "" Then
iDau = iDau + 1
Else
kK = K
Exit For
End If
Next K
For M = kK To 501
If Vung(I, M) & Vung(J, M) = "" Then
SoSanh = SoSanh + 1
iMax = Application.WorksheetFunction.Max(iMax, SoSanh)
Else
SoSanh = 0
End If
Next M
If iMax < 5 Then
If iMax < iDau Or iMax = iDau Then
Range(Cells(I + 3, 1), Cells(I + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(3)
Range(Cells(J + 3, 1), Cells(J + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(2)
End If
End If
iDau = 0: SoSanh = 0: iMax = 0
End If
Next J
End If
Next I
End Sub
Trúng thì tốt, còn trật thì mình cũng....chịu thua nó thội, nhìn chóng mặt lắm
Híc
Thân
Chúc ngày mới tốt lành!
- Vâng! Cách hiểu của Bạn đúng rồi ạ!
1)- GHÉP 2 DÒNG: là gom chung dữ liệu các cột tương ứng của 2 dòng đó. Thí dụ ghép dòng 4 & 5 ta gom C4&C5; D4&D5......SI4&SI5
2)- Rỗng đầu tiên: là số ô rỗng liên tục tính từ cột C
3)- Rỗng trong hàng: là số ô rỗng liên tục tính từ cột có dữ liệu chấm dứt "Rỗng đầu tiên": Đúng như vậy ạ! Nhưng rỗng Trong hàng thì có rất nhiều và mình phải tìm số ô rỗng trong hàng lớn nhất xét so sánh đối chiếu với số ô rỗng liên tục tính từ cột C (Số ô rỗng liên tục tính từ cột C phải lớn hơn hoặc bằng Số ô rỗng trong hàng lớn nhất)
- Mình đã chạy thử code của Bạn đưa lên nhưng mình thấy báo lỗi ở dòng :Range(Cells(I + 3, 1), Cells(I + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(3)
- Cảm ơn bạn đã giúp đỡ! Thân ái!
 
Từ ít đến nhiều, mần trường hợp 4 trước

Bạn kiểm tra giúp nha! (File E2003 & mình xoá cột 'B' của bạn đi rồi)
 

File đính kèm

  • GPE.rar
    26.1 KB · Đọc: 20
Chúc ngày mới tốt lành!
- Vâng! Cách hiểu của Bạn đúng rồi ạ!
1)- GHÉP 2 DÒNG: là gom chung dữ liệu các cột tương ứng của 2 dòng đó. Thí dụ ghép dòng 4 & 5 ta gom C4&C5; D4&D5......SI4&SI5
2)- Rỗng đầu tiên: là số ô rỗng liên tục tính từ cột C
3)- Rỗng trong hàng: là số ô rỗng liên tục tính từ cột có dữ liệu chấm dứt "Rỗng đầu tiên": Đúng như vậy ạ! Nhưng rỗng Trong hàng thì có rất nhiều và mình phải tìm số ô rỗng trong hàng lớn nhất xét so sánh đối chiếu với số ô rỗng liên tục tính từ cột C (Số ô rỗng liên tục tính từ cột C phải lớn hơn hoặc bằng Số ô rỗng trong hàng lớn nhất)
- Mình đã chạy thử code của Bạn đưa lên nhưng mình thấy báo lỗi ở dòng :Range(Cells(I + 3, 1), Cells(I + 3, 503)).Copy Sheets("sheet" & iMax + 1).[a1000].End(xlUp)(3)
- Cảm ơn bạn đã giúp đỡ! Thân ái!
Híc, đưa file hao tài nguyên quá
Bạn thử xem sao
Thân
Bạn nhớ đứng ở sheet1 chạy code nhé
 

File đính kèm

  • Ghep2dong_4dieukien.rar
    51.4 KB · Đọc: 18
Lần chỉnh sửa cuối:
Bạn kiểm tra giúp nha! (File E2003 & mình xoá cột 'B' của bạn đi rồi)
Vâng! Cảm ơn Bạn nhiều!
- Đây là trường hợp 4: phải thoả mãn 2 điều kiện:
1, Số cột đầu tiên liên tiếp rỗng: lớn hơn hoặc bằng 4.
2, Số cột rỗng liên tục trong hàng lớn nhất: bằng 4.
- Mình vừa kiểm tra và thấy phần kết quả ở sheet5 như sau ạ:
1, Số cột đầu tiên liên tiếp rỗng tính từ cột B (theo file của bạn) là từ 4 trở lên: thoả mãn.
2, Nhưng số cột rỗng liên tục trong hàng lớn nhất của một vài kết quả là chưa thoả mãn điều kiện ạ, ví dụ:
+ Kết quả ở dòng 5 và 6 hoặc dòng 14 và 15: số cột ô rỗng liên tục trong hàng lớn nhất là 3: Không thoả mãn (kết quả này đúng cho trường hợp 3: dán sang sheet4)
+ kết quả ở dòng 23 và 24: số cột ô rỗng liên tục trong hàng lớn nhất là 6: Không thoả mãn.
* Cảm ơn bạn và mong bạn xem lại giúp mình với! Chúc ngày thắng lợi! Thân ái
 
Híc, đưa file hao tài nguyên quá
Bạn thử xem sao
Thân
Bạn nhớ đứng ở sheet1 chạy code nhé
Mình biết nói gì hơn nhỉ? Đúng quá Bạn à! Đúng là làm như vậy ạ! Như vậy là mình có code chạy 1 lúc cho cả 4 trường hợp! Thêm code của các bạn khác chạy cho từng trường hợp vậy là tuyệt vời quá!
- Cảm ơn Bạn rất nhiều! Nếu mình muốn làm với vùng dữ liệu rất lớn như: vùng= [c4:si719400] thì có được không ạ? Và nếu muốn thì mình sẽ sửa thông số code ở phần nào ạ? Mong bạn chỉ giúp!
- Rất mong tin của bạn! Cảm ơn mọi người! Cảm ơn GPE! Thân ái!
 
Trường hợp 4: Nếu 2 dòng ghép lại có Số cột rỗng lớn nhất ở trong hàng là 4 thì ít nhất có 4 cột đầu tiên tính từ cột C phải rỗng là thoả mãn điều kiện => chép sang sheet 5 (4, 5, ...cột đầu tiên trở lên rỗng cũng thoả mãn điều kiện)

1, Số cột đầu tiên liên tiếp rỗng tính từ cột B (theo file của bạn) là từ 4 trở lên: thoả mãn.
2, Nhưng số cột rỗng liên tục trong hàng lớn nhất của một vài kết quả là chưa thoả mãn điều kiện ạ, ví dụ:
+ Kết quả ở dòng 5 và 6 hoặc dòng 14 và 15: số cột ô rỗng liên tục trong hàng lớn nhất là 3: Không thoả mãn (kết quả này đúng cho trường hợp 3: dán sang sheet4)

Lý ra bạn fải viết vầy chăng (?):
Trường hợp 4: Nếu 2 dòng ghép lại có số cột rỗng đầu hàng tối thiểu fải bằng 4 & số cột rỗng còn lại trong hàng (không kể các cột rỗng đầu hàng đã tính) fải bằng 4
 
Mình biết nói gì hơn nhỉ? Đúng quá Bạn à! Đúng là làm như vậy ạ! Như vậy là mình có code chạy 1 lúc cho cả 4 trường hợp! Thêm code của các bạn khác chạy cho từng trường hợp vậy là tuyệt vời quá!
- Cảm ơn Bạn rất nhiều! Nếu mình muốn làm với vùng dữ liệu rất lớn như: vùng= [c4:si719400] thì có được không ạ? Và nếu muốn thì mình sẽ sửa thông số code ở phần nào ạ? Mong bạn chỉ giúp!
- Rất mong tin của bạn! Cảm ơn mọi người! Cảm ơn GPE! Thân ái!
Vung= [c4:si719400] Bạn hỏi xong, bạn ...trả lời luôn rồi đó
Nhưng, bài này mình sử dụng vòng lặp, gán dữ liệu trực tiếp lên sheet, với dữ liệu 719400 dòng thì nó lặp 258,767,820,300 lần, trừ những dòng không thỏa thì mình cũng....không dám thử, híc, tội nghiệp cái máy lắm ( có khi "chơi" hết 5 ve mà nó chưa chạy xong nữa à)
Không biết bài này có dùng mảng làm trung gian gán kết quả được không nữa. Để mình thử xem, nếu có hồi âm là làm được, còn bạn thấy mình lặn mất tăm "hổng" sủi miếng bọt nào là mình "tèo" luôn rồi nhé
Thân
 
Lý ra bạn fải viết vầy chăng (?):
Trường hợp 4: Nếu 2 dòng ghép lại có số cột rỗng đầu hàng tối thiểu fải bằng 4 & số cột rỗng còn lại trong hàng (không kể các cột rỗng đầu hàng đã tính) fải bằng 4
Vâng! Đúng rồi ạ! Ngữ Pháp Việt Nam mình chưa nhuần nhuyễn lắm nên cách diễn đạt còn khó hiểu! Mong bạn bỏ qua! Mình sẽ rút kinh nghiệm lần sau!
Cảm ơn bạn! Thân ái!
 
Vung= [c4:si719400] Bạn hỏi xong, bạn ...trả lời luôn rồi đó
Nhưng, bài này mình sử dụng vòng lặp, gán dữ liệu trực tiếp lên sheet, với dữ liệu 719400 dòng thì nó lặp 258,767,820,300 lần, trừ những dòng không thỏa thì mình cũng....không dám thử, híc, tội nghiệp cái máy lắm ( có khi "chơi" hết 5 ve mà nó chưa chạy xong nữa à)
Không biết bài này có dùng mảng làm trung gian gán kết quả được không nữa. Để mình thử xem, nếu có hồi âm là làm được, còn bạn thấy mình lặn mất tăm "hổng" sủi miếng bọt nào là mình "tèo" luôn rồi nhé
Thân
Hì! Cảm ơn bạn rất nhiều! Mình tin bạn sẽ không có chuyện "lặn mất tăm "hổng" sủi miếng bọt nào" đâu! Thân, chờ tin tốt lành!
 
Hãy kiểm theo file

--=0
!$@!! !$@!!
--=0 --=0 --=0
!$@!! !$@!!
--=0
 

File đính kèm

  • GPE.rar
    27.4 KB · Đọc: 6
Từ 2 trở lên đây; khoan hãy thử với 1 nha

Cách xài:

Cho macro TongHop chạy;
Khi xuất hiện hộp thoại iêu cầu nhập 1 số thì ta nhập ký số > 1 vố đó (Với điều kiện Sheets(i+1) đã tồn tại - i là số sẽ nhập vô.
 

File đính kèm

  • GPE.rar
    34.5 KB · Đọc: 11
Cách xài:

Cho macro TongHop chạy;
Khi xuất hiện hộp thoại iêu cầu nhập 1 số thì ta nhập ký số > 1 vố đó (Với điều kiện Sheets(i+1) đã tồn tại - i là số sẽ nhập vô.
- Tuyệt vời! Hay qúa! Để mình sẽ kiểm tra với dữ liệu lớn hơn xem sao? Không biết cảm ơn bạn thế nào? Cảm ơn bạn nhiều! Hi vọng với dữ liệu lớn vẫn thoả mãn.
- Mình thành thật xin lỗi các bạn cho mình spam một chút:
+ Đoạn code sau có phải chỉ sử dụng được cho excel2003 phải không ạ? Mình cho chạy sang excel 2007 thì khi số cột dữ liệu lên tới 257 dòng là báo lỗi? Đây là phần code lọc ô trống max bạn SA_DQ đã viết giúp đỡ, nhờ bạn xem và giúp mình sửa thông số ở phần nào để mình có thể tăng thêm số cột? Chân thành cảm ơn bạn!
Sub MaxBlanksInRows()
Dim eCol As Byte, eRw As Long, jJ As Long, Max_ As Byte, SoOR As Byte
Dim RgR As Range, Rng0 As Range, lRng As Range
Dim Timer_ As Double

Sheets("S1").Select: Timer_ = Timer
Set Rng0 = [B2].CurrentRegion
eCol = Rng0.Columns.Count: eRw = Rng0.Rows.Count
For jJ = 4 To eRw
If Cells(jJ, "B").Value = "" Then
Set Rng0 = Cells(jJ, "a") 'Neu B Rong Thi Lay A'
Else 'Nguoc Lai Thi Lay O Truoc O Rong'
Set Rng0 = Cells(jJ, "A").End(xlToRight)
End If
'Rng0 La O Co Du Lieu Truoc O Rong'
Do
Set RgR = Rng0.End(xlToRight) 'RgR: O Du Lieu Sau Day O Rong'
If RgR.Column > eCol Then
If Not lRng Is Nothing Then lRng.Interior.ColorIndex = 39:
Cells(jJ, eCol + 2).Value = Max_ - 1: Max_ = 0
Set lRng = Nothing: Exit Do
End If
'SoOR:= So O Rong Tim Duoc:'
SoOR = Range(Rng0, RgR).Count - 1
If SoOR > Max_ Then
Max_ = SoOR: Set lRng = Rng0.Offset(, 1).Resize(, SoOR - 1)

End If
Set Rng0 = RgR
Loop
Next jJ
[iD1].Value = Timer - Timer_
End Sub
 
Lần chỉnh sửa cuối:
Thay vì
Mã:
[SIZE=3][FONT=Times New Roman]Dim eCol As Byte, eRw As Long, jJ As Long, Max_ As Byte, SoOR As Byte

Ta thử sửa lại là :
PHP:
Dim eCol As Long, eRw As Long, jJ As Long, Max_ As Byte, SoOR As Byte
[/FONT][/SIZE]
 
Web KT

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

Back
Top Bottom