Đánh STT theo nhiều điều kiện (1 người xem)

  • Thread starter Thread starter Thien
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
113
Chào các bạn.

Mình đang gặp nhiều khó khăn trong việc đánh số thứ tự theo file đính kèm.
Sẽ có nhiều người nói mình sử dụng TK không hợp lý nhưng ở đây xin miễn bàn mà vui lòng giúp Tôi đánh số thứ tự theo quy luật sao:
- TK 5111, 5113, 3388, 331 nếu có số đuôi là 3C, CH, NH, CT thì sẽ đánh STT theo thứ tự từ trên xuống (44GS0607 : phần GS0607 sẽ thay đổi theo tháng).
- Các TK còn lại sẽ được đánh số thứ tự theo từng tài khoản.
(vui lòng xem qua file gửi kèm).

Hiện tại nếu dùng công thức thì Tôi đã phải sử dụng rất nhiều cột phụ để làm (Rất phi khoa học & dở).
Nếu dùng VBA thì đang không biết làm.

Mong các bạn giành ít thời gian giúp tôi, việc này đang rất cần mà khối lượng công việc lớn cần giải quyết gấp.

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

Thân chào.
 

File đính kèm

Thien đã viết:
Chào các bạn.

Mình đang gặp nhiều khó khăn trong việc đánh số thứ tự theo file đính kèm.
Sẽ có nhiều người nói mình sử dụng TK không hợp lý nhưng ở đây xin miễn bàn mà vui lòng giúp Tôi đánh số thứ tự theo quy luật sao:
- TK 5111, 5113, 3388, 331 nếu có số đuôi là 3C, CH, NH, CT thì sẽ đánh STT theo thứ tự từ trên xuống (44GS0607 : phần GS0607 sẽ thay đổi theo tháng).
- Các TK còn lại sẽ được đánh số thứ tự theo từng tài khoản.
(vui lòng xem qua file gửi kèm).

Hiện tại nếu dùng công thức thì Tôi đã phải sử dụng rất nhiều cột phụ để làm (Rất phi khoa học & dở).
Nếu dùng VBA thì đang không biết làm.

Mong các bạn giành ít thời gian giúp tôi, việc này đang rất cần mà khối lượng công việc lớn cần giải quyết gấp.

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

Thân chào.

Tớ chưa hiểu mục đích cả nó là gì cả ??? Có thể nói rõ hơn hoặc cho một ít VD được không ??

Rồi các cột có ý nghĩa gì, tớ chỉ biết mỗi cột đầu tiên là NGÀY--=0

Có phải là đánh số TT của Chứng từ ghi sổ không ???

Thân!
 
Upvote 0
Thien đã viết:
Chào các bạn.

Mình đang gặp nhiều khó khăn trong việc đánh số thứ tự theo file đính kèm.
Sẽ có nhiều người nói mình sử dụng TK không hợp lý nhưng ở đây xin miễn bàn mà vui lòng giúp Tôi đánh số thứ tự theo quy luật sao:
- TK 5111, 5113, 3388, 331 nếu có số đuôi là 3C, CH, NH, CT thì sẽ đánh STT theo thứ tự từ trên xuống (44GS0607 : phần GS0607 sẽ thay đổi theo tháng).
- Các TK còn lại sẽ được đánh số thứ tự theo từng tài khoản.
(vui lòng xem qua file gửi kèm).
Bạn xem lại yêu cầu đánh số thứ tự mã tài khoản trong File của bạn vì tôi thấy có một vài chỗ khó hiểu như sau:
+Trong dòng đầu tiên: Mã tài khoản 5113MB3C thỏa mãn yêu cầu là TK 511.3 và tận cùng là 3C lẽ ra phải được đánh số thứ tự là 1GS0607 nhưng trong File của bạn lại đánh là 1M ? ...
+ Các tài khoản còn lại bạn nêu quy luật đánh mã chưa rõ nên gây rất nhiều khó khăn cho việc viết Code VBA


 
Upvote 0
Dear All.
Thành thật xin lỗi do gấp quá không nói rõ nên gây khó khăn trong việc viết code. Mình xin bổ sung như sau:
- Cột A là ngày, cột B là cột đánh STT, cột C là cột mã TK.
- Những TK sau sẽ đánh số TT theo từng TK 5113D-3C, 5113D-CH, 5113MB3C, 5113MBCH, 5113QC-3C, 5113QC-CH, 5113TKE3C,5113TKECH, 333113C, 33311CH, 33311CTY.
Lưu ý: khi dòng 1 là 5113MB3C được đánh STT là 1M thì dòng 333113C kế tiếp cũng sẽ đánh STT 1M.
- Các TK còn lại sẽ Đánh STT từ trên xuống dưới với ví dụ: 3GS0607
+ Số 3 là thứ tự thứ 3.
+ 0607 là tháng & năm của Cột A.

Mong các bạn thông cảm.

Thân chào
 
Upvote 0
Mời bạn dùng thử file sau
 

File đính kèm

Upvote 0
Dear nvson
Thật không biết cảm ơn bạn thế nào. Bạn đã giúp mình giải quyết nhanh công việc.

Anh cho hỏi 1 chút nếu muốn đánh STT ở cột B thì phải chỉnh lại thông số ở Offset(0, 1) phải không?.

Chân thành cảm ơn.
Thân chào.
 
Upvote 0
Đúng rồi đó bạn ạ.
Bạn thay đổi hết Offset(X, 1) = Offset(X, -1)
Mã:
Public Sub DanhSTT_2()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim cell_i
Dim dem As Long, demD As Long, demM As Long, demQ As Long, demT As Long, demCTY As Long
Dim dem_i As Long, k As Long
For Each cell_i In Range("C5:C" & Range("C5536").End(xlUp).Row)
    Select Case UCase(cell_i)
        Case "5113D-3C", "5113D-CH"
            demD = demD + 1
            cell_i.Offset(0, -1).Value = demD & "D"
        Case "5113MB3C", "5113MBCH"
            demM = demM + 1
            cell_i.Offset(0, -1).Value = demM & "M"
        Case "5113QC-3C", "5113QC-CH"
            demQ = demQ + 1
            cell_i.Offset(0, -1).Value = demQ & "Q"
        Case "5113TKE3C", "5113TKECH"
            demT = demT + 1
            cell_i.Offset(0, -1).Value = demT & "T"
        Case "5111CTY", "33311CTY"
            demCTY = demCTY + 1
            cell_i.Offset(0, -1).Value = demCTY & "CTY"
            
        Case "333113C", "33311CH", "33311CTY"
            If UCase(cell_i.Offset(-1, 0)) = "5113D-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113D-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113MB3C" Or UCase(cell_i.Offset(-1, 0)) = "5113MBCH" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113TKE3C" Or UCase(cell_i.Offset(-1, 0)) = "5113TKECH" Then
                k = 1
                Do
                    k = k + 1
                Loop While UCase(cell_i.Offset(-k, 0).Value) = UCase(cell_i.Offset(-1, 0).Value)
                cell_i.Offset(0, -1).Value = cell_i.Offset(-k + 1, -1).Value
            Else
                If UCase(cell_i.Value) = UCase(cell_i.Offset(-1, 0).Value) Then
                    cell_i.Offset(0, -1).Value = Val(cell_i.Offset(-1, -1).Value) + 1 & Right(cell_i.Offset(-1, -1).Value, Len(cell_i.Offset(-1, -1).Value) - Len(CStr(Val(cell_i.Offset(-1, -1).Value))))
                End If
            End If
        Case ""
        Case Else
            dem = dem + 1
            cell_i.Offset(0, -1).Value = dem & "GS" & Format(Month(cell_i.Offset(0, -2).Value), "00") & Right(Year(cell_i.Offset(0, -2).Value), 2)
    End Select
Next cell_i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Tôi có một file cấu trúc như sau:
Ngay-----LoaiCT---SoCtGoc---SoCT
01/10/07----PT-----A123-----PT07/10/001
------------PT-----A124-----PT07/10/002
Trong đó Ngay---LoaiCT---SoCtGoc là nhập vào.
Tôi muốn SoCT sẽ đánh số như sau: PT07/10/001..."PT" là loại CT, theo như file kèm.
- Nếu lọai CT như nhau, ngày = nhau, SoCtGoc = nhau thì SoCt như nhau.
- Nếu lọai CT như nhau, ngày <> nhau or SoCtGoc <> nhau thì SoCt lấy max
Nếu sang tháng khác thì SoCT trở về 1.
Nhờ các bạn làm 1 Sub, hay tốt hơn là Function. Cám ơn nhiều.
 

File đính kèm

Upvote 0
ThuNghi đã viết:
Nhờ các bạn làm 1 Sub, hay tốt hơn là Function. Cám ơn nhiều.

Theo ý em thì nên dùng Sub, vì dùng Function thì tới đâu có tới đó, nhưng Record nhiều, từ 1000 trở lên là bác đã mệt rồi, vì nó phải quét toàn bộ Data mà.
 
Upvote 0
Thì about 1000 record, tại vì dùng ct mảng thì nặng, hy vọng dùng VBA nhẹ hơn. Dùng Sub cũng được. Có cái Function nào mà khi đánh xong thì tự đưa về giá trị? VD: sum(A1:A2)=3 thì hiện ra luôn là 3 chớ không hiện sum(A1:A2), a1=1; a2=2. Không dùng change.
 
Upvote 0
Bác ThuNghi thử đoạn code sau:
Mã:
Option Explicit
Public Sub DanhSTT()
On Error Resume Next
Dim i As Long, j As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 2 To Cells(65536, "B").End(xlUp).Row
    If Cells(i, "B").Value <> Cells(i - 1, "B").Value Then
        For j = i - 1 To 2 Step -1
            If Cells(j, "B").Value = Cells(i, "B").Value Then Exit For
        Next j
        Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & Format(Val(Right(Cells(j, "D").Value, 3)) + 1, "000")
    ElseIf Cells(i, "A").Value = Cells(i - 1, "A").Value And Cells(i, "C").Value = Cells(i - 1, "C").Value Then
        Cells(i, "D").Value = Cells(i - 1, "D").Value
    Else
        Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & Format(Val(Right(Cells(i - 1, "D").Value, 3)) + 1, "000")
 
    End If
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
(Nếu OK thì coi đó là quà mừng SN bác nhé!)
 
Upvote 0
Anh nvson oi, cái này chưa đúng trong mấy trường hợp cuối. các sô lớn hơn = 1000

P/S. àh , không phải, sang tháng mới thì phải bắt đầu lại.
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn, bạn bổ sung thêm giúp.
NVSON ơi, sang tháng mới thì TT lại về 1, với lại nên dùng sự kiện gì để khi cột A, B, C có dữ liệu thì D tự động số TT.
Thêm phần này, nếu Di là TxtSoCT trong form thì làm thế nào lấy SoCT max theo điều kiện trên.
 
Lần chỉnh sửa cuối:
Upvote 0
Bác tải file sau nhé!
Khi muốn đánh số chứng từ toàn bộ thì chạy Macro DanhCT_ALL
Khi nhập dữ liệu trong vùng A:C thì sẽ tự đánh số Chứng từ.
 

File đính kèm

Upvote 0
Gấp quá cho sen 1 chút.
Tôi có hàm này
Mã:
Function NgayThangNam(ByVal bDate As Date) As String
Dim Ngay As Byte, Thang As Byte
Dim Nam As Integer
Ngay = Day(Date)
Thang = Month(Date)
Nam = Year(Date)
NgayThangNam = "Ngaøy " & Ngay & " thaùng " & Thang & " naêm " & Nam
End Function
.

Nhưng nó chỉ đọc ngày date thôi. Tôi muốn nó sẽ đọc đúng ngay ô chứa ngày mình chọn. (ví dụ: 10/01/06 sẽ ra Ngày 10 tháng 01 năm 2006).

Bạn giúp nhé.

Thân chào.
 
Upvote 0
To Thien:
Bạn sửa lại chút xíu:
Mã:
....
Ngay = Day(bDate)
Thang = Month(bDate)
Nam = Year(bDate)
....

To ThuNghi:
ThuNghi đã viết:
Còn cái này để làm gì vậy.
Bác đọc bài #14 nhé!
 
Upvote 0
Thiện sửa lại, khai NgayThangNam(ByVal bDate As Date) As String
Ngay = Day(bDate)
Thang = Month(bDate)
Nam = Year(bDate)
 
Upvote 0
Hiểu rồi do DanhSTT khác Public Sub DanhCT(dong1, dong2).
Cám ơn nhiều.
 
Upvote 0
Các bạn cho hỏi thêm một chút.
Ở những dòng đã có số thứ tự thì giữ nguyên còn những dòng không có thì dùng code của nvson.

Loai hoai cải tiến code của nvson hoài không được.

Các bạn giúp nhé.

Thân chào.
 
Upvote 0
Nhờ các anh chị giúp cho các hàm đánh số thứ tự. NHư tôi thường làm các hàm sau: =IF($B3"";MAX($A$3:A3)+1;"") hoặc =IF(SUBTOTAL(3;$B$3:$B$38)=COUNTA($B$3:$B$38);MAX($A$2:A2)+1;COUNTIF($F$2:F3;IF(F3"";F3;""))) ...vvNhưng trương hợp Tại cột A2 đánh I và đến cật A10 đánh II nó sẽ đánh số thứ tự từ 1-7 còn từ cột A11 trở đi lại bắt đầu từ 1 đến số nào đó khi chúng ta đánh mục tiếp theo.Với tôi nghĩ đây cũng là đánh số thứ tự có điều kiện Vậy không biết có phạm vào diễn dàn khôngXin chân thành cảm ơn
 
Upvote 0
Bạn up file cái, chưa hiểu yêu cầu. Nên có phần muốn làm là thế nào.
To: Thien
Bạn chuyển thành Function CTMax2 của Mr OkeBab trong phần thực form.
 
Upvote 0
Dear Thunghi

vẫn sử dụng code cùa nvson đã giúp mình nhưng chỉnh lại 1 chút. Những dòng nào đã có STT thì thôi, còn những dòng trống thì đánh thứ tự như code của bạn son đã giúp mình.

Gấp quá. bạn thông cảm nha.

Thân chào.
 
Upvote 0
Option Explicit

Public Sub DanhCT(dong1, dong2)
On Error Resume Next 'nvson
Dim i As Long, j As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For i = dong1 To dong2
If Cells(i, "B").Value <> Cells(i - 1, "B").Value Then
For j = i - 1 To 2 Step -1
If Cells(j, "B").Value = Cells(i, "B").Value Then Exit For
Next j
If Month(Cells(i, "A").Value) <> Month(Cells(j, "A").Value) Then
Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & "001"
Else
Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & Format(Val(Right(Cells(j, "D").Value, 3)) + 1, "000")
End If
ElseIf Cells(i, "A").Value = Cells(i - 1, "A").Value And Cells(i, "C").Value = Cells(i - 1, "C").Value Then
Cells(i, "D").Value = Cells(i - 1, "D").Value
ElseIf Month(Cells(i, "A").Value) <> Month(Cells(i - 1, "A").Value) Then
Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & "001"
Else
Cells(i, "D").Value = Cells(i, "B").Value & Right(Year(Cells(i, "A").Value), 2) & "/" & Month(Cells(i, "A").Value) & "/" & Format(Val(Right(Cells(i - 1, "D").Value, 3)) + 1, "000")
End If
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Bạn thêm sự kiện, nếu ngày thay đổi và lọai CT thay đổi tự động update số CT. Như vậy sẽ hay hơn,
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("A:C")) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, "A").Value) And Not IsEmpty(Cells(Target.Row, "B").Value) And Not IsEmpty(Cells(Target.Row, "C").Value) Then '
Call DanhCT(Target.Row, Target.Row)
Else
Cells(Target.Row, "D").Value = ""
End If
End If
End Sub
Hay là bạn thêm đọan này vào
For i = dong1 To dong2
If Cells(i, "D").Value <> "" Then i = i + 1
If Cells(i, "B").Value <> Cells(i - 1, "B").Value Then
 
Upvote 0
Với Trần Văn Bình: Nếu bạn đánh số thứ tự trong cột A thì tiêu chí gì đễ gõ các ký tự La Mã? Bạn phải nêu dc quy luật thì mới đánh số thứ tự dc... Còn ko thì post file lên, trong đó đã dc đánh số thứ tự bằng tay!
ANH TUẤN
 
Upvote 0
He he bạn không hiểu ý mình rùi.
Mã:
Public Sub DanhSTT_2()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim cell_i
Dim dem As Long, demD As Long, demM As Long, demQ As Long, demT As Long, demCTY As Long
Dim dem_i As Long, k As Long
For Each cell_i In Range("C5:C" & Range("C5536").End(xlUp).Row)
    Select Case UCase(cell_i)
        Case "5113D-3C", "5113D-CH"
            demD = demD + 1
            cell_i.Offset(0, -1).Value = demD & "D"
        Case "5113MB3C", "5113MBCH"
            demM = demM + 1
            cell_i.Offset(0, -1).Value = demM & "M"
        Case "5113QC-3C", "5113QC-CH"
            demQ = demQ + 1
            cell_i.Offset(0, -1).Value = demQ & "Q"
        Case "5113TKE3C", "5113TKECH"
            demT = demT + 1
            cell_i.Offset(0, -1).Value = demT & "T"
        Case "5111CTY", "33311CTY"
            demCTY = demCTY + 1
            cell_i.Offset(0, -1).Value = demCTY & "CTY"
            
        Case "333113C", "33311CH", "33311CTY"
            If UCase(cell_i.Offset(-1, 0)) = "5113D-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113D-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113MB3C" Or UCase(cell_i.Offset(-1, 0)) = "5113MBCH" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113TKE3C" Or UCase(cell_i.Offset(-1, 0)) = "5113TKECH" Then
                k = 1
                Do
                    k = k + 1
                Loop While UCase(cell_i.Offset(-k, 0).Value) = UCase(cell_i.Offset(-1, 0).Value)
                cell_i.Offset(0, -1).Value = cell_i.Offset(-k + 1, -1).Value
            Else
                If UCase(cell_i.Value) = UCase(cell_i.Offset(-1, 0).Value) Then
                    cell_i.Offset(0, -1).Value = Val(cell_i.Offset(-1, -1).Value) + 1 & Right(cell_i.Offset(-1, -1).Value, Len(cell_i.Offset(-1, -1).Value) - Len(CStr(Val(cell_i.Offset(-1, -1).Value))))
                End If
            End If
        Case ""
        Case Else
            dem = dem + 1
            cell_i.Offset(0, -1).Value = dem & "GS" & Format(Month(cell_i.Offset(0, -2).Value), "00") & Right(Year(cell_i.Offset(0, -2).Value), 2)
    End Select
Next cell_i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Vẫn giữ nguyên cách đánh STT như trên nhưng thêm 1 điều kiện nữa là những dòng nào đã có STT rùi thì thôi, còn chưa có thì đánh STT như code trên.
hiện tại mình đang không biết viết thêm đoạn code vô chỗ nào & đoạn code đó viết ra sao cũng chưa biết.

Bạn giúp nhé.

Thân.

PS: Mình học chậm quá, loai hoai từ sáng tời giờ vẫn chưa giải quyết được.Buồn quá.
 
Upvote 0
Bạn thử xem sao!
Mã:
Public Sub DanhSTT_2()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim cell_i
Dim dem As Long, demD As Long, demM As Long, demQ As Long, demT As Long, demCTY As Long
Dim dem_i As Long, k As Long
For Each cell_i In Range("C5:C" & Range("C5536").End(xlUp).Row)
[COLOR=red][B]    If IsEmpty(cell_i) Then
[/B][/COLOR]        Select Case UCase(cell_i)
            Case "5113D-3C", "5113D-CH"
                demD = demD + 1
                cell_i.Offset(0, -1).Value = demD & "D"
            Case "5113MB3C", "5113MBCH"
                demM = demM + 1
                cell_i.Offset(0, -1).Value = demM & "M"
            Case "5113QC-3C", "5113QC-CH"
                demQ = demQ + 1
                cell_i.Offset(0, -1).Value = demQ & "Q"
            Case "5113TKE3C", "5113TKECH"
                demT = demT + 1
                cell_i.Offset(0, -1).Value = demT & "T"
            Case "5111CTY", "33311CTY"
                demCTY = demCTY + 1
                cell_i.Offset(0, -1).Value = demCTY & "CTY"
                
            Case "333113C", "33311CH", "33311CTY"
                If UCase(cell_i.Offset(-1, 0)) = "5113D-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113D-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113MB3C" Or UCase(cell_i.Offset(-1, 0)) = "5113MBCH" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-3C" Or UCase(cell_i.Offset(-1, 0)) = "5113QC-CH" Or UCase(cell_i.Offset(-1, 0)) = "5113TKE3C" Or UCase(cell_i.Offset(-1, 0)) = "5113TKECH" Then
                    k = 1
                    Do
                        k = k + 1
                    Loop While UCase(cell_i.Offset(-k, 0).Value) = UCase(cell_i.Offset(-1, 0).Value)
                    cell_i.Offset(0, -1).Value = cell_i.Offset(-k + 1, -1).Value
                Else
                    If UCase(cell_i.Value) = UCase(cell_i.Offset(-1, 0).Value) Then
                        cell_i.Offset(0, -1).Value = Val(cell_i.Offset(-1, -1).Value) + 1 & Right(cell_i.Offset(-1, -1).Value, Len(cell_i.Offset(-1, -1).Value) - Len(CStr(Val(cell_i.Offset(-1, -1).Value))))
                    End If
                End If
            Case ""
            Case Else
                dem = dem + 1
                cell_i.Offset(0, -1).Value = dem & "GS" & Format(Month(cell_i.Offset(0, -2).Value), "00") & Right(Year(cell_i.Offset(0, -2).Value), 2)
        End Select
[B][COLOR=red]    End If
[/COLOR][/B]Next cell_i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Bạn thay dòng này:
Mã:
If IsEmpty(cell_i) Then
bằng dòng này:
Mã:
If IsEmpty(cell_i.Offset(0, -1)) Then
 
Upvote 0
Vậy em phải làm phiền anh rồi

anhtuan1066 đã viết:
Với Trần Văn Bình: Nếu bạn đánh số thứ tự trong cột A thì tiêu chí gì đễ gõ các ký tự La Mã? Bạn phải nêu dc quy luật thì mới đánh số thứ tự dc... Còn ko thì post file lên, trong đó đã dc đánh số thứ tự bằng tay!
ANH TUẤN


Em gữi file đính kèm nhờ các bác giúp cho
 

File đính kèm

Upvote 0
Bạn xem STT như thế này đã hợp lý chưa nha!
ANH TUẤN
 

File đính kèm

Upvote 0
Chào cả nhà.
Nếu dùng VBA sẽ không dùng đến cột phụ phải không anhtuan1066.
Anh làm hay nhưng mở nhiều cột phụ quá.

TC.
 
Upvote 0
tôi nghĩ VBA chắc làm ngon lành... nhưng tùy bạn ấy thôi.. Với dử liệu của bạn ấy như thế thì tôi cũng nghĩ dc đến thế... hi.. hi.. Vả lại, quan trọng nhất là bạn ấy tiếp thu dc...
Tôi nghĩ vẩn có cách giãm bớt cột phụ đấy nhưng như thế thì quá vắn tắt, e rằng sẽ khó hiểu!
ANH TUẤN
 
Upvote 0
Uh... nếu ko muốn cột phụ thì.. chìu bạn luôn.. nhưng mà công thức sẽ khá phức tạp đấy nhé! Với lại cái bảng chuyển số thành số La Mã thì vẫn phải có (tôi ko biết có hàm nào làm việc này trực tiếp ko)...
Bạn xem file nhé
ANH TUẤN
 

File đính kèm

Upvote 0
Anh ơi vẩn còn cột phụ đấy.
Tại cột C chính là cột phụ đó anh "=IF(LEN(C4)<2;VLOOKUP(CODE(C4)-64;D2R;2;0);RIGHT(C4;LEN(C4)-2)*1)"
 
Upvote 0
Bạn xem có đúng ý bạn không nhé! Không dùng cột nào phụ cả.
Chỉ mới có làm đến VIII, bạn tự triển khai tiếp.
 

File đính kèm

Upvote 0
Trời... cột C sao là cột phụ dc chứ... trong file rõ ràng bạn yêu cầu làm 2 cột B và C cơ mà...
Vậy bây giờ bạn muốn làm cột nào? Nói chính xác 1 lần thôi... Còn như file của ThuNghi chẳng hạn, tuy ko có cột phụ nhưng bạn cũng ko thể đánh số thêm nữa... Chỉ đánh dc đến IIIV là hết.. vậy bạn tính sao đây?
 
Upvote 0
I, II, ..., IX, X...Bạn muốn thêm vào bao nhiêu cũng được.
Bổ sung thêm 1 file TT cột A,B.C hòan tòan độc lập và không thêm cột phụ nào.
Sẽ làm thêm 1 file = VBA nữa.
 

File đính kèm

Upvote 0
ThuNghi ơi cho hỏi: Theo như trong file bạn thì số La Mã chỉ đến 10 thôi đúng ko?
Nếu nó mà lên đến số 100 thì.. chắc chết... Tôi nghĩ ngoài cột phụ ra thì chỉ còn cách làm 1 add-in thôi
ANH TUẤN
 
Upvote 0
Thay công thức ở C4
=IF($E4="",ROMAN(SUMPRODUCT(($E$4:$E4="")*1),1),COUNTIF((INDIRECT("a"&iBlank&":a"&ROW())),">"&0))
Hàm Roman(number) trả về I,..X
 
Upvote 0
Đấy.. đấy.. quan trọng là chổ ROMAN ấy... lúc đầu tôi cũng đã tìm nhưng ko ra.. cám ơn ThuNghi phát hiện
ANH TUẤN
 
Upvote 0
anhtuan1066 đã viết:
Đấy.. đấy.. quan trọng là chổ ROMAN ấy... lúc đầu tôi cũng đã tìm nhưng ko ra.. cám ơn ThuNghi phát hiện
ANH TUẤN

Bác này có vẻ lười dùng Excel Help nhỉ ???
Bác chỉ cần nhập :
  1. Arabic
  2. Converts number
  3. Roman
Là ra ngay thôi mà.

Thân!
 
Upvote 0

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

Back
Top Bottom