Code Đánh Số Thứ Tự Theo Dữ Liệu Phát Sinh ?

  • Thread starter thanhphuongvip
  • Ngày gửi
T

thanhphuongvip

Guest
Nói bên kia không hợp lệ nên mình xin phép hỏi ở đây!

Đây là file Hóa đơn bán hàng, mình muốn viết code cho cột số thứ tự nhảy tự động khi nhân viên nhập mã hàng ở cột B, cột B nhập tới đâu thì cột A sẽ nhảy số thứ tự đến đó, và cái khó ở đây là dữ liệu ở cột B có thể ko liên tục mà bị ngắt quãng mà số TT vẫn chạy đúng, như hình (mục đích ngắt quãng như vậy để dễ nhìn nếu xuất hàng một lần nhiều nhóm hàng khác nhau).

Bạn cần đăng nhập để thấy đính kèm


Xin đạ tạ!
 

ducdoom

Yêu THVBA
Xin chào!
bác thử code này xem nhé!
- tại sự kiện worksheet change ta xác định vùng thay đổi sẽ là cột B,
- lặp từ ô A2 cho đến last row của cột B
- dùng biến STT để lưu giá trị số thứ tự (bắt đầu từ 1), Nếu ô B mà khác rỗng thì điền giá trị STT vào ô A =>rồi tăng STT lên 1
- sẽ luôn luôn phải xoá tất cả STT cũ khi cập nhật dữ liệu mới
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rangeToChange As Range
Set rangeToChange = Range("B:B")

Dim i As Integer, STT As Integer
STT = 1

If Not Application.Intersect(rangeToChange, Range(Target.Address)) Is Nothing Then   'nếu ô B đựoc điền dữ liệu
    Range("A2:A" & Rows.Count).ClearContents 'Xoá STT cũ đi
    For i = 2 To Range("B" & Rows.Count).End(xlUp).Row    'lặp từ dòng 2 đến dòng cuối
        If Range("B" & i).Value <> "" Then     'nếu B khác rỗng
            Range("A" & i).Value2 = STT          'điền số thứ tự
            STT = STT + 1              'tăng STT lên 1 để cho ô kế tiếp
        End If
    Next i
End If

End Sub
 

Euler

Administrator
Thành viên BQT
Với bài toán này, chẳng có sự kiện xóa dòng, nếu chạy code bắt sự kiện rồi tính toán lại số thứ tự, e rằng dùng dao hơi to rồi.
Nếu chỉ đơn thuần nhập dữ liệu trên cột B và hiện số thứ tự trên cột A.
Như thế thì anh kéo công thức roạt một cái trên cột A là xong. Còn trên cột B anh thích nhập dòng nào thì nhập ạ.
Bạn cần đăng nhập để thấy đính kèm
 
Top