giúp code về xoá ký tự đầu và cuối của chuổi (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nguyetnga1992

Thành viên mới
Tham gia
14/4/17
Bài viết
28
Được thích
1
Xin chào các Thầy cộng động mạng giaiphapexcel

Hiện tại có em một data bên cột Ten Cua Tiem có ký tự " - " đầu và cuối ở mỗi chuỗi, nhờ các Thầy giúp em viết Macro xoá những dấu " - " ở đầu và cuối của chuỗi ạ..

Mong các Thầy giúp đỡ.. em cảm ơn ạ.!
 

File đính kèm

Xin chào các Thầy cộng động mạng giaiphapexcel

Hiện tại có em một data bên cột Ten Cua Tiem có ký tự " - " đầu và cuối ở mỗi chuỗi, nhờ các Thầy giúp em viết Macro xoá những dấu " - " ở đầu và cuối của chuỗi ạ..

Mong các Thầy giúp đỡ.. em cảm ơn ạ.!
sao bạn k sử dụng tính năng Find and Replace, chọn cả cột B rồi ấn Ctrl H
upload_2017-4-26_23-4-47.png
rồi chọn Replace all
 
Upvote 0
xoá những dấu " - " ở đầu và cuối của chuỗi
Mã:
Function XoaGach(ByVal txt As String) As String
Const deli As String = "-"
txt = WorksheetFunction.Trim(txt)
If Left(txt, 1) = deli Then txt = Right(txt, Len(txt) - 1)
If Right(txt, 1) = deli Then txt = Left(txt, Len(txt) - 1)
XoaGach = Trim(txt)
End Function
Công thức ở bảng tính:
PHP:
C2=xoaGach(B2)
copy xuống...
 
Upvote 0
Mã:
Function XoaGach(ByVal txt As String) As String
Const deli As String = "-"
txt = WorksheetFunction.Trim(txt)
If Left(txt, 1) = deli Then txt = Right(txt, Len(txt) - 1)
If Right(txt, 1) = deli Then txt = Left(txt, Len(txt) - 1)
XoaGach = Trim(txt)
End Function
Công thức ở bảng tính:
PHP:
C2=xoaGach(B2)
copy xuống...
Cái hàm này cũng dùng code cho mệt vậy? Tại sao không dùng hàm có sẳn?
 
Upvote 0
Upvote 0
Mã:
Function XoaGach(ByVal txt As String) As String
Const deli As String = "-"
txt = WorksheetFunction.Trim(txt)
If Left(txt, 1) = deli Then txt = Right(txt, Len(txt) - 1)
If Right(txt, 1) = deli Then txt = Left(txt, Len(txt) - 1)
XoaGach = Trim(txt)
End Function
Công thức ở bảng tính:
PHP:
C2=xoaGach(B2)
copy xuống...
Chào Thầy,
Cảm ơn Thầy đã giúp em ạ...
Thây vì dung Function em muốn dùng sub, macro sẽ chỉ đến cột "Ten Cua Tiem" và tự làm việc trên đó được không Thầy?

Mong Thầy giúp đỡ
 
Upvote 0
Chào Thầy,
Hiện tại dự án của em đang dùng toàn bộ là code nên em mới cần Code đó Thầy.. cảm ơn Thầy ạ!
Bạn muốn Sub thì viết tặng bạn Sub này, bạn cho chạy cột nào, kết quả cột nào thì bạn tùy chỉnh lại.
PHP:
Public Sub XoaDauCuoi()
Dim Arr(), I As Long, Tem As String
Arr = Range("B2", Range("B2").End(xlDown)).Value
For I = 1 To UBound(Arr)
    Tem = Trim(Arr(I, 1))
    If Left(Tem, 1) = "-" Then Tem = Mid(Tem, 2, Len(Tem))
    If Right(Tem, 1) = "-" Then Tem = Left(Tem, Len(Tem) - 1)
    Arr(I, 1) = Trim(Tem)
Next I
Range("C2").Resize(I - 1) = Arr
End Sub
 
Upvote 0
Dự án toàn là code mà lấy từng đoạn sub/function lung tung như thế này vào thì có thánh mới quản lý nổi.

Code cho dự án phải tuân thủ cách quản lý chặt chẽ. Ngừoi viết code khong bao giờ lấy ba cái sub/function như thế này nhét vào. Trừ phi đó là những sub/function rất chuẩn mực và dùng nhiều, tức là ngừoi viết code lấy trọn chúng cho vào thư viện. Ngoài trường hợp hàm thư viện ra thì tất cả các code phải tự viết, chỗ nào bí thì nhờ cộng đồng mạng chỉ dẫn cách giải quyết.
 
Upvote 0
Bạn muốn Sub thì viết tặng bạn Sub này, bạn cho chạy cột nào, kết quả cột nào thì bạn tùy chỉnh lại.
PHP:
Public Sub XoaDauCuoi()
Dim Arr(), I As Long, Tem As String
Arr = Range("B2", Range("B2").End(xlDown)).Value
For I = 1 To UBound(Arr)
    Tem = Trim(Arr(I, 1))
    If Left(Tem, 1) = "-" Then Tem = Mid(Tem, 2, Len(Tem))
    If Right(Tem, 1) = "-" Then Tem = Left(Tem, Len(Tem) - 1)
    Arr(I, 1) = Trim(Tem)
Next I
Range("C2").Resize(I - 1) = Arr
End Sub

Dòng này: Arr(I, 1) = Trim(Tem)
Nếu cuối cùng bạn phải trim nó thì thật ra dùng hàm mid để sửa hiệu quả hơn
If Left(Tem, 1) = "-" Then Mid(Tem, 1, 1) = " "
If Right(Tem, 1) = "-" Then Mid(Tem, Len(Tem), 1) = " "
Arr(I, 1) = Trim(Tem)
Hàm Mid dùng như thế không tạo chuỗi mới. Đến lúc Trim, code mới lấy chuỗi mới.
Theo code cũ của bạn thì mỗi lần Tem = là mỗi lần VBA phải tạo cho bạn chuỗi mới.
 
Upvote 0
Tìm không thấy nút sửa bài, đành phải viết nhiều cái. Xin lỗi, khong ai muốn câu số bài viết đâu nhé.

Bài thay thế "đầu đuôi" như thế này thì dùng RegEx là tiện nhất.
Trong cái pattern, cho số lượng space bao quanh cái hyphen (dấu trừ) tự ý, một kiểu đầu câu + một kiểu cuối câu; replace "" là xong.
 
Upvote 0
mượn giàn giáo code bạn Ba Tê ở trên
Mã:
Public Sub XoaDauCuoi()
Dim Arr(), I As Long, Tem As String
Arr = Range("B2", Range("B2").End(xlDown)).Value
With CreateObject("vbscript.regexp")
  .Global = True
  .Pattern = "^\s*-\s*|\s*-\s*$"
  For I = 1 To UBound(Arr)
    Arr(I, 1) = .Replace(Arr(I, 1), "")
  Next I
End With
Range("C2").Resize(I - 1) = Arr
Set rex = Nothing
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom