đá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:
Bạn ơi, cho hỏi có phải đánh số thứ tự từ A7? Và số từ A7 là 1 và số cuối cùng sẽ nhận giá trị từ C7 phải không?

Ví dụ: C7 là 450 thì đánh số từ A7 là từ 1 đến 450 phải vậy không?
 
Upvote 0
Bạn ơi, cho hỏi có phải đánh số thứ tự từ A7? Và số từ A7 là 1 và số cuối cùng sẽ nhận giá trị từ C7 phải không?

Ví dụ: C7 là 450 thì đánh số từ A7 là từ 1 đến 450 phải vậy không?
VD: C7 có dữ liệu thì là 1
C8 có dữ liệu thì là 2
C10 có dữ liệu thì là 3
Có dữ liệu là có STT mà tăng dần bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
VD: C7 có dữ liệu thì là 1
C8 có dữ liệu thì là 2
C10 có dữ liệu thì là 3
Có dữ liệu là có STT mà tăng dần bạn.
Có đưa file lên thi ít ra cũng có tí dữ liệu để người ta còn mường tượng ---> 1 cái file trống không, ai biết gì đâu mà làm
(mặc dù tôi cũng hơi hiểu ý nhưng gặp dạng file đính kèm kiểu này thì cảm thấy rất bực mình)
 
Upvote 0
có đưa file lên thi ít ra cũng có tí dữ liệu để người ta còn mường tượng ---> 1 cái file trống không, ai biết gì đâu mà làm
(mặc dù tôi cũng hơi hiểu ý nhưng gặp dạng file đính kèm kiểu này thì cảm thấy rất bực mình)
sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry. File đây
 

File đính kèm

  • STT. VBA.xls
    16 KB · Đọc: 798
Upvote 0
VD: C7 có dữ liệu thì là 1
C8 có dữ liệu thì là 2
C10 có dữ liệu thì là 3
Có dữ liệu là có STT mà tăng dần bạn.

Tôi chẳng hiểu gì cả! Vậy A1:A5000 để làm gì vậy? Tại sao C7 là 1 mà C10 là 3, lẽ ra là 4 chứ nhỉ?
 
Upvote 0
Chính xác công thức thì OK, nhưng em muốn code anh NDU ơi!. Cảm ơn
Thì vầy đi:
PHP:
Sub STT()
  Dim SrcRng As Range, Arr, i As Long, n As Long
  On Error Resume Next
  Set SrcRng = Range([C7], [C65536].End(xlUp))
  Arr = SrcRng.Value
  For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) <> "" Then
      n = n + 1
      Arr(i, 1) = n
    End If
  Next
  SrcRng.Offset(, -2).Value = Arr
End Sub
 
Upvote 0
sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry,sorry. File đây

Bạn thử code này xem:

PHP:
Sub FillSeries()  
Application.ScreenUpdating = False  
Dim Rng As Range, Cls As Range  
Set Rng = Range(Sheet1.[C7], Sheet1.[C5000].End(xlUp))  
Rng.Offset(, -2).ClearContents  
For Each Cls In Rng
    If Cls <> "" Then      Cls.Offset(, -2) = WorksheetFunction.Max(Rng.Offset(, -2)) + 1  
Next  
Application.ScreenUpdating = True
End Sub




Sub FillSeries()
Application.ScreenUpdating = False
Dim Rng As Range, Cls As Range
Set Rng = Range(Sheet1.[C7], Sheet1.[C5000].End(xlUp))
Rng.Offset(, -2).ClearContents
For Each Cls In Rng
If Cls <> "" Then Cls.Offset(, -2) = WorksheetFunction.Max(Rng.Offset(, -2)) + 1
Next
Application.ScreenUpdating = True
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Xin nhắc bạn: Nếu cần đoạn code để đánh số thứ tự thì bài của bạn để đây là sai BOX!

ThungRac.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Đúng là nhìn vào code thì ngắn hơn,
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)
 
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, vậy muốn đánh số thứ tự theo ngày thì thế nào bác. Thêm 1 cột ngày nữa, và STT đánh theo ngày đó, hết ngày trước thì end và sang ngày mới thì đánh lại từ đầu.
 
Upvote 0
Em biết là sai box như bác SA_DQ cảnh báo tại #15. Tuy nhiên nội dung Topic này đang gần giống cái em cần nên em xin phép chen ngang hỏi 1 câu

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)

Em cần đánh mã vụ việc (như đánh số thứ tự) bằng VBA. Tuy nhiên do mã vụ việc gồm cả phần chữ và số nên em chưa biết cách làm. Mong các bác giúp đỡ.
Yêu cầu như sau:
- Dùng VBA để tạo mã vụ việc.
- Ngay khi nhập vụ việc, mã cần hiện ngay.
- Mã vụ việc gồm chữ và số
- Phần chữ thì cố định, phần số thì tăng dần đều (Phần chữ là mã của đơn vị lập vụ việc)
- Mã vụ việc không dựa và vào Stt được do yêu cầu mã luôn cố định, trong khi Stt khi sẽ thay đổi khi AutoFilter

Xin xem thêm file đính kèm

Chân thành cảm ơn!
 

File đính kèm

  • VDD.xls
    18 KB · Đọc: 214
Upvote 0
Thì Bạn sửa lại code trên của ndu theo dữ liệu của bạn.

Mã:
Sub STT()
  With Range([b5], [b65536].End(xlUp)).Offset(, 1)
    .Value = "=IF(RC2="""","""",""CC_"" & COUNTA(R5C2:RC2))"
  End With
End Sub
 
Upvote 0
Thì vầy đi:
PHP:
Sub STT()
  Dim SrcRng As Range, Arr, i As Long, n As Long
  On Error Resume Next
  Set SrcRng = Range([C7], [C65536].End(xlUp))
  Arr = SrcRng.Value
  For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) <> "" Then
      n = n + 1
      Arr(i, 1) = n
    End If
  Next
  SrcRng.Offset(, -2).Value = Arr
End Sub

Quá nhanh luôn, mình có 7000 dòng, minh tự viết
for i =1 to dongcuoi
sau đó gán
cell cần đánh số =i
thì nó chay khoảng 2- phút gì đó
Mình dùng cách này thì nó ngốn hết chưa đầy 1s
Ai giỏi mà dùng mảng trong báo cáo nhâp xuất tồn thì tuyệt vời
 
Upvote 0
Có ai giúp mình về Arr với hoặc có cách nào tốt hơn
Mình tự viết nó lủng củng và chạy như rùa

Cụ thể: Có 2 sheet, DanhMucHangHoa và TìnhTồn
DanhMucHangHoa gồm Mahang, TenHang, ThươngHieu, DonGia....
Mục đích: Chuyển dữ liệu theo ThuongHieu (Hãng) sang sheet TinhTon
Khó khăn: Các cột ở 2 sheet không ở vị trí tương đương
bên DanhMucHangHoa STT, MaHang, TenHang, GiaNhap,ThongTinh, ThuongHieu,GiaLe....
Khi dua qua MaHang, TenHang, GiaNhap, GiaXuat, TonDau, NhapTrongKy, XuatTrongKy,TonCuoi, ThuongHieu....
Cách của mình đang dùng (chậm):
sort dữ liêu theo ThuongHieu, đê chúng nằm cùng nhau sau đó
Tạo 2 function xác định dòng đầu và dòng cuối của 1 giá trị cần lọc theo ThuongHieu
Cuối cùng dùng dạng sau:(HH là DanhMuchanghoa)
sodong=DongCuoi(eR)-DongDau(bR)
With NXT
.Range("A11", "B" & soDong + 11) = HH.Range("B" & bR, "C" & eR).Value 'MA HANG & TEN HANG
.Range("C11", "D" & soDong + 11) = HH.Range("H" & bR, "I" & eR).Value 'Don Gia te
.Range("F11", "F" & soDong + 11) = HH.Range("J" & bR, "J" & eR).Value 'gia le
.Range("K11", "K" & soDong + 11) = HH.Range("E" & bR, "E" & eR).Value 'thuong hieu
.Range("G11", "G" & soDong + 11) = HH.Range("K" & bR, "K" & eR).Value 'ton
 
Upvote 0
Đã viết được Code thì tất nhiên bạn có file để chạy Code đó rồi; Vậy sao bạn không chuyển file lên diễn đàn mà đưa Code lên làm chi cho mệt vậy?
 
Upvote 0
Web KT
Back
Top Bottom