đánh số thứ tự bằng vba

Liên hệ QC

minhhangg

Thành viên hoạt động
Tham gia
4/5/11
Bài viết
197
Được thích
61
Hỏi những gì trong file. Thank you trước.
Theo thứ tự tăng dần, có dữ liệu thì có STT, không có dữ liệu thì bỏ trống.
 

File đính kèm

  • STT. VBA.xls
    13.5 KB · Đọc: 545
Lần chỉnh sửa cuối:
Nói về NGẮN thì cái này mới là NGẮN đây:
PHP:
Sub STT()
  With Range([C7], [C65536].End(xlUp)).Offset(, -2)
    .Value = "=IF(RC[2]="""","""",COUNTA(R7C3:RC3))"
    .Value = .Value
  End With
End Sub
Ẹc... Ẹc...
Tuy nhiên, ĐƠN GIẢN không tương đương với TỐC ĐỘ (mảng là vô địch)
bác cho em hỏi vậy nếu muốn đánh số thứ tự ở cột G từ ô G2 đổ xuống cho những ô có đánh dấu ở cột H thì như nào ạ
em cảmơn
 
Upvote 0
bác cho em hỏi vậy nếu muốn đánh số thứ tự ở cột G từ ô G2 đổ xuống cho những ô có đánh dấu ở cột H thì như nào ạ
Thứ nhất: Bạn phải tìm ra dòng cuối của cột 'G' (cột cần đánh số TT)
Thiết lập vòng lặp duyệt từ [G2] cho đến ô 'G' thuộc dòng cuối vừa tìm
Trong khi duyệt thì nếu gặp những ô bên phải có đánh dấu thì thêm 1 vô biến đềm STT

Chúc bạn sớm thành công trong hôm nay!
 
Upvote 0
Em gặp vấn đề là:
Cột B (Sản phẩm) có 60.000 dòng. Cột A đánh số thứ tự nếu sản phẩm là "B"
Vì số lượng dòng quá lớn nên dùm hàm IF+Max sẽ làm file chạy rất chậm, nên viết VBA có nhanh hơn không ạ, nhờ các anh/ chị chỉ giúp code VBA
 

File đính kèm

  • Danh so Stt theo san pham.xlsm
    14.6 KB · Đọc: 11
Upvote 0
Em gặp vấn đề là:
Cột B (Sản phẩm) có 60.000 dòng. Cột A đánh số thứ tự nếu sản phẩm là "B"
Vì số lượng dòng quá lớn nên dùm hàm IF+Max sẽ làm file chạy rất chậm, nên viết VBA có nhanh hơn không ạ, nhờ các anh/ chị chỉ giúp code VBA
Các sản phẩm khác có đếm hay không?
 
Upvote 0
Các sản phẩm khác có đếm hay không?

Không anh, em cần hỗ trợ đếm theo 1 điều kiện có sẵn!
 
Upvote 0
Các sản phẩm khác có đếm hay không?

Không anh, em cần hỗ trợ đếm theo 1 điều kiện có sẵn!
Bạn thử code dưới đây
Mã:
Sub Stt()
Dim Nguon, Kq
Dim DieuKien
Dim i, j, k
With Sheet1
    Nguon = .Range("B2", .Range("B1000000").End(xlUp))
    DieuKien = "B"
    k = UBound(Nguon)
    ReDim Kq(1 To k, 1 To 1)
    For i = 1 To k
        If Nguon(i, 1) = DieuKien Then
            j = j + 1
            Kq(i, 1) = j
        End If
    Next i
    .Range("A2").Resize(k, 1).ClearContents
    .Range("A2").Resize(k, 1) = Kq
End With
End Sub
 
Upvote 0
Em gặp vấn đề là:
Cột B (Sản phẩm) có 60.000 dòng. Cột A đánh số thứ tự nếu sản phẩm là "B"
Vì số lượng dòng quá lớn nên dùm hàm IF+Max sẽ làm file chạy rất chậm, nên viết VBA có nhanh hơn không ạ, nhờ các anh/ chị chỉ giúp code VBA
Tại A2 thử sử dụng công thức sau xem có khá hơn không:

A2 =IF($B2:$B2<>"B","",COUNTIF($A$1:$A1,">0")+1)
 
Upvote 0
Bạn thử code dưới đây
Mã:
Sub Stt()
Dim Nguon, Kq
Dim DieuKien
Dim i, j, k
With Sheet1
    Nguon = .Range("B2", .Range("B1000000").End(xlUp))
    DieuKien = "B"
    k = UBound(Nguon)
    ReDim Kq(1 To k, 1 To 1)
    For i = 1 To k
        If Nguon(i, 1) = DieuKien Then
            j = j + 1
            Kq(i, 1) = j
        End If
    Next i
    .Range("A2").Resize(k, 1).ClearContents
    .Range("A2").Resize(k, 1) = Kq
End With
End Sub
Bạn thử code dưới đây
Mã:
Sub Stt()
Dim Nguon, Kq
Dim DieuKien
Dim i, j, k
With Sheet1
    Nguon = .Range("B2", .Range("B1000000").End(xlUp))
    DieuKien = "B"
    k = UBound(Nguon)
    ReDim Kq(1 To k, 1 To 1)
    For i = 1 To k
        If Nguon(i, 1) = DieuKien Then
            j = j + 1
            Kq(i, 1) = j
        End If
    Next i
    .Range("A2").Resize(k, 1).ClearContents
    .Range("A2").Resize(k, 1) = Kq
End With
End Sub

Cảm ơn anh nhiều, em đã chạy được được rồi ạ!
 
Upvote 0
Nói về NGẮN thì cái này mới là NGẮN đây:
PHP:
Sub STT()
  With Range([C7], [C65536].End(xlUp)).Offset(, -2)
    .Value = "=IF(RC[2]="""","""",COUNTA(R7C3:RC3))"
    .Value = .Value
  End With
End Sub
Ẹc... Ẹc...
Tuy nhiên, ĐƠN GIẢN không tương đương với TỐC ĐỘ (mảng là vô địch)
Thầy ơi cho e hỏi làm thế nào cho code này nó tự động chạy ạ!
tức là khi mình nhập dữ liệu xong thì cột stt nó tự động đánh luôn không phải run lại macro nữa ý ạ
 
Upvote 0
cái này thì phải làm trong phần sự kiện. Tốt nhất là bạn gửi file lên để mọi người còn giúp bạn.
E cảm ơn thầy giáo, e có file này e muốn lập báo cáo chi tiết dựa vào dữ liệu trên sheet "PS" để lập vào sổ chi tiết công nợ phải thu, công nợ phải trả, và sổ kho. e nhờ các thầy giúp e code với ạ,
e mới tập tành VBA, cũng học hỏi của mỗi thầy trên GPE mỗi người 1í
Bài đã được tự động gộp:

Nói về NGẮN thì cái này mới là NGẮN đây:
PHP:
Sub STT()
  With Range([C7], [C65536].End(xlUp)).Offset(, -2)
    .Value = "=IF(RC[2]="""","""",COUNTA(R7C3:RC3))"
    .Value = .Value
  End With
End Sub
Ẹc... Ẹc...
Tuy nhiên, ĐƠN GIẢN không tương đương với TỐC ĐỘ (mảng là vô địch)
E cảm ơn thầy giáo, e có file này e muốn lập báo cáo chi tiết dựa vào dữ liệu trên sheet "PS" để lập vào sổ chi tiết công nợ phải thu, công nợ phải trả, và sổ kho. e nhờ các thầy giúp e code với ạ,
 

File đính kèm

  • Hoc VBA.xlsm
    564.1 KB · Đọc: 4
  • Hoc VBA.xlsm
    564.1 KB · Đọc: 5
Upvote 0
E cảm ơn thầy giáo, e có file này e muốn lập báo cáo chi tiết dựa vào dữ liệu trên sheet "PS" để lập vào sổ chi tiết công nợ phải thu, công nợ phải trả, và sổ kho. e nhờ các thầy giúp e code với ạ,
Bạn đưa bài vào sai chủ đề rồi. Vui lòng bạn lập chủ đề mới và trình bày rõ bạn cần giúp những gì, ví dụ như sổ chi tiết công nợ phải thu, công nợ phải trả, và sổ kho dữ liệu được lấy như thế nào từ sheet!PS
 
Upvote 0
Nói về NGẮN thì cái này mới là NGẮN đây:
PHP:
Sub STT()
  With Range([C7], [C65536].End(xlUp)).Offset(, -2)
    .Value = "=IF(RC[2]="""","""",COUNTA(R7C3:RC3))"
    .Value = .Value
  End With
End Sub
Ẹc... Ẹc...
Tuy nhiên, ĐƠN GIẢN không tương đương với TỐC ĐỘ (mảng là vô địch)
bác ơi cái đoạn này, đúng với số thôi, nhưng nếu số nó chỉ dạng thập phân 2 số 00-99 sau đó phải thay đổi sang A1=> A9, hết A9 lại sang B1=> B9... tiếp tục đếm tiếp đến hết, thì làm sao hả bác.
 
Upvote 0
Web KT
Back
Top Bottom