Tách lấy một phần chuỗi ký tự (1 người xem)

  • Thread starter Thread starter trungpp
  • Ngày gửi Ngày gửi

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

trungpp

Thành viên mới
Tham gia
16/10/09
Bài viết
37
Được thích
1
Chào mọi người,
Nhờ mọi người tư vấn giúp mình ca này với, cụ thể:
- Mình có các chuỗi ký tự sau:
ABC-xyz-12345678
MNKLT-xyztmn-1234
WEFP-xy-123

Mục tiêu mình muốn tách ra thành 03 trường dữ liệu riêng biệt được phân cách bởi dấu gạch "-" như trên
ví dụ chuỗi đầu tách thành:
ABC
xyz
12345678

Nhờ mọi người tư vấn giúp.
Thân chào
 
Chào mọi người,
Nhờ mọi người tư vấn giúp mình ca này với, cụ thể:
- Mình có các chuỗi ký tự sau:
ABC-xyz-12345678
MNKLT-xyztmn-1234
WEFP-xy-123

Mục tiêu mình muốn tách ra thành 03 trường dữ liệu riêng biệt được phân cách bởi dấu gạch "-" như trên
ví dụ chuỗi đầu tách thành:
ABC
xyz
12345678

Nhờ mọi người tư vấn giúp.
Thân chào

tách lấy ABC : =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",255)),1,255))
Tách lấy xyz: =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",255)),255,255))
tách lấy 12345678: Tách lấy xyz: =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",255)),255*2,255))
 
Chào mọi người,
Nhờ mọi người tư vấn giúp mình ca này với, cụ thể:
- Mình có các chuỗi ký tự sau:
ABC-xyz-12345678
MNKLT-xyztmn-1234
WEFP-xy-123

Mục tiêu mình muốn tách ra thành 03 trường dữ liệu riêng biệt được phân cách bởi dấu gạch "-" như trên
ví dụ chuỗi đầu tách thành:
ABC
xyz
12345678

Nhờ mọi người tư vấn giúp.
Thân chào
Menu Data, Text to Comlums, Delimited, Next, Other: -
click Next, Finish

 
Chào mọi người,
Nhờ mọi người tư vấn giúp mình ca này với, cụ thể:
- Mình có các chuỗi ký tự sau:
ABC-xyz-12345678
MNKLT-xyztmn-1234
WEFP-xy-123

Mục tiêu mình muốn tách ra thành 03 trường dữ liệu riêng biệt được phân cách bởi dấu gạch "-" như trên
ví dụ chuỗi đầu tách thành:
ABC
xyz
12345678

Nhờ mọi người tư vấn giúp.
Thân chào
Cho bạn hàm tự tạo:
PHP:
Function tachchuoi(text As String, Optional n As Long = 1)
Dim i As Long
If n > 3 Then
    tachchuoi = ""
    Exit Function
End If
With CreateObject("vbscript.regexp")
    .Global = True
    .ignorecase = True
    .Pattern = "([A-Z]+)-([a-z]+)-([0-9]+)"
    tachchuoi = .Replace(text, "$" & n)
End With
End Function
Giả sử tại đoạn text tại A1, bạn dùng công thức tại B1=tachchuoi($a1,column(A1)) rồi fill sang phải!!
 

File đính kèm

Cho bạn hàm tự tạo:
PHP:
Function tachchuoi(text As String, Optional n As Long = 1)
Dim i As Long
If n > 3 Then
    tachchuoi = ""
    Exit Function
End If
With CreateObject("vbscript.regexp")
    .Global = True
    .ignorecase = True
    .Pattern = "([A-Z]+)-([a-z]+)-([0-9]+)"
    tachchuoi = .Replace(text, "$" & n)
End With
End Function
Giả sử tại đoạn text tại A1, bạn dùng công thức tại B1=tachchuoi($a1,column(A1)) rồi fill sang phải!!

cái này hơi cao :), nhưng lấy về luôn để nghiền ngẫm khi cần.
Cám ơn Bạn nhiều
 
Chào mọi người,
Nhờ mọi người tư vấn giúp mình ca này với, cụ thể:
- Mình có các chuỗi ký tự sau:
ABC-xyz-12345678
MNKLT-xyztmn-1234
WEFP-xy-123

Mục tiêu mình muốn tách ra thành 03 trường dữ liệu riêng biệt được phân cách bởi dấu gạch "-" như trên
ví dụ chuỗi đầu tách thành:
ABC
xyz
12345678

Nhờ mọi người tư vấn giúp.
Thân chào

Bạn xem file đính kèm nha, góp vui một vài công thức. Chúc zui zẻ heee
 

File đính kèm

Cho bạn hàm tự tạo:
PHP:
Function tachchuoi(text As String, Optional n As Long = 1)
Dim i As Long
If n > 3 Then
    tachchuoi = ""
    Exit Function
End If
With CreateObject("vbscript.regexp")
    .Global = True
    .ignorecase = True
    .Pattern = "([A-Z]+)-([a-z]+)-([0-9]+)"
    tachchuoi = .Replace(text, "$" & n)
End With
End Function
Giả sử tại đoạn text tại A1, bạn dùng công thức tại B1=tachchuoi($a1,column(A1)) rồi fill sang phải!!

Mỗi ô cột, hàm phải chạy lại 1 lần.
Mỗi ô dòng, hàm phải dựng lại object môt lần.
 
Coding gồm 2 công việc: viết hàm và quản lý hàm.
Trong bài trên, bạn chỉ mới viết hàm. Còn việc quản lý hàm, bạn cũng nên tập cho quen.
 
Quản lý hàm:
Loại hàm này tôi đã từng đề nghị cách quản lý rồi.
Nên viết thành 2 hàm. Hàm chính trả vể 1 array. Hàm còn lại chỉ việc gọi hàm chính và chọn 1 trong những phần tử.
Người dùng sẽ có nhiều chọn lựa:
1. Dùng hàm chính như một hàm mảng (chọn nhiều ô liên tiếp và CSE)
2. Dùng hàm chính kèm với INDEX để lấy phần tử cần
3. Dùng hàm thứ hai, với tham số thứ hai là chỉ số phần tử cần tìm

Quản lý cách chạy:
Nếu ta dùng hàm cho một cột vài trăm ô thì có phải cái Object Regex phải được dựng lên và hủy đi vài trăm lần?
Có hai cách để chỉ phải dựng object này 1 lần. Một là dùng biến toàn cục. Hai là dùng biến tĩnh (static)
Code sẽ xét nếu biến này là Nothing thì dựng Object.
 

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

Back
Top Bottom