Mình đã test code của bạn ChanhTQ@ thì có chỗ chưa được chính xác lắm. Mình có gửi kèm theo file test mong bạn ChanhTQ@ và các bạn xem giúp đỡ:PHP:Option Explicit Sub MaxBlanksInRows() Dim eCol As Byte, eRw As Long, Jj As Long, maxC As Long, Max_ As Byte, SoOR As Byte Dim RgR As Range, Rng As Range, lRng As Range, myRng As Range Dim Timer_ As Double, Arr() Dim WF As WorksheetFunction: Set WF = WorksheetFunction Sheets("Sheet1").Select: Timer_ = Timer Set Rng = [B2].CurrentRegion eCol = Rng.Columns.Count: eRw = Rng.Rows.Count For Jj = 4 To eRw If Cells(Jj, "B").Value = "" Then Set Rng = Cells(Jj, "a") Else Set Rng = Cells(Jj, "A").End(xlToRight) End If Set myRng = Range(Cells(Jj, 2), Cells(Jj, eCol)) maxC = WF.CountA(myRng) Do Set RgR = Rng.End(xlToRight) If RgR.Column > eCol - maxC Then 1 If Not lRng Is Nothing Then lRng.Interior.ColorIndex = 42 3 Cells(Jj, eCol + 3).Value = lRng.Cells.Count End If ReDim Preserve Arr(1 To Jj - 3) Arr(Jj - 3) = Max_ - 1 Max_ = 0 Set lRng = Nothing Exit Do End If 5 If Range(Rng, RgR)(1).Column > 2 Then SoOR = Range(Rng, RgR).Count - 1 Else SoOR = 1 7 End If If SoOR > Max_ Then Max_ = SoOR If Rng(1).Column > 2 Then _ Set lRng = Rng.Offset(, 1).Resize(, SoOR - 1) '**' End If Set Rng = RgR Loop Next Jj 9 ' [iF4].Resize(Jj - 3) = WF.Transpose(Arr)' Set myRng = Nothing: Set WF = Nothing Erase Arr Cells(1, eCol + 3).Value = Timer - Timer_ '<=|' End Sub
- Dòng 3: kết quả báo số ô trống max trong dòng là 9 (từ AO3:AW3) nhưng mình kiểm tra thì số ô trống max trong dòng là 10 (từ BA3:BJ3).
- Dòng 5: kết quả báo số ô trống max trong dòng là 4 (từ E5:H5); nhưng mình kiểm tra thì số ô trống max trong dòng là 9 (từ O5:W5)
Đó là một vài trường hợp mong các bạn xem hộ giúp ạ! Xin cảm ơn các bạn!
(p/s: Mình rất xin lỗi vì phải đăng kí thêm tên đăng nhập này trên diễn đàn, do tên đăng nhập kia (hcl_pt) mình không thể gửi kèm theo file được! Mong được lượng thứ!)