Hỏi code check cell rỗng giữa 02 range

Liên hệ QC

Tường_Vi

Thành viên tiêu biểu
Tham gia
19/4/10
Bài viết
482
Được thích
121
Nghề nghiệp
Luôn tìm kiếm một vị trí tốt hơn
Em làm code sau để check cells rỗng giữa 02 vùng
PHP:
Sub CHECK()
Dim Rng1 As Range
Dim Rng2 As Range
Dim Clls As Range
Dim dem As Long: Dim i As Long
Set Rng1 = Sheet1.[A1:A10]: Set Rng2 = Sheet1.[B1:B10]
For Each Clls In Rng1
    If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
    dem = dem + 1
    Workbooks.Add
    ActiveWorkbook.Activate
     For i = 1 To dem
     ActiveWorkbook.Sheets(1).Cells(i, 1) = "Sheet1!row" & Clls.Row & " empty row"
     Next
    
    End If
Next
End Sub

Code trên sau khi tìm thấy cells rỗng sẽ tạo một workbook mới, và chèn comment số dòng có cell bị rỗng vào sheet mới
nhưng do workbook.add nằm trong vòng lặp nên khi chạy xong code sẽ có n sheet = số kết quả rỗng tìm được được tạo ra

CHỉ giúp em đặt đúng chỗ code này để sao cho khi chạy xong code chỉ có mọt sheet mới được tạo và comment lại số dòng row bị rỗng

Em cám ơn
 

File đính kèm

Có thể xài thử cái ni

PHP:
Option Explicit
Sub CHECK()
 Dim Rng1 As Range, Rng2 As Range, Clls As Range
 Dim Dem As Long

 Set Rng1 = Sheet1.[A1:A10]: Set Rng2 = Rng1.Offset(, 1)
 Sheets.Add.Name = "GPE":           Sheets("GPE").[A1].Value = "Empty row in Sheet1:"
 
 For Each Clls In Rng1
    If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
      Dem = Dem + 1
      With Sheets("GPE").[a65500].End(xlUp).Offset(1)
         .Value = Clls.Row & "."
      End With
    End If
 Next
End Sub
 
Upvote 0
Bạn sửa lại như sau thử nhé
Sub CHECK()
Dim WB1, WB2 As Workbook
Dim Rng1, Rng2, Clls As Range
Dim dem, i As Long
Set WB1 = ThisWorkbook
Set WB2 = Workbooks.Add
Set Rng1 = WB1.Sheets("sheet1").Range("A1:A10")
Set Rng2 = WB1.Sheets("Sheet1").Range("B1:B10")
For Each Clls In Rng1
If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
dem = dem + 1
WB2.Activate
Sheets(1).Cells(dem, 1) = "Sheet1!row" & Clls.Row & " empty row"
End If
Next

End Sub
 
Upvote 0
Em làm code sau để check cells rỗng giữa 02 vùng
PHP:
Sub CHECK()
Dim Rng1 As Range
Dim Rng2 As Range
Dim Clls As Range
Dim dem As Long: Dim i As Long
Set Rng1 = Sheet1.[A1:A10]: Set Rng2 = Sheet1.[B1:B10]
For Each Clls In Rng1
    If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
    dem = dem + 1
    Workbooks.Add
    ActiveWorkbook.Activate
     For i = 1 To dem
     ActiveWorkbook.Sheets(1).Cells(i, 1) = "Sheet1!row" & Clls.Row & " empty row"
     Next
    
    End If
Next
End Sub
Code trên sau khi tìm thấy cells rỗng sẽ tạo một workbook mới, và chèn comment số dòng có cell bị rỗng vào sheet mới
nhưng do workbook.add nằm trong vòng lặp nên khi chạy xong code sẽ có n sheet = số kết quả rỗng tìm được được tạo ra

CHỉ giúp em đặt đúng chỗ code này để sao cho khi chạy xong code chỉ có mọt sheet mới được tạo và comment lại số dòng row bị rỗng

Em cám ơn
Làm xong vòng lập ta mới xét biến Dem... nếu nó > 0 thì hẳn Add Wb cũng chưa muộn
Còn cách của sư phụ ChanhTQ@ Dom thì... chẳng đếm được gì mà nó vẫn cứ Add
Tôi làm vầy:
PHP:
Sub CHECK()
  Dim Clls As Range, iBlk As Long, Arr()
  For Each Clls In Sheet1.Range("A1:A10")
    If WorksheetFunction.CountBlank(Clls.Resize(, 2)) Then
      iBlk = iBlk + 1
      ReDim Preserve Arr(1 To iBlk)
      Arr(iBlk) = "Sheet1!row" & Clls.Row & " empty row"
    End If
  Next
  If iBlk Then
    With Worksheets.Add(After:=Sheets(Sheets.Count))
      .Range("A1").Resize(iBlk).Value = WorksheetFunction.Transpose(Arr)
    End With
  End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sư Huynh NDU ơi
code này muội viết
PHP:
 If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
Ý là chỉ cần thỏa mãn 1 trong 2 cells bị rỗng thôi,

Code của Huynh chạy tốt nhưng trường hợp 02 cells bị rỗng nó cũng báo ạh
Bây giờ mình phải sửa như nào để nó chỉ lấy ra những trường hợp chỉ có một cells rỗng (1 trong 2 cột)?

P.s: Muội xin lỗi vì không nói rõ yêu cầu của code

Cám ơn HUynh
 
Upvote 0
Sư Huynh NDU ơi
code này muội viết
PHP:
 If Clls = "" And Clls.Offset(, 1) <> "" Or Clls <> "" And Clls.Offset(, 1) = "" Then
Ý là chỉ cần thỏa mãn 1 trong 2 cells bị rỗng thôi,

Code của Huynh chạy tốt nhưng trường hợp 02 cells bị rỗng nó cũng báo ạh
Bây giờ mình phải sửa như nào để nó chỉ lấy ra những trường hợp chỉ có một cells rỗng (1 trong 2 cột)?

P.s: Muội xin lỗi vì không nói rõ yêu cầu của code

Cám ơn HUynh
Thì sửa chổ này:
If WorksheetFunction.CountBlank(Clls.Resize(, 2)) then
Thành:
If WorksheetFunction.CountBlank(Clls.Resize(, 2)) = 1 then
 
Upvote 0
Web KT

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

Back
Top Bottom