Chuyển số cột thành tên cột

Liên hệ QC

Mr Okebab

Ngon Ngất Ngây
Thành viên đã mất
Tham gia
6/8/06
Bài viết
3,260
Được thích
3,787
Mình có một vấn đề thế này :

Mình biết được cell đó ở cột thứ bao nhiêu, tuy nhiên lại muốn chuyển thành chữ :
VD : Cell ở cột thứ 2 , nghĩa là nó đang ở cột B

Vậy cột thứ n thì là chữ gì nhỉ ??

Định dùng qua mấy hàm CHR, ASCW, tuy nhiên lại hơi dài dòng.
Có cách nào ngắn gọn không nhỉ ??

Mong giúp đỡ.

Thân!
 
Nếu là hàm Excel thì tôi sẽ dùng ADDRESS... trong VBA có món này ko nhỉ?
 
Upvote 0
Em vẫn dùng cái này, bác xem thử; đúng tới số 702=ZZ
Mã:
Function NoToLetter(a As Long)
   If (a - 1) \ 26 <> 0 Then NoToLetter= Chr((a - 1) \ 26 + 64)
   NoToLetter= NoToLetter+ Chr((a - 1) Mod 26 + 65)
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc là có, Em ghi thử cái Macro nó ra thế này.
Mã:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 10/12/2007 by Khang
'

'
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "=ADDRESS(5,RC[-1],4)"
    Range("B9").Select
End Sub
 
Upvote 0
Cái này cũng là hàm của Excel thôi bạn ơi... đâu phải của VBA
 
Upvote 0
Em không rành lắm nhưng khi lập trình VBA có dùng được cái lệnh mà em record không bác?
 
Upvote 0
Thử với code này xem:
Mã:
Left(ActiveCell.Address(False, False), 1 - (ColNumber > 26))
 
Upvote 0
phamnhukhang đã viết:
Em không rành lắm nhưng khi lập trình VBA có dùng được cái lệnh mà em record không bác?
Tất nhiên là dc chứ... dùng dc tất cả các Function của Excel.. nhưng đó là gọi hàm từ Excel chứ ko phải chức năng VBA có sẳn
Bạn đễ ý như hàm MOD của Excel thì viết là
=MOD(So1,So2)
Trong VBA bạn sẽ gọi hàm này như sau:
FormulaR1C1 = "MOD(So1,So2)
Còn chức năng thật sự của VBA thì lại là
Mã:
So1 Mod So2
 
Upvote 0
Bác không còn nghi ngờ em I TỜ nữa nhé....
 
Upvote 0
anhtuan1066 đã viết:
Nếu là hàm Excel thì tôi sẽ dùng ADDRESS... trong VBA có món này ko nhỉ?
Bác ANHTUAN có thể nói cụ thể hơn không?
Ví dụ gõ cái gì vào cell A1 để biết tên của cột thứ 10?
Em chưa bao giờ xài ADDRESS nên hổng biết thử (hic, đừng cười)
Còn cái của PhamNhuKhang: =ADDRESS(5,RC[-1],4)
Copy và dán nó vào A1 thì Excel nó hổng hiểu cái gì hết!
 
Upvote 0
Mr Okebab đã viết:
VD : Cell ở cột thứ 2 , nghĩa là nó đang ở cột B
Vậy cột thứ n thì là chữ gì nhỉ ??
Bạn dùng hàm này:
Mã:
Function TenCot(cot As Integer) As String
TenCot = Left(Cells(1, cot).Address(0, 0), Len(Cells(1, cot).Address(0, 0)) - 1)
End Function
 
Upvote 0
PHP:
Function TenCot(cot As Integer) As String
TenCot = Left(Cells(1, cot).Address(0, 0), Len(Cells(1, cot).Address(0, 0)) - 1)
End Function
Xin cảm ơn bác Phamduylong. Rất chính xác bác à.
Em cũng đang rất cần cái này, chưa kịp hỏi thì Bap đã hỏi dùm...
 
Upvote 0
BNTT đã viết:

Bác ANHTUAN có thể nói cụ thể hơn không?
Ví dụ gõ cái gì vào cell A1 để biết tên của cột thứ 10?
Em chưa bao giờ xài ADDRESS nên hổng biết thử (hic, đừng cười)
Còn cái của PhamNhuKhang: =ADDRESS(5,RC[-1],4)
Copy và dán nó vào A1 thì Excel nó hổng hiểu cái gì hết!
Hàm ADDRESS:
Ví dụ bạn muốn biết địa chỉ của dòng 1 cột 10 thì:
ADDRESS(1,10)---> kết quả là $J$1
ADDRESS(1,10,2)---> kết quả là J$1
ADDRESS(1,10,3)---> kết quả là $J1
ADDRESS(1,10,4)---> kết quả là J1
Muốn biết địa chỉ cell hiện hành thì
=ADDRESS(row(),column())
Đây là đang nói hàm Excel nha... Còn cái của bạn Phamnhukhang cũng là hàm Excel, nhưng khi đưa vào VBA nó đã dc biên dịch lại thành vậy đấy
ANH TUẤN
 
Upvote 0
anhtuan1066 đã viết:
Hàm ADDRESS:
Ví dụ bạn muốn biết địa chỉ của dòng 1 cột 10 thì:
ADDRESS(1,10)---> kết quả là $J$1
ADDRESS(1,10,2)---> kết quả là J$1
ADDRESS(1,10,3)---> kết quả là $J1
ADDRESS(1,10,4)---> kết quả là J1
Muốn biết địa chỉ cell hiện hành thì
=ADDRESS(row(),column())
Cảm ơn bác ANHTUAN.
Cho em hỏi thêm chút
Hàm ADDRESS(row_num,column_num,abs_num,a1,sheet_text)
Mấy cái a1 sheet_text là cái gì vậy ?



w015.gif
 
Upvote 0
Cảm ơn các bác đã quan tâm, thực ra em vẫn tính được theo cách dùng hàm chr (như của AC), và cách dùng Address, tuy nhiên em cứ nghĩ rằng có 1 cách nào đó nó đơn giản hơn nhiều, nhưng mà em lại không biết (có thể là không có)
Giống như kiểu : Chuyển từ cột B sang cột 2
Range("B1").Column = 2

Cảm ơn các bác nhiều.

Thân!
 
Upvote 0
ADDRESS(row_num,column_num,abs_num,a1,sheet_text)
Row_num: Chỉ số dòng
Column_num: chỉ số cột
ads_num: lấy giá trị tương đối hay tuyệt đối của cell (giống giống với việc bấm F4 khi hiệu chỉnh tương đối, tuyệt đối)
a1: =TRUE sẽ hiển thị theo kiểu A1, =FALSE sẽ hiển thị theo kiểu R1C1 (giống trong Options\General.. chọn hay bõ chọn muc R1C1 Reference style)
Sheet_text: chỉ thị tên của Worksheet mà bạn muốn lấy địa chỉ
Ví dụ tại C20 bạn gõ công thức:
Mã:
=ADDRESS(ROW(),COLUMN(),4,TRUE,"Sheet2")
Sẽ cho kết quả là: Sheet2!C20
Tôi chỉ biết tương đối thế thôi... Có gì sai các bạn bổ sung thêm
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom