Xin hướng dẫn tách các đoạn trong một chuỗi

Liên hệ QC
Vâng, mình load file Vd của huuthang_bd về và đổi tên thành vd2, sau khi nhập dữ liệu vào ô màu đỏ thì các lệnh cũ đều báo lỗi như vậy.
Àh. Cái này là do trong công thức tôi có sử dụng hàm Iseven(). Hàm này chỉ có ở Excel 2007 chứ không có ở các phiên bảng Excel khác. Tôi sửa lại, sử dụng hàm Mod(). Bạn xem file đính kèm.
 

File đính kèm

  • Vd.xls
    44.5 KB · Đọc: 39
Cảm ơn huuthang_bd đã giải thích cho mình.
Mình có một thắc mắc khác mà không giải quyết được: Đó là khi chép công thức sang một sheet khác, hoặc chỉ cần chèn cột vào ngay sheet1 thì các công thức không còn đưa ra giá trị nữa. Mình đã thử thay đổi giá trị tham chiếu trong công thức của Name: Group nhưng kết quả tại các ô tách giá trị là Value.
Cảm ơn bạn đã quan tâm giúp đỡ mình.
 

File đính kèm

  • Vd5.xls
    51 KB · Đọc: 15
Cảm ơn huuthang_bd đã giải thích cho mình.
Mình có một thắc mắc khác mà không giải quyết được: Đó là khi chép công thức sang một sheet khác, hoặc chỉ cần chèn cột vào ngay sheet1 thì các công thức không còn đưa ra giá trị nữa. Mình đã thử thay đổi giá trị tham chiếu trong công thức của Name: Group nhưng kết quả tại các ô tách giá trị là Value.
Cảm ơn bạn đã quan tâm giúp đỡ mình.
Với bài toán này, khuyên bạn nên dùng code của anh HYen17, vì những tiên dụng:
- Dù bạn có Insert dòng hay cột thì công thức vẫn cứ... đúng
- Mang qua sheet nào xài cũng được
- Không cần chỉnh sửa tham chiếu hay name
- Nếu bạn biết cách save file thành 1 Add-In thì thậm chí file nào trên máy bạn cũng xài được
 

File đính kèm

  • Tachchuoi.xls
    42.5 KB · Đọc: 64
Tôi thử 1 chiêu khác không dùng mãng (vì chưa đủ công lực)
Dựa vào bài viết Tách số không dùng vòng lập , tôi biến tấu như sau:
PHP:
Option Explicit
Function TachChuoi(Chuoi As String, Nhom As Long) As String
  Dim Temp1 As Object, Temp2 As String
  Set Temp1 = CreateObject("VBScript.RegExp")
  Temp1.Global = True
  Temp2 = Replace(Chuoi, "//", "/")
  Temp1.Pattern = Choose(((Nhom - 1) Mod 2) + 1, "[^a-zA-Z/]", "[^0-9/]")
   If Nhom > 2 * (Len(Temp2) - Len(Replace(Temp2, "/", "")) + 1) Then
    TachChuoi = ""
  Else
    TachChuoi = Split(Temp1.Replace(Temp2, ""), "/")(Int((Nhom - 1) / 2))
  End If
End Function
code này cũng không dùng tí vòng lập nào! Bạn xem file nhé
 

File đính kèm

  • Tachchuoi_2.xls
    34.5 KB · Đọc: 71
Cảm ơn ndu96081631 về bài viết của bạn, mình nhận thấy hàm tự tạo của bạn khi sử dụng tiện lợi hơn của HYen17 ở điểm là không nhất thiết các giá trị tách ra phải nằm cùng 1 hàng, điều này rất hay khi sử dụng. Cảm ơn bạn rất nhiều.
 
Cảm ơn Code của anh, tuy nhiên nếu trong chuỗi có ký tự như chữ "Đ" thì khi tách ra nó lại không thể hiện được mà bị mất đi. Anh xem cách nào khắc phục được không ạ. Cảm ơn anh.
Tôi thử 1 chiêu khác không dùng mãng (vì chưa đủ công lực)
Dựa vào bài viết Tách số không dùng vòng lập , tôi biến tấu như sau:
PHP:
Option Explicit
Function TachChuoi(Chuoi As String, Nhom As Long) As String
  Dim Temp1 As Object, Temp2 As String
  Set Temp1 = CreateObject("VBScript.RegExp")
  Temp1.Global = True
  Temp2 = Replace(Chuoi, "//", "/")
  Temp1.Pattern = Choose(((Nhom - 1) Mod 2) + 1, "[^a-zA-Z/]", "[^0-9/]")
   If Nhom > 2 * (Len(Temp2) - Len(Replace(Temp2, "/", "")) + 1) Then
    TachChuoi = ""
  Else
    TachChuoi = Split(Temp1.Replace(Temp2, ""), "/")(Int((Nhom - 1) / 2))
  End If
End Function
code này cũng không dùng tí vòng lập nào! Bạn xem file nhé
 
Web KT
Back
Top Bottom