- 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 đó:
-------------------------------------------------------------------------------------
GetColumnNumber2 =
(Asc(UCase(Mid(strColumnName, i, 1))) - 64) + GetColumnNumber2 * 26
=> 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