huonglien1901
GPE là ngôi nhà thứ 2 của tôi!!!
- Tham gia
- 17/4/16
- Bài viết
- 2,701
- Được thích
- 2,434
- Giới tính
- Nam
- Nghề nghiệp
- Nhân viên kỹ thuật in ấn
Nếu cái bạn cần là tìm quy luật thì số lượng mẫu có lẽ phải cần nhiều hơn nữaEm chào mọi người!
Em có vấn đề nhờ mọi người hỗ trợ.
Em muốn lấy 01 phần trong 01 chuỗi lớn như file đính kèm.
Em cảm ơn mọi người nhiều!
Em gửi Bác file trong file em có nói quy luật tách để lấy chuỗi dữ liệu này!Bạn nên mô tả tính chất chuỗi cần lấy. Vì nếu không thì mỗi người tự cho là hiểu đúng theo một ý khác và viết code hoặc công thức cho ý ấy. Do người ta chỉ tung ra code và công thức mà không nói rõ họ đã viết cho trường hợp nào nên trường hợp nào bạn cũng GẬT ĐẦU mà không ý thức được là các code hoặc công thức ấy có thể cho kết quả khác nhau. Tôi sẽ cho bạn ví dụ.
Ở phần trước bạn nhận được cả code và công thức. Trước hết tôi nói rõ là tôi không kiểm tra, tôi chỉ nhìn code và công thức và đoán chúng thế nào. Bạn nên tự kiểm nghiệm. Bạn có ý thức được là code lấy tất cả các chuỗi có độ dài > 5 chữ số, còn công thức chỉ lấy các chuỗi có ĐÚNG 6, 8 hoặc 13 chữ số? Vậy nếu kết quả của bạn có thể có 7, 9, 10, 11, 12, > 14 chữ số thì code trả về kết quả còn công thức trả về chuỗi rỗng. Còn nếu kết quả có thể là chuỗi có 5 chữ số thì cả code và công thức là sai.
Có thể tôi đoán bằng mắt không chính xác vì tôi cũng chỉ nhìn lướt qua, nhưng tự bạn có thể kiểm tra. Tôi chỉ muốn nhấn mạnh là bạn có thể GẬT ĐẦU với mỗi code và công thức nhưng bạn không ý thức được là chúng được viết cho những giả thiết nào.
Em gửi Anh file em nói quy luật để tách.Nếu cái bạn cần là tìm quy luật thì số lượng mẫu có lẽ phải cần nhiều hơn nữa
Em gửi Anh quy luật trong file.Một phần trong một chuỗi mà bạn này viết 01 đang nghĩ hoài về số 01 chứ
Tôi chỉ góp ý để bạn mô tả cho những người muốn giúp bạn. Không nhất thiết là cho tôi, vì tôi bây giờ lười lắm, chủ yếu tìm những thú vui thực thôi.Em gửi Bác file trong file em có nói quy luật tách để lấy chuỗi dữ liệu này!
Bác xem file em nếu có gì thắc mắc Bác có thể nói rõ để em chỉnh sửa dữ liệu lại.
Em có làm kết quả ví dụ minh họa.
Em cảm ơn Bác nhiều!
Em cảm ơn Bác đã nhắc nhở em.Tôi chỉ góp ý để bạn mô tả cho những người muốn giúp bạn. Không nhất thiết là cho tôi, vì tôi bây giờ lười lắm, chủ yếu tìm những thú vui thực thôi.
Bạn thử code dưới, kết quả điền vào cột FEm gửi Anh file em nói quy luật để tách.
Option Explicit
Sub tach()
Dim Nguon, Kq
Dim i, j, r
Nguon = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
r = UBound(Nguon)
ReDim Kq(1 To r, 1 To 1)
With CreateObject("Vbscript.RegExp")
.Pattern = "[^\n]+"
For i = 1 To r
j = Split(Nguon(i, 1), "-")(0)
If .test(j) Then
Kq(i, 1) = WorksheetFunction.Clean(.Execute(j)(0))
End If
Next i
Sheet1.Range("F2").Resize(r, 1) = Kq
End With
End Sub
Em cảm ơn Anh!Bạn thử code dưới, kết quả điền vào cột F
Mã:Option Explicit Sub tach() Dim Nguon, Kq Dim i, j, r Nguon = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown)) r = UBound(Nguon) ReDim Kq(1 To r, 1 To 1) With CreateObject("Vbscript.RegExp") .Pattern = "[^\n]+" For i = 1 To r j = Split(Nguon(i, 1), "-")(0) If .test(j) Then Kq(i, 1) = WorksheetFunction.Clean(.Execute(j)(0)) End If Next i Sheet1.Range("F2").Resize(r, 1) = Kq End With End Sub
Ý của em là thử giúp tìm quy luật làm sao để tách chuỗi đó. Nhưng ở bài này em có tìm được ra ít quy luật để tách có những chuỗi em không thể tìm ra quy luật nên em đưa lên nhờ mọi người hỗ trợ.Rốt cuộc thì bạn muốn tìm quy luật hay muốn cái code VBA?
Hai cái này khác nhau. Và theo như những bài bạn hỏi thì bạn dừng lại ở code chứ đâu phải "quy luật".
Bạn nhầm lẫn giữa quy luật và cách thức thực hiện.Ý của em là thử giúp tìm quy luật làm sao để tách chuỗi đó. Nhưng ở bài này em có tìm được ra ít quy luật để tách có những chuỗi em không thể tìm ra quy luật nên em đưa lên nhờ mọi người hỗ trợ.
Bạn đã test chưa vậyEm cảm ơn Anh!
Có gì em test rồi em phản hồi lại cho Anh.
=IFERROR(IF(LEN(B2)-LEN(SUBSTITUTE(B2;CHAR(10);""))>0;TRIM(LEFT(SUBSTITUTE(B2;CHAR(10);REPT(" ";999));IFERROR(FIND("(";B2)-1;999)));LEFT(B2;MATCH(1;--ISNUMBER(--MID(B2&"-";ROW($1:$200);6));0)-1));B2)
Chuỗi .Pattern = "[^\n]+" hay thậtBạn thử code dưới, kết quả điền vào cột F
Mã:Option Explicit Sub tach() Dim Nguon, Kq Dim i, j, r Nguon = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown)) r = UBound(Nguon) ReDim Kq(1 To r, 1 To 1) With CreateObject("Vbscript.RegExp") .Pattern = "[^\n]+" For i = 1 To r j = Split(Nguon(i, 1), "-")(0) If .test(j) Then Kq(i, 1) = WorksheetFunction.Clean(.Execute(j)(0)) End If Next i Sheet1.Range("F2").Resize(r, 1) = Kq End With End Sub