giúp em hàm bóc tách dữ liệu ạ (1 người xem)

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

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

lala_qn

Thành viên tiêu biểu
Tham gia
2/5/09
Bài viết
598
Được thích
17
Nghề nghiệp
chưa ổn định
em chào cả nhà !
em có up file vd kèm theo, em cần bóc tách dữ liệu ở sheet1 và sheet2
nhờ anh chị giúp dùm em hàm ở 2 sheet với ạ, em cảm ơn nhiều ạ !
 

File đính kèm

Lần chỉnh sửa cuối:
em chào cả nhà !
em có up file vd kèm theo, em cần bóc tách dữ liệu ở sheet1 và sheet2
nhờ anh chị giúp dùm em với ạ, em cảm ơn nhiều ạ !
Nếu dữ liệu như thế này thì có thể dùng từ khóa viet để tìm kiếm và từ khóa vn trong chuỗi sau khi tìm thấy chữ viet
 
em chào cả nhà !
em có up file vd kèm theo, em cần bóc tách dữ liệu ở sheet1 và sheet2
nhờ anh chị giúp dùm em với ạ, em cảm ơn nhiều ạ !
Tạm dùng công thức này vậy, chỉ đúng kết quả trong file, nếu phát sinh thêm thì tính tiếp
Mã:
=TRIM(SUBSTITUTE(MID(SUBSTITUTE(A2,"<",REPT(" ",100)),FIND("viet",A2),50),CHAR(34),""))
 

File đính kèm

Tạm dùng công thức này vậy, chỉ đúng kết quả trong file, nếu phát sinh thêm thì tính tiếp
Mã:
=TRIM(SUBSTITUTE(MID(SUBSTITUTE(A2,"<",REPT(" ",100)),FIND("viet",A2),50),CHAR(34),""))
dạ ở sheet2, đây chỉ là file vd, chứ thực tế sẽ có rất nhiều trang web khác nhau chứ ko phải 1 trang web "viettoan" anh, hiccc
Bài đã được tự động gộp:

dạ sheet2 đó chỉ là e vd "viettoan" , trên thực tế có rất nhiều tên trang web khác nhau anh, hic
Bài đã được tự động gộp:

dạ ở sheet2, đây chỉ là file vd, chứ thực tế sẽ có rất nhiều trang web khác nhau chứ ko phải 1 trang web "viettoan" anh, hiccc
Bài đã được tự động gộp:


dạ sheet2 đó chỉ là e vd "viettoan" , trên thực tế có rất nhiều tên trang web khác nhau ạ, hic
 
dạ ở sheet2, đây chỉ là file vd, chứ thực tế sẽ có rất nhiều trang web khác nhau chứ ko phải 1 trang web "viettoan" anh, hiccc
Bài đã được tự động gộp:


dạ sheet2 đó chỉ là e vd "viettoan" , trên thực tế có rất nhiều tên trang web khác nhau anh, hic
Bài đã được tự động gộp:
Bạn đưa thế nào thì chúng tôi biết đên đâu giúp bạn tới đó.
Nếu bạn có hàng trăm trang Web cần xử lý, hãy gửi lên đây để các thành viên thử sức.
 
Bạn đưa thế nào thì chúng tôi biết đên đâu giúp bạn tới đó.
Nếu bạn có hàng trăm trang Web cần xử lý, hãy gửi lên đây để các thành viên thử sức.
dạ, tại dữ liệu hơi cá nhân, nên em viết các mẫu các trường hợp sẽ xảy ra để anh chị nhìn dễ ạ, em mới cập nhật lại vd ạ
Bài đã được tự động gộp:
 
Lần chỉnh sửa cuối:
dạ, tại dữ liệu hơi cá nhân, nên em viết các mẫu các trường hợp sẽ xảy ra để anh chị nhìn dễ ạ, em mới cập nhật lại vd ạ
Bài đã được tự động gộp:
Tất cả tôi đã làm trong File, bạn xem nhé
 

File đính kèm

dạ vd trên thực tế có hàng nghìn web thì làm sao lấy mẫu để LOOKUP anh nhỉ hic
Thực ra, tôi biết bạn đang cần 1 đoạn VBA code, tôi cũng đã thử, nhưng xử lý chưa triệt để nên dùng tạm hàm Lookup.
Bạn cố gắng chờ đợi, biết đâu có thành viên nào đó ngang qua giúp bạn thực hiện được điều mong ước.
 
Thực ra, tôi biết bạn đang cần 1 đoạn VBA code, tôi cũng đã thử, nhưng xử lý chưa triệt để nên dùng tạm hàm Lookup.
Bạn cố gắng chờ đợi, biết đâu có thành viên nào đó ngang qua giúp bạn thực hiện được điều mong ước.
dạ, nhờ anh chị giúp dùm em bài này với ạ !
 
Thử:
PHP:
Sheet2!C2=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(MID(LEFT(A2,FIND("<",A2)-1),IFERROR(LOOKUP(10^10,FIND({")","/","-","+","_"},A2))+1,1),100)),"+",""),"/",""),",",""),"""","")
 
em chào cả nhà !
em có up file vd kèm theo, em cần bóc tách dữ liệu ở sheet1 và sheet2
nhờ anh chị giúp dùm em hàm ở 2 sheet với ạ, em cảm ơn nhiều ạ !
Bạn thử code này xem:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com", ".vn", ".com.vn", ".net", ".net.vn", ".org", ".org.vn", ".info", ".biz")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(www.)?([a-zA-Z0-9.-]+)([^a-zA-Z0-9.-]{1,2})?<"
    Else
        .Pattern = "(www.)?(.+(" + Join(result, "|") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(1)
            Case 2
                tach = .Execute(str)(0).submatches(3)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
Sheet1 thì dùng các công thức tach(...,1) và tach(...,2)
Sheet3 thì dùng các công thức tach(...,3)
Hên xui nhe, không được thì thôi nhe bạn.
 
Bạn thử code này xem:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com", ".vn", ".com.vn", ".net", ".net.vn", ".org", ".org.vn", ".info", ".biz")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(www.)?([a-zA-Z0-9.-]+)([^a-zA-Z0-9.-]{1,2})?<"
    Else
        .Pattern = "(www.)?(.+(" + Join(result, "|") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(1)
            Case 2
                tach = .Execute(str)(0).submatches(3)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
Sheet1 thì dùng các công thức tach(...,1) và tach(...,2)
Sheet3 thì dùng các công thức tach(...,3)
Hên xui nhe, không được thì thôi nhe bạn.
Hoàng tử của lòng em đây rồi !
Khà khà
 
Bạn thử code này xem:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com", ".vn", ".com.vn", ".net", ".net.vn", ".org", ".org.vn", ".info", ".biz")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(www.)?([a-zA-Z0-9.-]+)([^a-zA-Z0-9.-]{1,2})?<"
    Else
        .Pattern = "(www.)?(.+(" + Join(result, "|") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(1)
            Case 2
                tach = .Execute(str)(0).submatches(3)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
Sheet1 thì dùng các công thức tach(...,1) và tach(...,2)
Sheet3 thì dùng các công thức tach(...,3)
Hên xui nhe, không được thì thôi nhe bạn.
em Alt F11 > module > nhập code rùi lưu lại ko dc anh
nhờ anh nhập code vào file dùm em với ạ !
 
Phí rượu quá, khà khà.
cảm ơn anh!
Bài đã được tự động gộp:

Hoàng tử của lòng em đây rồi !
Khà khà
ở sheet1 lọc trong chuỗi địa chỉ mail chỉ lấy đoạn từ đuôi tên miền trang web đến dấu chấm ạ
vd: tuan.phamhoa.vn@gmail.com, thì chỉ lọc lấy kết quả là phamhoa.vn
trong file vd em có mô tả kết quả kĩ anh
anh xem chỉnh lại code giúp e với ạ !
 
Lần chỉnh sửa cuối:
cảm ơn anh!
Bài đã được tự động gộp:


ở sheet1 lọc trong chuỗi địa chỉ mail chỉ lấy đoạn từ đuôi tên miền trang web đến dấu chấm ạ
vd: tuan.phamhoa.vn@gmail.com, thì chỉ lọc lấy kết quả là phamhoa.vn
trong file vd em có mô tả kết quả kĩ anh
anh xem chỉnh lại code giúp e với ạ !
Bạn phải kêu nhà sản xuất chứ? Tôi có biết gì đâu mà chỉnh với sửa?
 
cảm ơn anh!
Bài đã được tự động gộp:


ở sheet1 lọc trong chuỗi địa chỉ mail chỉ lấy đoạn từ đuôi tên miền trang web đến dấu chấm ạ
vd: tuan.phamhoa.vn@gmail.com, thì chỉ lọc lấy kết quả là phamhoa.vn
trong file vd em có mô tả kết quả kĩ anh
anh xem chỉnh lại code giúp e với ạ !
Bạn chỉnh code lại như vầy:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com.vn", ".org.vn", ".net.vn", ".com", ".net", ".org", ".info", ".biz", ".vn")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(www.)?([a-zA-Z0-9.-]+)([^a-zA-Z0-9.-]{1,2})?<"
    Else
        .Pattern = "([a-zA-Z0-9]+(" + Join(result, "|") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(0)
            Case 2
                tach = .Execute(str)(0).submatches(2)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
 

File đính kèm

Bạn chỉnh code lại như vầy:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com.vn", ".org.vn", ".net.vn", ".com", ".net", ".org", ".info", ".biz", ".vn")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(www.)?([a-zA-Z0-9.-]+)([^a-zA-Z0-9.-]{1,2})?<"
    Else
        .Pattern = "([a-zA-Z0-9]+(" + Join(result, "|") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(0)
            Case 2
                tach = .Execute(str)(0).submatches(2)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
dạ em chạy thử thì thấy còn lỗi như sau ạ
- ở sheet1 còn lỗi như sau
vd dữ liệu: anhvietvn@gmail.com thì kết quả là anhvietvn
vd dữ liệu: letuan_com@yahoo.com ra kết quả là letuan_com
2 dạng này em ko cần ra kết quả, nhờ anh chỉnh code loại bỏ 2 dạng này với ạ

- ở sheet2 còn lỗi như sau
vd dữ liệu: anh Tuấn <anhtuan@gmail.com> ra kết quả là n , cái này nếu đúng sẽ ko có kết quả
vd dữ liệu: "Phương -www.lephuong.com" <lephuong@gmail.com> ra kết quả là -www.lephuong.com, em cần kết quả đúng là lephuong.com
vd dữ liệu: Phú -phamphu.com <phamphu@gmail.com> ra kết quả là -phamphu.com , em cần kết quả đúng là phamphu.com

em cảm ơn anh nhiều ạ !
 
dạ em chạy thử thì thấy còn lỗi như sau ạ
- ở sheet1 còn lỗi như sau
vd dữ liệu: anhvietvn@gmail.com thì kết quả là anhvietvn
vd dữ liệu: letuan_com@yahoo.com ra kết quả là letuan_com
2 dạng này em ko cần ra kết quả, nhờ anh chỉnh code loại bỏ 2 dạng này với ạ

- ở sheet2 còn lỗi như sau
vd dữ liệu: anh Tuấn <anhtuan@gmail.com> ra kết quả là n , cái này nếu đúng sẽ ko có kết quả
vd dữ liệu: "Phương -www.lephuong.com" <lephuong@gmail.com> ra kết quả là -www.lephuong.com, em cần kết quả đúng là lephuong.com
vd dữ liệu: Phú -phamphu.com <phamphu@gmail.com> ra kết quả là -phamphu.com , em cần kết quả đúng là phamphu.com

em cảm ơn anh nhiều ạ !
Tôi chỉnh cho bạn thêm lần này nữa thôi nhe, bạn sửa code lại như vầy:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com.vn", ".org.vn", ".net.vn", ".com", ".net", ".org", ".info", ".biz", ".vn")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(.*www\.)?\-?([a-zA-Z0-9.-]+(" + Replace(Join(result, "|"), ".", "\.") + ")).*<"
    Else
        .Pattern = "([a-zA-Z0-9]+(" + Replace(Join(result, "|"), ".", "\.") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(0)
            Case 2
                tach = .Execute(str)(0).submatches(2)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
 
Tôi chỉnh cho bạn thêm lần này nữa thôi nhe, bạn sửa code lại như vầy:
PHP:
Function tach(str As String, Optional n As Long = 1) As String
Dim result()
result = Array(".com.vn", ".org.vn", ".net.vn", ".com", ".net", ".org", ".info", ".biz", ".vn")
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 3 Then
        .Pattern = "(.*www\.)?\-?([a-zA-Z0-9.-]+(" + Replace(Join(result, "|"), ".", "\.") + ")).*<"
    Else
        .Pattern = "([a-zA-Z0-9]+(" + Replace(Join(result, "|"), ".", "\.") + ")).*(@.+)"
    End If
    If .test(str) Then
        Select Case n
            Case 1
                tach = .Execute(str)(0).submatches(0)
            Case 2
                tach = .Execute(str)(0).submatches(2)
            Case 3
                tach = .Execute(str)(0).submatches(1)
        End Select
    End If
End With
End Function
dạ ok hết rùi, em cảm ơn anh nhiều ạ !
 
Em có file này nhờ anh/ chị giúp em công thức lọc ra tỉnh, quận huyện và phường/ thị xã với~
Em cám ơn!
 

File đính kèm

Em có file này nhờ anh/ chị giúp em công thức lọc ra tỉnh, quận huyện và phường/ thị xã với~
Em cám ơn!
Bạn xem nhé.
Mã:
Sub locten()
     Dim arr, arr1, lr As Long, i As Long, a As Long, T, j As Integer, b As Integer, k As Byte
     lr = Range("B" & Rows.Count).End(xlUp).Row
     arr = Range("B2:B" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 4)
     For i = 1 To UBound(arr, 1)
         T = Split("," & arr(i, 1), ",")
         b = UBound(T)
         a = a + 1
         k = 0
         For j = b To 1 Step -1
             k = k + 1
             If k > 4 Then arr1(a, 4) = arr1(a, 4) & "," & T(j)
             arr1(a, k) = T(j)
         Next j
    Next i
    Range("C2:F" & lr).ClearContents
    Range("C2:F" & lr).Value = arr1
End Sub
 

File đính kèm

Em có file này nhờ anh/ chị giúp em công thức lọc ra tỉnh, quận huyện và phường/ thị xã với~
Em cám ơn!
Dùng thử hàm tự tạo
Mã:
Function Tach(Nguon, STT)
Dim Mang
Mang = Split(StrReverse(Nguon), ",")
If STT <= UBound(Mang) + 1 Then
    Tach = StrReverse(Mang(STT - 1))
End If
End Function
 
Dùng thử hàm tự tạo
Mã:
Function Tach(Nguon, STT)
Dim Mang
Mang = Split(StrReverse(Nguon), ",")
If STT <= UBound(Mang) + 1 Then
    Tach = StrReverse(Mang(STT - 1))
End If
End Function
Dùng 2 cái này
StrReverse
sao không dùng.Ubound(mang)-stt
 

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

Back
Top Bottom