Đánh số thứ tự theo chữ cái alphabe trong excel

Liên hệ QC
Hàm của mình:
=chusothutu(24), ket quả = X
Mã:
Public Function chusothutu(intnumber As Integer) As String
    Dim STR1 As String
    Dim STR2 As String
    Dim str3 As String
    Dim I As Integer
    Dim J As Integer
    Dim k As Integer
    Dim L As Integer
    Dim a As Double
    
    If logcoso(intnumber, 26) <= 1 Then
        chusothutu = Sothututhanhchucai(intnumber)
    Else
        If logcoso(intnumber - 26, 26) <= 2 Then
            If Int(intnumber / 26) = intnumber / 26 Then
                I = Int(intnumber / 26) - 1
            Else
                I = Int(intnumber / 26)
            End If
            STR1 = Sothututhanhchucai(I)
            k = I * 26
            J = intnumber Mod k
            STR2 = Sothututhanhchucai(J)
            chusothutu = STR1 & STR2
        Else
            If logcoso(intnumber - 26 - 26 * 26, 26) <= 3 Then
                str3 = Sothututhanhchucai((intnumber - 702) Mod 26)
                If Int((intnumber - 702) / 26 / 26) = (intnumber - 702) / 26 / 26 Then
                    STR1 = Sothututhanhchucai(Int((intnumber - 702) / 26 / 26))
                Else
                    STR1 = Sothututhanhchucai(Int((intnumber - 702) / 26 / 26) + 1)
                End If
                a = ((intnumber - 702) / 26)
                If a > Int(a) Then
                    a = Int(a) + 1
                Else
                    a = Int(a)
                End If
                k = a Mod 26
                STR2 = Sothututhanhchucai(k)
                chusothutu = STR1 & STR2 & str3
            Else
                chusothutu = "KO QUAN TAM"
            End If
        End If
    End If
End Function
Public Function Sothututhanhchucai(intso As Integer) As String

    Select Case intso
        Case 1
            Sothututhanhchucai = "A"
        Case 2
            Sothututhanhchucai = "B"
        Case 3
            Sothututhanhchucai = "C"
        Case 4
            Sothututhanhchucai = "D"
        Case 5
            Sothututhanhchucai = "E"
        Case 6
            Sothututhanhchucai = "F"
        Case 7
            Sothututhanhchucai = "G"
        Case 8
            Sothututhanhchucai = "H"
        Case 9
            Sothututhanhchucai = "I"
        Case 10
            Sothututhanhchucai = "J"
        Case 11
            Sothututhanhchucai = "K"
        Case 12
            Sothututhanhchucai = "L"
        Case 13
            Sothututhanhchucai = "M"
        Case 14
            Sothututhanhchucai = "N"
        Case 15
            Sothututhanhchucai = "O"
        Case 16
            Sothututhanhchucai = "P"
        Case 17
            Sothututhanhchucai = "Q"
        Case 18
            Sothututhanhchucai = "R"
        Case 19
            Sothututhanhchucai = "S"
        Case 20
            Sothututhanhchucai = "T"
        Case 21
            Sothututhanhchucai = "U"
        Case 22
            Sothututhanhchucai = "V"
        Case 23
            Sothututhanhchucai = "W"
        Case 24
            Sothututhanhchucai = "X"
        Case 25
            Sothututhanhchucai = "Y"
        Case 26
            Sothututhanhchucai = "Z"
        Case 0
            Sothututhanhchucai = "Z"
    End Select
End Function

Public Function logcoso(cuaB As Integer, cosoA As Integer) As Double
    logcoso = Log(cuaB) / Log(cosoA)
End Function

Anh em tham khảo nhé.
A/e có cách hay hơn cho mình ref nha.
 

File đính kèm

  • chu so thu tu.xlsm
    16.4 KB · Đọc: 10
Hàm của mình:
=chusothutu(24), ket quả = X
Mã:
Public Function chusothutu(intnumber As Integer) As String
    Dim STR1 As String
    Dim STR2 As String
    Dim str3 As String
    Dim I As Integer
    Dim J As Integer
    Dim k As Integer
    Dim L As Integer
    Dim a As Double
 
    If logcoso(intnumber, 26) <= 1 Then
        chusothutu = Sothututhanhchucai(intnumber)
    Else
        If logcoso(intnumber - 26, 26) <= 2 Then
            If Int(intnumber / 26) = intnumber / 26 Then
                I = Int(intnumber / 26) - 1
            Else
                I = Int(intnumber / 26)
            End If
            STR1 = Sothututhanhchucai(I)
            k = I * 26
            J = intnumber Mod k
            STR2 = Sothututhanhchucai(J)
            chusothutu = STR1 & STR2
        Else
            If logcoso(intnumber - 26 - 26 * 26, 26) <= 3 Then
                str3 = Sothututhanhchucai((intnumber - 702) Mod 26)
                If Int((intnumber - 702) / 26 / 26) = (intnumber - 702) / 26 / 26 Then
                    STR1 = Sothututhanhchucai(Int((intnumber - 702) / 26 / 26))
                Else
                    STR1 = Sothututhanhchucai(Int((intnumber - 702) / 26 / 26) + 1)
                End If
                a = ((intnumber - 702) / 26)
                If a > Int(a) Then
                    a = Int(a) + 1
                Else
                    a = Int(a)
                End If
                k = a Mod 26
                STR2 = Sothututhanhchucai(k)
                chusothutu = STR1 & STR2 & str3
            Else
                chusothutu = "KO QUAN TAM"
            End If
        End If
    End If
End Function
Public Function Sothututhanhchucai(intso As Integer) As String

    Select Case intso
        Case 1
            Sothututhanhchucai = "A"
        Case 2
            Sothututhanhchucai = "B"
        Case 3
            Sothututhanhchucai = "C"
        Case 4
            Sothututhanhchucai = "D"
        Case 5
            Sothututhanhchucai = "E"
        Case 6
            Sothututhanhchucai = "F"
        Case 7
            Sothututhanhchucai = "G"
        Case 8
            Sothututhanhchucai = "H"
        Case 9
            Sothututhanhchucai = "I"
        Case 10
            Sothututhanhchucai = "J"
        Case 11
            Sothututhanhchucai = "K"
        Case 12
            Sothututhanhchucai = "L"
        Case 13
            Sothututhanhchucai = "M"
        Case 14
            Sothututhanhchucai = "N"
        Case 15
            Sothututhanhchucai = "O"
        Case 16
            Sothututhanhchucai = "P"
        Case 17
            Sothututhanhchucai = "Q"
        Case 18
            Sothututhanhchucai = "R"
        Case 19
            Sothututhanhchucai = "S"
        Case 20
            Sothututhanhchucai = "T"
        Case 21
            Sothututhanhchucai = "U"
        Case 22
            Sothututhanhchucai = "V"
        Case 23
            Sothututhanhchucai = "W"
        Case 24
            Sothututhanhchucai = "X"
        Case 25
            Sothututhanhchucai = "Y"
        Case 26
            Sothututhanhchucai = "Z"
        Case 0
            Sothututhanhchucai = "Z"
    End Select
End Function

Public Function logcoso(cuaB As Integer, cosoA As Integer) As Double
    logcoso = Log(cuaB) / Log(cosoA)
End Function

Anh em tham khảo nhé.
A/e có cách hay hơn cho mình ref nha.
Nếu số >0 và số<= 16384
Mã:
Function ThuTuABC(ByVal iNum As Long) As String 'iNum <= 16384
  ThuTuABC = Split(Cells(1, iNum).Address(1, 0), "$")(0)
End Function
Số >0 và số <= 2,147,483,647
Mã:
Function ThuTuA_Z(ByVal iNum As Long) As String
  Dim N&, tmp$
  Do
    N = Int((iNum - 1) / 26)
    tmp = Chr(((iNum - 1) Mod 26) + 65) & tmp
    iNum = N
  Loop Until N = 0
  ThuTuA_Z = tmp
End Function
 
Lần chỉnh sửa cuối:
Các cao thủ làm ơn giúp đỡ em ạ. Trường hợp nếu em muốn đánh số thứ tự a,b,c nhưng chỉ đánh cho những cột TÔ ĐẬM (BOLD) thì làm cách nào ạ. Nhờ các bác hướng dẫn giúp ạ. Cảm ơn các bác ạ
 

File đính kèm

  • Đanh so thu tu a,b,c.xls
    64 KB · Đọc: 4
Số >0 và số <= 2,147,483,647
Mã:
Function ThuTuA_Z(ByVal iNum As Long) As String
  Dim N&, tmp$
  Do
    N = Int(iNum / 26)
    tmp = Chr(((iNum - 1) Mod 26) + 65) & tmp
    iNum = N
  Loop Until N = 0
  ThuTuA_Z = tmp
End Function
Anh ơi cho hỏi
=ThuTuA_Z(26)= AZ
cho hỏi tại sao nó không =Z mà = AZ
Em cảm ơn
 
A2=
=IF(E2<>"","",SUBSTITUTE(INDEX(ADDRESS(1,ROW(INDIRECT("1:100")),4),COUNTIF($E$2:E2,"")),1,""))
 
A2=
=IF(E2<>"","",SUBSTITUTE(INDEX(ADDRESS(1,ROW(INDIRECT("1:100")),4),COUNTIF($E$2:E2,"")),1,""))
Anh trai cho e hỏi cái ạ. Cũng trường hợp đánh số thứ tự a,b,c nhưng nếu mình chỉ đánh thứ tự vào những dòng không có số liệu, ví dụ. A Thi công cây dựng phần đường, b thi công cầu, còn những hạng mục thì ko đánh . Thì bác làm sao ạ. Xin bác cao thủ giúp đỡ em với ạ.
 
Nếu các cột khác không có dấu hiệu để phân biệt thì không làm được.
 
Web KT
Back
Top Bottom