Đánh số thứ tự phức tạp (3 người xem)

Liên hệ QC

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

mhung12005

Thành viên chậm chạm
Tham gia
20/7/11
Bài viết
1,598
Được thích
1,261
Nghề nghiệp
Đâu có việc thì làm
Chào mọi các anh, chị, em GPE,

Em có việc phải đánh số thứ tự mà mắc không biết dùng công thức nào mà đánh tay thì chắc mất vài ngày mất. Mong các anh chị giúp đỡ. Thanks.

Yêu cầu em đã ghi trong file đính kèm và cũng có dữ liệu ví dụ.
 
Về công thức thì mình không nghĩ là sẽ nhanh vì công thức với dữ liệu lớn thì lâu lắm, mình dùng VBA.

PHP:
Sub danhso()
Dim i As Integer, stt As Integer
i = 5
stt = 1
For i = 5 To 30000
    If Sheet1.Range("A" & i).Value = "" Then Exit For
    If Sheet1.Range("A" & i).Value <> Sheet1.Range("A" & i - 1).Value Then
        stt = 1
        Sheet1.Range("D" & i).Value = stt
    Else
        Sheet1.Range("D" & i).Value = stt
    End If
    stt = stt + 1
Next i
End Sub
Mình chỉ mới nghĩ ra được thế này thôi, với dữ liệu chừng 30000 dòng thì đánh số mất khoảng 4s, nhưng mà dùng vòng lặp for thì không thể đánh tới 40000 dòng được nên mong các cao thủ hướng dẫn thêm, hì hì.
 
Lần chỉnh sửa cuối:
Chào mọi các anh, chị, em GPE,

Em có việc phải đánh số thứ tự mà mắc không biết dùng công thức nào mà đánh tay thì chắc mất vài ngày mất. Mong các anh chị giúp đỡ. Thanks.

Yêu cầu em đã ghi trong file đính kèm và cũng có dữ liệu ví dụ.

Tại G5 bạn nhập công thức =IF(A5<>A4;1;G4+1) rồi Fill xuống.

Nếu thích viết code thì cũng viết theo cách này
Mã:
Sub STT()
    With Range([a5], [a65000].End(3)).Offset(, 3)
        .Value = "=IF(RC[-3]<>R[-1]C[-3],1,R[-1]C[3]+1)"
        .Value = .Value
    End With
End Sub
 
Lần chỉnh sửa cuối:
Tại G5 bạn nhập công thức =IF(A5<>A4;1;G4+1) rồi Fill xuống.

Nếu thích viết code thì cũng viết theo cách này
Mã:
Sub STT()
    With Range([a5], [a65000].End(3)).Offset(, 3)
        .Value = "=IF(RC[-3]<>R[-1]C[-3],1,R[-1]C[3]+1)"
        .Value = .Value
    End With
End Sub

Cảm ơn hai bác nhiều. Có vậy mà em cũng không nghĩ ra --=--
 
Web KT

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

Back
Top Bottom