Đánh số thứ tự theo điều kiện (1 người xem)

Liên hệ QC

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

buithanhlong

Thành viên hoạt động
Tham gia
8/6/10
Bài viết
176
Được thích
141
Nhờ các bác giúp em code đánh số thứ tự cho cột thu -chi, khi phát sinh số tiền thu hoặc chi tương ứng, em gửi kèm file. Rất mong được giúp đỡ. Trân trọng cám ơn
 

File đính kèm

Nhờ các bác giúp em code đánh số thứ tự cho cột thu -chi, khi phát sinh số tiền thu hoặc chi tương ứng, em gửi kèm file. Rất mong được giúp đỡ. Trân trọng cám ơn
Bạn thử nhập công thức này cho ô A7 rồi copy xuống thử xem sao:
PHP:
=IF(E7<>"";MAX($A$6:A6)+1;"")
Vận dụng công thức này sang cột kế bên.
 
Cám ơn Bác nhiều nhiều, em làm được rồi. Chúc Bác cùng gia đình luôn mạnh khỏe, hạnh phúc và thành đạt. Trân trọng
 
Lần chỉnh sửa cuối:
Cám ơn Bác nhiều nhiều, nhưng em đã nhập thử công thức, máy báo lỗi ở phần if(E7<>"", có phải công thức này là khi e7>0 phải không Bác. Mong hồi âm của Bác. Trân trọng cám ơn

Không phải >0 đâu bạn, bạn chú ý chỗ ; thử đổi thành , xem.
 
cÒN VẤN ĐỀ CỦA MÌNH THÌ NHƯ THẾ NÀY: MÌNH MUỐN ĐÁNH SỐ THỨ TỰ CHO CÁC SẢN PHẨM VÀ MÃ GIỐNG NHAU, VẬY MÌNH PHẢI LÀM THẾ NÀO
 

File đính kèm

Nhờ các bác giúp em code đánh số thứ tự cho cột thu -chi, khi phát sinh số tiền thu hoặc chi tương ứng, em gửi kèm file. Rất mong được giúp đỡ. Trân trọng cám ơn

Thử 1 số hàm này nhé:

Hàm 1:
- cột A, tại A7: =IF(E7<1,"",COUNTA($E$7:E7))
- Cột B, tại B7: =IF(F7<1,"",COUNTA($F$7:F7))

Hàm 2:
- cột A, tại A7: =IF(E7<>"",COUNTA($E$7:E7),"")
- Cột B, tại B7: =IF(F7<>"",COUNTA($F$7:F7),"")

Hàm 3:
- cột A, tại A7: =IF(E7="","",MAX($A$6:A6)+1)
- Cột B, tại B7: =IF(F7="","",MAX($B$6:B6)+1)
 
nếu không dùng lệnh trên excel mà dùng vba thì làm sao ? !$@!!
 
Nhờ các bác giúp em đánh số biên lai theo thời gian thu tiền. Em gửi kèm file. Mong các bác giúp đỡ. Em xin cám ơn.
 

File đính kèm

Em gửi lại file để các bác rõ hơn. Em muốn số biên lai được đánh theo ngày thu chứ không phải theo thứ tự.
 
Nhờ các bác giúp em đánh số biên lai theo thời gian thu tiền. Em gửi kèm file. Mong các bác giúp đỡ. Em xin cám ơn.

- Nếu Excel 2003 cột số biên lai, tại B8 bạn dùng hàm.

=COUNTIF($A$8:A8,A8)

- Nếu Excel 2010 cột số biên lai, tại B8 bạn dùng hàm.

=COUNTIFS($A$8:A8,A8)

Rồi Fill xuống, nếu không được thì thay dấu phẩy (,) thành dấu chấm phẩy (;)
 
Lần chỉnh sửa cuối:
nếu không dùng lệnh trên excel mà dùng vba thì làm sao ? !$@!!

Vì iêu cầu
Đưa File nên đây thì mới giúp bạn được chứ.
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
 
Anh em giúp mình code VBA đánh số thứ tự từ 1 đến số max 300 nhe. Thanks a lot
 

File đính kèm

PHP:
Option Explicit
Sub QuynhSoTTDen300()
 Dim J&
 
 For J = 4 To 3 + 300
    Cells(J, "A").Value = J - 3
 Next J
End Sub
 
Nếu dùng công thức này kéo xuống thì nó chỉ có 2 số lặp đi lặp lại là 1, 2 chứ không như em mong muốn.
 
- Nếu Excel 2003 cột số biên lai, tại B8 bạn dùng hàm.

=COUNTIF($A$8:A8,A8)

- Nếu Excel 2010 cột số biên lai, tại B8 bạn dùng hàm.
=COUNTIFS($A$8:A8,A8)
Rồi Fill xuống, nếu không được thì thay dấu phẩy (,) thành dấu chấm phẩy (;)


Em cám ơn bác nhiều! Nhưng cái này là đánh số thứ tự theo từng ngày thu, còn em muốn hỏi là: hôm nay em thu 8 biên lai thì có số từ 1 đến 8, ngày mai thu thêm 2 biên lai thì có số 9, 10.
 
Mọi người xem giúp em File đánh số thứ tự theo nhiều điều kiện.
Thanks!
Bạn thử công thức này tại [D2] =COUNTIF(B$2:B2,B2)

Xin lỗi các bạn vì chưa đọc kỹ đề bài!
 
Lần chỉnh sửa cuối:
Mọi người xem giúp em File đánh số thứ tự theo nhiều điều kiện.
Thanks!
Trước hết bạn chèn thêm dòng trống ở giữa dòng 1 và dòng 2 (Bây giờ dòng 2 sẽ không có dữ liệu bạn có thể ẩn nó tùy ý), tại ô D3 gõ công thức nhe sau:
Mã:
=IFERROR(MAX(INDEX(($B$2:$B2=B3)*($D$2:$D2),0))+IF(AND(COUNTIF($B$2:B2,B3)<>0,COUNTIF($E$2:E2,E3)<>0),0,1),1)
Fill CT xuống dưới.
 
Công thức của bạn không đúng, bạn xem lại giúp mình nhé
Thanks
Trước hết bạn chèn thêm dòng trống ở giữa dòng 1 và dòng 2 (Bây giờ dòng 2 sẽ không có dữ liệu bạn có thể ẩn nó tùy ý), tại ô D3 gõ công thức nhe sau:
Mã:
=IFERROR(MAX(INDEX(($B$2:$B2=B3)*($D$2:$D2),0))+IF(AND(COUNTIF($B$2:B2,B3)<>0,COUNTIF($E$2:E2,E3)<>0),0,1),1)
Fill CT xuống dưới.
 

File đính kèm

Công thức của bạn không đúng rùi, bạn xem lại nhé
Mượn ý tưởng của bạn giaiphap
bạn chèn thêm dòng trống ở giữa dòng 1 và dòng 2 , dòng 2 sẽ không có dữ liệu, tại ô D3 gõ công thức
=IFERROR(IF(A3&B3&C3<>A2&B2&C2,MAX(INDEX(($B$2:B2=B3)*($D$2:D2),0))+1,D2),1)
 
Lần chỉnh sửa cuối:
OK, mình đã thử công thức của bạn và được rồi
Cảm ơn bạn quan tậm và giúp đỡ
Thật là ngưỡng mộ các anh chị @$@!^%@$@!^%@$@!^%
Mượn ý tưởng của bạn giaiphap
bạn chèn thêm dòng trống ở giữa dòng 1 và dòng 2 , dòng 2 sẽ không có dữ liệu, tại ô D3 gõ công thức
=IFERROR(IF(A3&B3&C3<>A2&B2&C2,MAX(INDEX(($B$2:B2=B3)*($D$2:D2),0))+1,D2),1)
 
Bài này vẫn chưa ổn, nếu như tại [C4] thay tên Nguyễn Văn B thành Nguyễn Văn C thì cả 2 cách trên đều bị trật lấc

Với lại ô [D11] kết quả đánh số phải là 1 mới đúng chứ
 
Lần chỉnh sửa cuối:
Bài này vẫn chưa ổn, nếu như thay tên Nguyễn Văn B thành Nguyễn Văn C thì cả 2 cách trên đều bị trật lấc

Với lại ô [D11] kết quả đánh số phải là 1 mới đúng chứ
Bạn xem file của mình
ô D11 = 1
Mỗi phiếu chỉ có tên một người, nếu đổi tên Nguyễn Văn B thành Nguyễn Văn C thì số phiếu phải tự động nhảy một số
 

File đính kèm

Bạn xem file của mình
ô D11 = 1
Mỗi phiếu chỉ có tên một người, nếu đổi tên Nguyễn Văn B thành Nguyễn Văn C thì số phiếu phải tự động nhảy một số
Lại lắt léo thêm chút nữa .... hihi

Vẫn chưa chẩn bạn ah, tại [C7] bạn thử đổi tên Nguyễn Văn C thành Nguyễn Văn B xem.
 
Lần chỉnh sửa cuối:
Lại lắt léo thêm chút nữa .... hihi

Vẫn chưa chẩn bạn ah, tại [C7] bạn thử đổi tên Nguyễn Văn C thành Nguyễn Văn B xem.
Khi nhập liệu phải nhập liệu liên tục, phải nhập hết phiếu nầy mới được phép nhập tới phiếu khác, không được nhập dỡ dang phiếu thứ n lại nhập phiếu thứ n+1 sao đó quay lại nhập tiếp phiếu thứ n. Do đó nếu nhập Nguyễn Văn C , Nguyễn Văn B, Nguyễn Văn C thì đó là của 3 phiếu khác nhau
Thật ra đây là bài toán ngược với thực tế, các cột của đề bài có thể là kết quả xuất ra từ phần mềm căn cứ vào nhập liệu từng phiếu, tác giả muốn tính ngược lại để kiểm tra
 
Hi all
Mình muốn đánh số thứ tự như sau: ABC1902017 > ABC1912017 -> ABC1922017 thì làm như thế nào?mong các bạn giúp đỡ.
 

File đính kèm

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
 
Cảm ơn nhé! Cách của bạn nhanh hơn, nhẹ hơn!
Bài đã được tự động gộp:

Cảm ơn nhé! Cách của bạn nhanh hơn, nhẹ hơn!
Cho mình hỏi thêm chút nữa! Mình đang viết lại file để pha cắt thép tối ưu! Mà chưa nghĩ ra thuật toán! Mình mới chỉ có ý tưởng thế này! Nhập dữ liệu đầu vào , tự động ghép vào sao cho đủ số lượng, ít phải nối nhất! Bạn có lệnh hay phương pháp nào không? Mình cảm ơn!
 

File đính kèm

  • EC65CF55-18C1-418C-92C1-97B943DA620B.png
    EC65CF55-18C1-418C-92C1-97B943DA620B.png
    120.6 KB · Đọc: 10
Lần chỉnh sửa cuối:
Cảm ơn nhé! Cách của bạn nhanh hơn, nhẹ hơn!
Bài đã được tự động gộp:


Cho mình hỏi thêm chút nữa! Mình đang viết lại file để pha cắt thép tối ưu! Mà chưa nghĩ ra thuật toán! Mình mới chỉ có ý tưởng thế này! Nhập dữ liệu đầu vào , tự động ghép vào sao cho đủ số lượng, ít phải nối nhất! Bạn có lệnh hay phương pháp nào không? Mình cảm ơn!
Mình không làm về lĩnh vực này nên cũng không có kinh nghiệm, bạn cứ đăng mục mới lên, có ai biết thì giúp được bạn mà.
 

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

Back
Top Bottom