- Trong thực tế khi lập trình VBA trong Excel đôi khi chúng ta cần chuyển Coumn Header từ dạng số sang dạng chữ để thao tác với Hàm Range , hoặc trường hợp ta thao tác với Cells thì có thể sử dụng dạng số chẳng hạn, thì hôm nay mình xin tổng hợp lại các cách để thực hiện việc đó:

=> Chuyển Column dạng chữ sang số

Function GetColumnNumber(ByVal strColumnName As String)
GetColumnNumber = Range(strColumnName & "1").Column
End Function
-------------------------------------------------------------------------------------
Function GetColumnNumber2(ByVal strColumnName As String)
    Dim i As Integer
    GetColumnNumber2 = 0
    For i = 1 To Len(strColumnName)
        GetColumnNumber2 = (Asc(UCase(Mid(strColumnName, i, 1))) - 64) + GetColumnNumber2 * 26
    Next i
End Function

=> Chuyển column dạng số sang dạng chữ

- Ta nhập vị trí của column (dạng số) vào ô B2:
=LEFT(REPLACE(CELL("address";OFFSET(A1;1;B2-1));1;1;"");FIND("$";REPLACE(CELL("address";OFFSET(A1;1;B2-1));1;1;""))-1)
=IF(MID(ADDRESS(3;B2;;;);3;1)="$";MID(ADDRESS(3;B2;;;);2;1);MID(ADDRESS(3;B2;;;);2;2))
- Viết hàm tự tạo:
Function GetColumnHeader(ByVal ColumnNumber As Integer)
GetColumnHeader = Replace(Replace(Cells(1, ColumnNumber).Address, "1", ""), "$", "")
End Function
--------------------------------------------------------------------------------------
Function GetColumnHeader2(ByVal intColumnNumber As Integer)
GetColumnHeader2 = Split(Cells(1, intColumnNumber).Address, "$")(1)
End Function
-----------------------------------------------------------------------------------------------
Function GetColumnHeader3(ByVal intColumnNumber As Integer) As String
    Dim bColDenom As Byte
    GetColumnHeader3 = ""
    Do
        bColDenom = ((intColumnNumber - 1) Mod 26)
        GetColumnHeader3 = Chr(bColDenom + 65) & GetColumnHeader3
        intColumnNumber = (intColumnNumber - bColDenom) \ 26
    Loop While intColumnNumber > 0
End Function
--------------------------------------------------------------------------------------------------------
Function GetColumnHeader4(intColumnNumber As Integer) As String
    If intColumnNumber > 26 Then
        GetColumnHeader4 = GetColumnHeader4((intColumnNumber - ((intColumnNumber - 1) Mod 26)) / 26) + Chr((intColumnNumber - 1) Mod 26 + 65)
    Else
        GetColumnHeader4 = Chr(intColumnNumber + 64)
    End If
End Function

Ý kiến của bạn

Mới hơn Cũ hơn