Đánh số thứ tự theo điều kiện

Liên hệ QC
Mình có bài toán này nhờ mọi người giúp đỡ. Đánh số thứ tự theo họ và tên. Nếu cùng họ và tên và số chứng minh nhân dân thì đánh 1 số giống nhau như tệp đính kèm. Có code vba thì càng tốt ạ.
Cảm ơn các Pro!
 

File đính kèm

Bạn mở trang tính có số liệu lên & cho macro này chạy là được kết quả nào đó;
Sau đó bạn tự sửa nha:
PHP:
Sub SoTT()
 Dim Cls As Range:              Dim SoCM As Double, W As Long
 Dim HT As String, SoHS As String
 For Each Cls In Sheet1.Range(Sheet1.[a2], Sheet1.[a2].End(xlDown))
    If Cls.Value <> HT And Cls.Offset(, 1).Value <> SoCM Then
        HT = Cls.Value:         SoCM = Cls.Offset(, 1).Value
        W = W + 1
    Else
    End If
    Cls.Offset(, 4).Value = "GPE" & Right("00" & CStr(W), 3)
 Next Cls
End Sub
 
Phương án công thức:

E2, copy xuống:
=IF(COUNTIF($B$1:B2,B2)=1,MAX($E$1:E1)+1,LOOKUP(2,1/($B$1:B1=B2),$E$1:E1))
 
Bạn mở trang tính có số liệu lên & cho macro này chạy là được kết quả nào đó;
Sau đó bạn tự sửa nha:
PHP:
Sub SoTT()
 Dim Cls As Range:              Dim SoCM As Double, W As Long
 Dim HT As String, SoHS As String
 For Each Cls In Sheet1.Range(Sheet1.[a2], Sheet1.[a2].End(xlDown))
    If Cls.Value <> HT And Cls.Offset(, 1).Value <> SoCM Then
        HT = Cls.Value:         SoCM = Cls.Offset(, 1).Value
        W = W + 1
    Else
    End If
    Cls.Offset(, 4).Value = "GPE" & Right("00" & CStr(W), 3)
 Next Cls
End Sub
Cho mình hỏi chút nữa là. Nếu trường hợp muốn đánh số thứ tự từ 1 số của hàng đầu tiên (VD đánh số thứ tự từ số 10) thì phải thêm gì nữa nhỉ.
Thanks!
 
Em có trường hợp này ace giúp em với. Em muốn điền vào cột SỐ HÓA ĐƠN theo cùng 1 salon là cùng 1 số hóa đơn. Nhưng salon tiếp theo tự động tăng số (+1) so với số hóa đơn ban đầu ạ
 

File đính kèm

Vì iêu cầu

nhưng chưa thấy, vậy mình thực hiện cho cả 2 file có ở trên:

Đây là macro tăng số thứ tự ứng với file bài #1:
PHP:
Option Explicit
Const SoDong% = 3210
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Cls As Range
Dim Max_ As Double

If Not Intersect(Target, Range("E7:E" & SoDong)) Is Nothing Then
    Set Rng = Range("A7:A" & Target.Row - 1)
    For Each Cls In Rng
        If Cls.Value > Max_ Then Max_ = Cls.Value
    Next Cls
    Cells(Target.Row, "A").Value = 1 + Max_
ElseIf Not Intersect(Target, Range("F7:F" & SoDong)) Is Nothing Then
    Set Rng = Range("B7:B" & Target.Row - 1)
    For Each Cls In Rng
        If Cls.Value > Max_ Then Max_ = Cls.Value
    Next Cls
    Cells(Target.Row, "B").Value = 1 + Max_
End If
End Sub

Còn đây là macro tăng số đếm sản fẩm cùng mã (#5)
PHP:
 Option Explicit
Const SoDong% = 3210
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range
Dim MyAdd$, SF$, Max_%

If Not Intersect(Target, Range("B2:B" & SoDong)) Is Nothing Then
    Set Rng = Range("B1:B" & Target.Row - 1)
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        Target.Offset(, 1).Value = 1
    Else
        MyAdd = sRng.Address
        SF = sRng.Offset(, -1).Value
        Do
            If sRng.Offset(, -1).Value = SF Then Max_ = sRng.Offset(, 1).Value
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
        Target.Offset(, 1).Value = 1 + Max_
    End If
End If
End Sub
Bạn cho mình hỏi macro này sử dụng như thế nào ah... cám ơn bạn
 
Vì iêu cầu

nhưng chưa thấy, vậy mình thực hiện cho cả 2 file có ở trên:

Đây là macro tăng số thứ tự ứng với file bài #1:
PHP:
Option Explicit
Const SoDong% = 3210
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Cls As Range
Dim Max_ As Double

If Not Intersect(Target, Range("E7:E" & SoDong)) Is Nothing Then
    Set Rng = Range("A7:A" & Target.Row - 1)
    For Each Cls In Rng
        If Cls.Value > Max_ Then Max_ = Cls.Value
    Next Cls
    Cells(Target.Row, "A").Value = 1 + Max_
ElseIf Not Intersect(Target, Range("F7:F" & SoDong)) Is Nothing Then
    Set Rng = Range("B7:B" & Target.Row - 1)
    For Each Cls In Rng
        If Cls.Value > Max_ Then Max_ = Cls.Value
    Next Cls
    Cells(Target.Row, "B").Value = 1 + Max_
End If
End Sub

Còn đây là macro tăng số đếm sản fẩm cùng mã (#5)
PHP:
 Option Explicit
Const SoDong% = 3210
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range
Dim MyAdd$, SF$, Max_%

If Not Intersect(Target, Range("B2:B" & SoDong)) Is Nothing Then
    Set Rng = Range("B1:B" & Target.Row - 1)
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        Target.Offset(, 1).Value = 1
    Else
        MyAdd = sRng.Address
        SF = sRng.Offset(, -1).Value
        Do
            If sRng.Offset(, -1).Value = SF Then Max_ = sRng.Offset(, 1).Value
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
        Target.Offset(, 1).Value = 1 + Max_
    End If
End If
End Sub

Cần khi xóa dữ liệu tại cột bất cứ cột D, E hay F thì tự động ghi lại số thứ tự thì code phải sửa thế nào Thầy SA_DQ , Xin cảm ơn thầy
 
Dear A/c trên diễn đàn,

Em đang có một vướng mắt trong việc đánh số tứ tự tên mã có điều kiện theo vùng.
A/c trên diễn đàn có công thức nào chỉ giúp em với,
Các A/c xem file đính kèm cột A "Tên mã"
Em cảm ơn,
 

File đính kèm

Dear A/c trên diễn đàn,

Em đang có một vướng mắt trong việc đánh số tứ tự tên mã có điều kiện theo vùng.
A/c trên diễn đàn có công thức nào chỉ giúp em với,
Các A/c xem file đính kèm cột A "Tên mã"
Em cảm ơn,
Mã:
B8=IF(A8="","",IF(A7<>A8,A8,COUNTIF($A$8:A8,A8)-1))
 
Dear A/c trên diễn đàn,

Em đang có một vướng mắt trong việc đánh số tứ tự tên mã có điều kiện theo vùng.
A/c trên diễn đàn có công thức nào chỉ giúp em với,
Các A/c xem file đính kèm cột A "Tên mã"
Em cảm ơn,
1 cách(không phải là hàm)
PHP:
Sub STT()
    Dim i&, LR&
    LR = Cells(Rows.Count, 2).End(3).Row
    For i = 8 To LR
        If Not IsNumeric(Cells(i, 2)) Then
            Range("A" & i) = Range("B" & i)
        End If
    Next
    With Range("A9:A" & Range("B" & Rows.Count).End(3).Row)
        .SpecialCells(4).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
End Sub
 
1 cách(không phải là hàm)
PHP:
Sub STT()
    Dim i&, LR&
    LR = Cells(Rows.Count, 2).End(3).Row
    For i = 8 To LR
        If Not IsNumeric(Cells(i, 2)) Then
            Range("A" & i) = Range("B" & i)
        End If
    Next
    With Range("A9:A" & Range("B" & Rows.Count).End(3).Row)
        .SpecialCells(4).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
End Sub


Cảm ơn bác,
Mình đã làm được,
 
Em nhờ các bác giúp em mấy cái Macro điều dữ liệu và sửa dữ liệu này với ah, em không dùng From mà dùng nhập từ Sheet này sang Sheet khác ah
 

File đính kèm

chào các bạn, mình có 1 file cũng cần đánh số thứ tự theo group, tuy nhiên bảng đã có sẵn stt của các mặt hàng rồi, bgio mình nhập thêm số liệu thì đánh stt tiếp theo, tức là: cột G phát sinh mã hàng mới, thì đánh tiếp stt của mã đó ở cột H, stt tiếp theo của stt lớn nhất của mã đó đã có sẵn.
mình gửi kèm file mn xem giúp mình nhé
 

File đính kèm

chào các bạn, mình có 1 file cũng cần đánh số thứ tự theo group, tuy nhiên bảng đã có sẵn stt của các mặt hàng rồi, bgio mình nhập thêm số liệu thì đánh stt tiếp theo, tức là: cột G phát sinh mã hàng mới, thì đánh tiếp stt của mã đó ở cột H, stt tiếp theo của stt lớn nhất của mã đó đã có sẵn.
mình gửi kèm file mn xem giúp mình nhé
Thử:
Mã:
H226=TEXT(IFERROR(AGGREGATE(14,6,--$H$1:H225/($G$1:G225=$G226),1),)+1,"0000")
Enter, fill xuống.

Thân
 

File đính kèm

Mình cần đánh số thứ tự không liên tục nhưng ở những ô trống thì có công thứ trong đó. Mình phải dùng hàm j. Mong các bạn chỉ dùm
 
Web KT

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

Back
Top Bottom