Tăng giá trị của biến trước vòng lặp. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

huhumalu

Thành viên tích cực
Tham gia
20/10/09
Bài viết
825
Được thích
782
Nhờ các anh chị trong diễn đàn xử lý giúp.
Em viết code chèn dòng trắng vào trong bảng dữ liệu. Mỗi lần chạy qua ô dữ liệu trên cột B nếu thấy hàng trên và hàng dưới khác nhau thì chèn vào 1 dòng trắng. Như vậy khối dữ liệu sẽ tăng thêm 1 dòng, em đã thêm k=k+1 nhưng dĩ nhiên là máy chỉ hiểu giá trị k trước vòng For.
Nhờ anh chị gỡ rối giúp. Cảm ơn các anh chị.

Mã:
Sub addblankrow()
Dim i, k As Integer
k = Range("B65536").End(xlUp).Row - Range("B20").Row + 1
For i = 1 To k
    If Range("B20").Offset(i - 1, 0) <> Range("B20").Offset(i, 0) Then
    Range("B20").Offset(i, 0).EntireRow.Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    k = k + 1
    i = i + 1
    End If
Next i
End Sub
Xin add thêm file để các anh chị tiện điều chỉnh.
 

File đính kèm

Lần chỉnh sửa cuối:
Nhờ các anh chị trong diễn đàn xử lý giúp.
Em viết code chèn dòng trắng vào trong bảng dữ liệu. Mỗi lần chạy qua ô dữ liệu trên cột B nếu thấy hàng trên và hàng dưới khác nhau thì chèn vào 1 dòng trắng. Như vậy khối dữ liệu sẽ tăng thêm 1 dòng, em đã thêm k=k+1 nhưng dĩ nhiên là máy chỉ hiểu giá trị k trước vòng For.
Nhờ anh chị gỡ rối giúp. Cảm ơn các anh chị.

Mã:
Sub addblankrow()
Dim i, k As Integer
k = Range("B65536").End(xlUp).Row - Range("B20").Row + 1
For i = 1 To k
    If Range("B20").Offset(i - 1, 0) <> Range("B20").Offset(i, 0) Then
    Range("B20").Offset(i, 0).EntireRow.Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    k = k + 1
    i = i + 1
    End If
Next i
End Sub
Chắc có >1 cách để làm việc của bạn, nhưng mà có cái file đính kèm ví dụ cho nó trực quan thì chắc là nhanh có kết quả hơn đó bạn
 
Upvote 0
Gỡ rối cho bạn cũng khó lắm thay!
Vì bạn không nói là khác nhau ở cột nào?
Trong macro của bạn thì bạn đè cột [B:b] ra xử lí; Nhưng theo mình biết thì trong cột này hai ô liên tiếp không có trị trong cái nào giống cái nào
Vậy thì bạn làm cách này:
(*) Các dòng đang có dữ liệu thì wính số lẽ (vô cột trống liền kề bên fải): 1, 3, 5,. . . .
(*) Các dòng rỗng bên dưới đánh số chẵn; 2, 4, 6,. . . .
Sau đó đè cột này ra mà xếp lại

Chuyện này có thể thao tác bằng tay cũng nhanh; Nhưng cần nâng cao trình VBA thì bạn thử ngay đi & chúc thành công!
 
Upvote 0
Mình có add thêm file tại #1 bạn xem lại giúp.
Thanks !
Bạn thử cách này xem sao
Mã:
Sub addblankrow_1()
Dim i
With Sheet2
i = 21
Do While .Range("B" & i) <> ""
    If .Range("B" & i) <> .Range("B" & i - 1) Then
        .Rows(i).Insert Shift:=xlDown
        i = i + 2
    End If
Loop
End With
End Sub
 
Upvote 0
Bạn thử cách này xem sao
Mã:
Sub addblankrow_1()
Dim i
With Sheet2
i = 21
Do While .Range("B" & i) <> ""
    If .Range("B" & i) <> .Range("B" & i - 1) Then
        .Rows(i).Insert Shift:=xlDown
        i = i + 2
    End If
Loop
End With
End Sub
Cảm ơn bạn, nhìn cách làm nhẹ nhàng quá.
 
Upvote 0
Bạn cho k bằng số to to và :) rồi xét điều kiện
Range("B20").Offset(i, 0) = "" thì thoát vòng lặp (Exit For)
 
Upvote 0
Web KT

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

Back
Top Bottom