Xin hướng dẫn code đổi a, b, c thành 1, 2, 3

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

Trojan

Thành viên hoạt động
Tham gia
13/3/08
Bài viết
162
Được thích
78
Như mong muốn của tôi ở trên tiêu đề topic là đang có nhu cầu đổi a, b, c... thành 1, 2, 3... Mong các mem giúp đỡ code này với. Xin chân thành cảm ơn mọi sự giúp đỡ.
 
Lần chỉnh sửa cuối:
Ở trên là chỗ nào? 1 topic mới tinh mà lấp lửng vậy sao hiểu nổi?

Mình chưa hiểu đếm như thế nào chứ chỉ chuyển 26 chữ cái (Chữ thường và in như nhau thì dùng coong thức sau cũng được. Lưu ý đây là Font TCVN3 nha, font khác phải điều chỉnh lại)

=CODE(UPPER("A"))-64=1
=CODE(UPPER("a"))-64=1
 
Lần chỉnh sửa cuối:
Upvote 0
Như mong muốn của tôi ở trên đang có nhu cầu đổi a, b, c... thành 1, 2, 3... Mong các mem giúp đỡ code này với. Xin chân thành cảm ơn mọi sự giúp đỡ.

Dùng công thức là làm được, chưa cần dùng đến code đâu ?
Ví dụ từ B2:B27 bạn có các ký tự a -> z (chữ thường) thì tại C2 bạn nhập công thức =CODE(B2)-96 rồi fill xuống. Trường hợp là A -> Z (chữ hoa) thì công thức là =CODE(B2)-64
 
Upvote 0
Chẳng là cần dùng cho một thủ tục của tôi trong VBA
Cells(x, 5) = "=abc"
trong đó x= giá trị người dùng nhập vào là cột trong excel. Xử lý sao đây. Cảm ơn nhiều.
 
Upvote 0
Nếu đổi cột Excel thì mình viết hàm đổi như sau (Hàm này viết thường hay hoa đều được):

Mã:
Function TranCol(ByVal Cot As String) As Integer
Dim so, Kt, i, Hso()
Hso = Array(1, 26, 702)
Cot = UCase(Cot)
If Len(Cot) > 3 Or Len(Cot) = 0 Then
TranCol = 0
Exit Function
End If
For i = 0 To Len(Cot) - 1
Kt = Mid(Cot, Len(Cot) - i, 1)
so = so + (Asc(Kt) - 64) * Hso(i)
Next
TranCol = so
End Function

Và bạn thử với cột IV xem sao:

Mã:
Sub thu()
MsgBox TranCol("iv")
End Sub

Code của bạn viết như sau

Mã:
..............
tencot=Inputbox("Nhap tieu de cot:")
Cells(TranCol(tencot), 5) = "=abc"
..............

Mình không nhớ và không dùng Exc 2007 nên không biết Exc 2007 có bao nhiêu cột nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Không được anh à, tại sao tôi dùng thử hàm của anh nó lại phải =trancol("a") mới ra kết quả mà không phải là =trancol(a). Anh sửa giúp được không?
 
Upvote 0
Chẳng là cần dùng cho một thủ tục của tôi trong VBA
Cells(x, 5) = "=abc"
trong đó x= giá trị người dùng nhập vào là cột trong excel. Xử lý sao đây. Cảm ơn nhiều.
Dù người ta có nhập số hay chữ thì VBA nó cũng hiểu tuốt
Nếu x là cột thì phải viết vầy:
Cells(5, x) = "=abc"
(x đứng sau)
Với x = 10 hay x = "J" thì Excel vẫn hiểu Cells(5, x) <> cell J5
 
Upvote 0
Không được anh à, tại sao tôi dùng thử hàm của anh nó lại phải =trancol("a") mới ra kết quả mà không phải là =trancol(a). Anh sửa giúp được không?

Tôi mất công viết giúp bạn trong khi bạn chỉ việc thử thôi mà bạn không làm. Tiêu đề cột là String nên tham số của hàm cũng phải là string. Khi thử tôi cho nó luôn là chuỗi "a" khỏi mất công nhâp vào sheet rồi đưa vào hàm

Giờ bạn thử thế này. Tại ô A1 bạn gõ AA tại ô B1 bạn nhập =TranCol(A1) xem nó trả lời bạn ra sao.

Dù người ta có nhập số hay chữ thì VBA nó cũng hiểu tuốt
Nếu x là cột thì phải viết vầy:
Cells(5, x) = "=abc"
(x đứng sau)
Với x = 10 hay x = "J" thì Excel vẫn hiểu Cells(5, x) <> cell J5

Lúc đầu mình cũng nghĩ vậy vì vẫn viết ô C5 là Sheetn.Cells(5,"C")
Nhưng sau mình lại cho bạn ấy muốn đổi sang số để tính toán căn toạ độ ô.
 
Lần chỉnh sửa cuối:
Upvote 0
Lúc đầu mình cũng nghĩ vậy vì vẫn viết ô C5 là Sheetn.Cells(5,"C")
Nhưng sau mình lại cho bạn ấy muốn đổi sang số để tính toán căn toạ độ ô.
Muốn đổi cũng có gì khó đâu anh
Sheetn.Cells(5,"C") rồi, suy ra chỉ số cột là Sheetn.Cells(5,"C").Column
Nếu bắt buộc phải xây dựng hàm, ta cũng dựa vào giải thuật trên
PHP:
Function TranCol(ByVal Cot As String) As Long
  TranCol = Cells(1, Cot).Column
End Function
Quá đơn giản... Chắc ăn cái là nó luôn đúng ngay cả trên Excel 2007 (code của anh cho kết quả sai trên Excel 2007)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom