Đã sữa lại,tôi quên mất tưởng đang dùng DimThêm cái này vào nếu không lần nào cũng dựng reg lại mặc dù dùng 'Static'.
If reg is nothing then set ...
....................Chào mọi người ạ!. Mọi người giúp e với ạ, em muốn tách dãy số "158-176" ra khỏi chuỗi kí tự "VK TRẮNG VIỀN G RỘNG (ĐUÔI 6) 158-176 logo SH đen" . Mong mọi người giúp đỡ ạ. E cảm ơn!. (E có sửa lại file "VK" thành "VK 1" ạ)
Option Explicit
Sub tach()
Dim Nguon
Dim tam
Dim i, j, k
Dim kq
Nguon = Sheet1.Range("A2:A5")
k = UBound(Nguon)
ReDim kq(1 To k, 1 To 1)
For i = 1 To k
tam = Split(Nguon(i, 1))
For j = UBound(tam) To 0 Step -1
If IsNumeric(Right(tam(j), 1)) Then
kq(i, 1) = tam(j)
Exit For
End If
Next j
For j = 1 To Len(kq(i, 1))
If IsNumeric(Mid(kq(i, 1), j, 1)) Then
kq(i, 1) = Mid(kq(i, 1), j, Len(kq(i, 1)))
Exit For
End If
Next j
Next i
Sheet1.Range("D2").Resize(k, 1) = kq
End Sub
Đã sửa lần 2 !!!!If Not reg Is Nothing
Chưa đúng kìa
Dạ, em cảm ơn anh nhéThêm cái này vào nếu không lần nào cũng dựng reg lại mặc dù dùng 'Static'.
If reg is nothing then set ...
Dạ, em cảm ơn anh nhéThêm cái này vào nếu không lần nào cũng dựng reg lại mặc dù dùng 'Static'.
If reg is nothing then set ...
Dựng reg liên tục thì tốn ram hay chậm tốc độ thế bác Befaint?Thêm cái này vào nếu không lần nào cũng dựng reg lại mặc dù dùng 'Static'.
If reg is nothing then set ...
Đã lỡ sì-ta-tịt rồi thì nhét luôn cái chỗ pattern vào. Tội gì mỗi lần chạy lại phải gán chuỗi.Thêm cái này vào nếu không lần nào cũng dựng reg lại mặc dù dùng 'Static'.
If reg is nothing then set ...
- Khai báo dạng Static thì biến lưu trữ trên bộ nhớ cho tới khi thoát ứng dụng/ hoặc chương trình lăn ra ngỏm.Dựng reg liên tục thì tốn ram hay chậm tốc độ thế bác Befaint?
Sub TachSo()
Dim KQ As String, Nguon As String, c3 As String
Dim i As Long, iR As Long
Dim SArr, DArr
SArr = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
ReDim DArr(1 To UBound(SArr), 1 To 1)
For iR = 1 To UBound(SArr)
For i = 1 To Len(SArr(iR, 1)) - 2
c3 = Mid(SArr(iR, 1), i, 3)
If IsNumeric(c3) And IsNumeric(Left(c3, 1)) Then
KQ = KQ & c3
If i > 2 Then
If Mid(SArr(iR, 1), i - 1, 1) = "-" Or Mid(SArr(iR, 1), i - 2, 2) = "- " Then
KQ = Left(KQ, 3) & "-" & Right(KQ, 3)
End If
End If
i = i + 3
End If
Next
DArr(iR, 1) = KQ
KQ = ""
Next
Range("C1").Resize(UBound(SArr), 1).Value = DArr
End Sub
D, e cảm ơn anh nhé....................
Mã:Option Explicit Sub tach() Dim Nguon Dim tam Dim i, j, k Dim kq Nguon = Sheet1.Range("A2:A5") k = UBound(Nguon) ReDim kq(1 To k, 1 To 1) For i = 1 To k tam = Split(Nguon(i, 1)) For j = UBound(tam) To 0 Step -1 If IsNumeric(Right(tam(j), 1)) Then kq(i, 1) = tam(j) Exit For End If Next j For j = 1 To Len(kq(i, 1)) If IsNumeric(Mid(kq(i, 1), j, 1)) Then kq(i, 1) = Mid(kq(i, 1), j, Len(kq(i, 1))) Exit For End If Next j Next i Sheet1.Range("D2").Resize(k, 1) = kq End Sub
Dạ, hi. E cảm ơn anh nhéThử code nhà quê của tôi nhé:
Rich (BB code):Sub TachSo() Dim KQ As String, Nguon As String, c3 As String Dim i As Long, iR As Long Dim SArr, DArr SArr = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) ReDim DArr(1 To UBound(SArr), 1 To 1) For iR = 1 To UBound(SArr) For i = 1 To Len(SArr(iR, 1)) - 2 c3 = Mid(SArr(iR, 1), i, 3) If IsNumeric(c3) And IsNumeric(Left(c3, 1)) Then KQ = KQ & c3 If i > 2 Then If Mid(SArr(iR, 1), i - 1, 1) = "-" Or Mid(SArr(iR, 1), i - 2, 2) = "- " Then KQ = Left(KQ, 3) & "-" & Right(KQ, 3) End If End If i = i + 3 End If Next DArr(iR, 1) = KQ KQ = "" Next Range("C1").Resize(UBound(SArr), 1).Value = DArr End Sub
Khối dữ liệu như trong file VK lúc đầu như thế này
View attachment 249564
Cảm ơn gì bạn?D, e cảm ơn anh nhé
Bài đã được tự động gộp:
Dạ, hi. E cảm ơn anh nhé
Vâng ạ, e sẽ rút kinh nghiệm ạCảm ơn gì bạn?
Luôn luôn phải mô tả dạng dữ liệu. Trước hết phải phát biểu bằng lời cái cần lấy, sau đó cho khoảng chục ví dụ. Nếu chỉ tung ví dụ mà không phát biểu bằng lời thì cũng chả đủ, có cho 1000 ví dụ cũng thế thôi.
Do bạn không mô tả dạng dữ liệu và không phát biểu bằng lời kết quả mong đợi mà bạn chỉ cho ví dụ:
A5 = Vung kính trắng 2 lỗ C172 logo SH mama
Mong đợi B5 = 172
Vậy có câu hỏi: có trường hợp
A5 = Vung kính trắng 23 lỗ C172 logo SH mama
không? Nếu có thì mong đợi là 23 hay 172, hay cái khác hoàn toàn?
Tại sao cái gọi là "phát biểu bằng lời" quan trọng đến thế? Vì nếu không có nó thì không ai hiểu ý hoặc mỗi người hiểu một kiểu. Tôi cho ví dụ. Giả sử có dữ liệu:
A5 = Vung kính trắng 23 lỗ C172 logo SH mama
Trong chủ đề có 3 code A, B và C.
- nếu mong đợi 23 thì code A đúng, B và C sai.
- nếu mong đợi 172 thì B đúng, A và C sai.
- nếu mong đợi "23 172" thì code C đúng, A và B sai.
Thử :Chào các anh chị
Anh chị giúp em với ạ, em muốn tách một dãy chữ số bắt đầu từ chữ "Bill" cho đến khoảng trắng đầu tiên.
Em gửi file đính kèm nhờ mọi người hướng dẫn công thức giúp
=MID(SUBSTITUTE(TRIM(RIGHT(A2,LEN(A2)-SEARCH("Bill",A2)-3))," ",REPT(" ",100)),1,100)
Cám ơn cao thủ đã giúp đỡ emMID(SUBSTITUTE(TRIM(RIGHT(A2,LEN(A2)-SEARCH("Bill",A2)-3))," ",REPT(" ",100)),1,100)