Tách kí tự ra khỏi chuỗi không thống nhất

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Mọi người cho em hỏi chút ạ!
Em có chuỗi kí tự ở cột A e muốn lọc ra web như cột B thì có phương án nào tốn ít công thức nhất không ạ. Hiện tại e làm ra kết quả mà cần phải lặp đi lặp lại công thức nhiều lần quá ạ. Điểm chung của chuỗi kí tự trên là đều " " có dấu cách trước web. Có cách nào FIND " " từ phải qua trái không ạ

Công thức :

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))
Kỹ năng giải quyết vấn đề hiệu quả
Khóa học SprinGO phù hợp

Kỹ năng giải quyết vấn đề hiệu quả

Mô tả Nội dung Đánh giá Tài nguyên KỸ NĂNG GIẢI QUYẾT VẤN ĐỀ HIỆU QUẢHiểu đúng vấn đề là một nửa của giải...

Xem khóa học
★★★★★ 5 ★ 1 👤 5 ▥ 0
Quảng cáo

Bạn nên đọc

5 Responses

  1. hands says:

    Bạn Thử Function sau cho 2 trang web . com và . vn

    Function ExtractWeb(ByVal text As String) As String
        Dim RE As Object, Matches As Object
        Set RE = CreateObject("VBScript.RegExp")
        RE.Global = True
        RE.Pattern = "((([A-z,0-9])*.com)|(([A-z,0-9])*.vn))"
        If RE.Test(text) Then
         Dim match As Object
            Set Matches = RE.Execute(text)
           For Each match In Matches
                ExtractWeb = ExtractWeb & ", " & match.value
            Next
                ExtractWeb = Mid(ExtractWeb, 3)
        End If
        Set Matches = Nothing
        Set RE = Nothing
    End Function
  2. hands says:

    Không dùng mảng thì "chơi" kiểu này cũng được nè:

    Public Sub Tach()
    Dim Rng As Range, Cll As Range
    Set Rng = Range("A2", Range("A50000").End(xlUp))
        For Each Cll In Rng
            Cll.Offset(, 2) = Mid(Cll, InStrRev(Cll, " ") + 1, Len(Cll))
        Next Cll
    Set Rng = Nothing
    End Sub

    Vòng lặp thì thế này:

    Sub TachMail()
        Dim DongDau, KTrong, DongCuoi As Long
        DongCuoi = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
        For DongDau = 2 To DongCuoi
            KTrong = InStrRev(Cells(DongDau, 1), " ")
            Cells(DongDau, 2).Value = Mid(Cells(DongDau, 1), KTrong)
        Next
    End Sub
  3. hands says:

    test thử :

    MsgBox ExtractWeb("bai viet duoc trich dan tu website www.giaip--hapexcel.com.vn")

    cú pháp RE.Pattern = "((()*.com)|(()*.vn))" gần như tương đương với .Pattern = "w*(.com|.vn)"
    Nếu đơn giản vậy " Điểm chung của chuỗi kí tự trên là đều " " có dấu cách trước web. Có cách nào FIND " " từ phải qua trái không ạ" thì giản đơn dùng công thức của pác Ndu.
    Trường hợp phức tạp hơn, tổng quát nhất vẫn là dùng Regular expression đỡ hại não, tham khảo:

    With New RegExp
            .IgnoreCase = True
            .Global = True
            .Pattern = "[-w.]+(com|vn)"
            If .Test("chuỗi cần xử lý") Then MsgBox .Execute(s)(0)
        End With
  4. hands says:

    test thử :

    MsgBox ExtractWeb("bai viet duoc trich dan tu website www.giaip--hapexcel.com.vn")

    cú pháp RE.Pattern = "((()*.com)|(()*.vn))" gần như tương đương với .Pattern = "w*(.com|.vn)"
    Nếu đơn giản vậy " Điểm chung của chuỗi kí tự trên là đều " " có dấu cách trước web. Có cách nào FIND " " từ phải qua trái không ạ" thì giản đơn dùng công thức của pác Ndu.
    Trường hợp phức tạp hơn, tổng quát nhất vẫn là dùng Regular expression đỡ hại não, tham khảo:

    With New RegExp
            .IgnoreCase = True
            .Global = True
            .Pattern = "[-w.]+(com|vn)"
            If .Test("chuỗi cần xử lý") Then MsgBox .Execute(s)(0)
        End With

    1. Cái pattern Regex trên chỉ lấy được cái domain (com/vn) và cái subdomain (*.com) thứ nhất thôi. Nếu quép sai chạy dài lên vài subdomain nữa thì nó bỏ qua:
    batam.mangtitoet.com

    2. Và nó chỉ là tổng quát. Trong ví dụ cuối của thớt có đến 2 cái quép sai. Code dùng regex theo pattern trên thì phải thêm phầm gộp chúng lại.

    Nếu regex thì cái pattern của bài này nên là "dãy ký tự khác dấu cách" + "ký pháp cuối chuỗi"

    "(https?://)?(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,6}b([-a-zA-Z0-9@:%_+.~#?&//=]*)"
  5. SprinGO.vn says:

    Tổng hợp các cách:
    Tách kí tự ra khỏi chuỗi không thống nhất

    17701

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm