[Help] VBA lấy chuỗi ở ký tự cuối có dấu "/" (1 người xem)

Liên hệ QC

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

robinhsoon

Thành viên hoạt động
Tham gia
19/1/16
Bài viết
153
Được thích
11
Thân chào cả nhà GPE!

Hiện tại em có một chuỗi:
https://cdardctblobprodapac001.blob.core.windows.net/1504923000525_PIC11A_SEQ_1504923186.jpg

em muốn dùng VBA để lấy chuỗi 1504923000525_PIC11A_SEQ_1504923186.jpg - tính từ bên phải qua thì ký tự "/" này sẽ lấy chuỗi..

Mong cả nhà giúp đỡ ạ..!
 
Thân chào cả nhà GPE!

Hiện tại em có một chuỗi:
https://cdardctblobprodapac001.blob.core.windows.net/1504923000525_PIC11A_SEQ_1504923186.jpg

em muốn dùng VBA để lấy chuỗi 1504923000525_PIC11A_SEQ_1504923186.jpg - tính từ bên phải qua thì ký tự "/" này sẽ lấy chuỗi..

Mong cả nhà giúp đỡ ạ..!
Có thế nào làm thế đó, bạn thử:
PHP:
Sub abc()
    Dim a
    a = "https://cdardctblobprodapac001.blob.core.windows.net/1504923000525_PIC11A_SEQ_1504923186.jpg"
    '[c1] = Split(a, "/")(3)
    MsgBox Split(a, "/")(3)
End Sub
 
Upvote 0
Có thế nào làm thế đó, bạn thử:
PHP:
Sub abc()
    Dim a
    a = "https://cdardctblobprodapac001.blob.core.windows.net/1504923000525_PIC11A_SEQ_1504923186.jpg"
    '[c1] = Split(a, "/")(3)
    MsgBox Split(a, "/")(3)
End Sub
Dạ.! Em cảm ơn ạ.. MsgBox xuất đúng rồi ạ.. em muốn áp dụng chạy ra File này thì em làm sao ạ
 

File đính kèm

Upvote 0
không cần VBA đâu bạn ạ. Bạn xem file nhé
 

File đính kèm

Upvote 0
Có thế nào làm thế đó, bạn thử:
PHP:
Sub abc()
    Dim a
    a = "https://cdardctblobprodapac001.blob.core.windows.net/1504923000525_PIC11A_SEQ_1504923186.jpg"
    '[c1] = Split(a, "/")(3)
    MsgBox Split(a, "/")(3)
End Sub
Em cho hiện mấy cái bảng cho đẹp anh ạ
Mã:
Sub Tachchuoi()
    Dim sRng As Range, eRng As Range, K As Long, I As Long, dArr(1 To 1000, 1 To 1), Tmp
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="chon vung du lieu ", Title:="Chon du lieu dau vao", Type:=8)
For Each cll In sRng
    K = K + 1
    Tmp = Split(cll, "/")
    dArr(K, 1) = Tmp(UBound(Tmp))
Next
Set eRng = Application.InputBox(Prompt:="Chon o ", Title:="Chon du o chua du lieu", Type:=8)
eRng.Resize(K, 1) = dArr
Thoat:
End Sub
 
Upvote 0
Công thức tách chuỗi ở diễn đàn này có hàng đống.
Đi tìm mấy cái thớt "các phương pháp tách họ và tên..."
Chỉ cần động não một chút, "họ tên" thì dùng dấu cách, ở đây thì dùng dấu /. Có thế thôi.
 
Upvote 0
Em cho hiện mấy cái bảng cho đẹp anh ạ
Mã:
Sub Tachchuoi()
    Dim sRng As Range, eRng As Range, K As Long, I As Long, dArr(1 To 1000, 1 To 1), Tmp
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="chon vung du lieu ", Title:="Chon du lieu dau vao", Type:=8)
For Each cll In sRng
    K = K + 1
    Tmp = Split(cll, "/")
    dArr(K, 1) = Tmp(UBound(Tmp))
Next
Set eRng = Application.InputBox(Prompt:="Chon o ", Title:="Chon du o chua du lieu", Type:=8)
eRng.Resize(K, 1) = dArr
Thoat:
End Sub
Em cảm ơn ạ... Code hay lắm ạ nhưng em muốn cột cố định được không ạ... ví dụ vùng dữ liệu là Columns A, vùng chứa dữ liệu là Column A (đè lên vùng dữ liệu)
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn ạ... Code hay lắm ạ nhưng em muốn cột cố định được không ạ... ví dụ vùng dữ liệu là Columns A, vùng chứa dữ liệu là Column A (đè lên vùng dữ liệu)
Bạn dùng thử cái này xem
Mã:
Sub Tachchuoi()
    Dim sArr, dArr, I As Long, K As Long, Tmp
With Sheet1
    sArr = .Range("A2", .Range("A65535").End(3)).Value
    ReDim dArr(1 To UBound(sArr), 1 To 1)
    For I = 1 To UBound(sArr)
        K = K + 1: Tmp = Split(sArr(I, 1), "/"): dArr(K, 1) = Tmp(UBound(Tmp))
    Next I
    .Range("B2:B1500").ClearContents
    .Range("B2").Resize(K, 1) = dArr
End With
End Sub
 
Upvote 0
Bạn dùng thử cái này xem
Mã:
Sub Tachchuoi()
    Dim sArr, dArr, I As Long, K As Long, Tmp
With Sheet1
    sArr = .Range("A2", .Range("A65535").End(3)).Value
    ReDim dArr(1 To UBound(sArr), 1 To 1)
    For I = 1 To UBound(sArr)
        K = K + 1: Tmp = Split(sArr(I, 1), "/"): dArr(K, 1) = Tmp(UBound(Tmp))
    Next I
    .Range("B2:B1500").ClearContents
    .Range("B2").Resize(K, 1) = dArr
End With
End Sub
ok em làm được rồi ạ...!
Em cảm ơn Chị PacificPR nhiều nhé..!
Chúc cả nhà GPE sức khỏe và Thành công ạ..
 
Upvote 0
Dùng công thức này cho B2:
Mã:
=TRIM(RIGHT(SUBSTITUTE(A2,"/",REPT(" ",1000)),1000))
----------------------------------
Bạn dùng thử cái này xem
Mã:
Sub Tachchuoi()
    Dim sArr, dArr, I As Long, K As Long, Tmp
With Sheet1
    sArr = .Range("A2", .Range("A65535").End(3)).Value
    ReDim dArr(1 To UBound(sArr), 1 To 1)
    For I = 1 To UBound(sArr)
        K = K + 1: Tmp = Split(sArr(I, 1), "/"): dArr(K, 1) = Tmp(UBound(Tmp))
    Next I
    .Range("B2:B1500").ClearContents
    .Range("B2").Resize(K, 1) = dArr
End With
End Sub
Code này nếu gặp cell rổng thì.. tèo
Các bạn nên tập thói quen kiểm tra với nhiều kiểu dữ liệu khác nhau để bẫy lỗi
Ngoài ra tôi nghĩ dùng InStrRev cũng là giải pháp dễ chịu (thay cho Split), chang hạn:
Mã:
Sub Test()
  Dim arr, n As Long, sTmp As String
  arr = Range("A2:A1000").Value
  For n = 1 To UBound(arr)
    If InStr(1, arr(n, 1), "/") Then
      sTmp = arr(n, 1)
      sTmp = Mid(sTmp, InStrRev(sTmp, "/") + 1)
      arr(n, 1) = sTmp
    End If
  Next
  Range("C2:C1000").Value = arr
End Sub
 
Upvote 0
Thử sử dụng hàm
=TachChuoi($A2)

Mã:
Public Function TachChuoi(Chuoi As String, Optional So As Byte = 4) As String
Dim i As Byte, Tam
Tam = Split("Không có Value" & Chuoi, "/")
i = UBound(Tam) + So - 4
TachChuoi = Tam(i)
End Function
 
Upvote 0
Nếu không muốn hiện chữ "Không có Value" khi gặp Cell trống thì sử dụng hàm này:
Mã:
=IF($A2<>"",TachChuoi($A2,4),"")
 
Upvote 0
Web KT

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

Back
Top Bottom