Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 14
Ðề tài: Hàm tách số từ trong chuỗi
-
16-02-09, 12:04 PM #1
Hàm tách số từ trong chuỗi
Trong một chuỗi gồm cả số và chữ, hàm RemoveNonNumeric dưới đây sẽ tách các số đó. Các số rời rạc được sắp xếp với nhau thành một con số để có thể tính toán được. Hàm này ngắn gọn hơn hàm trong sách Lập trình VBA
PHP Code:'Nguồn từ tác giả Andrew Baker trang www.vbusers.com'
Function RemoveNonNumeric(sNumberToClean As String) As String
Const NUMERIC_CHARS = "0123456789.,"
Dim lThisChar As Long
Dim sResult As String
For lThisChar = 1 To Len(sNumberToClean)
If InStr(1, NUMERIC_CHARS, Mid$(sNumberToClean, lThisChar, 1)) > 0 Then
'Found a numeric character'
sResult = sResult + Mid$(sNumberToClean, lThisChar, 1)
End If
Next
Return the result
RemoveNonNumeric = sResult
End Function
Kết quả như ở hình 18-16 dưới đây:
thay đổi nội dung bởi: BNTT, 16-02-09 lúc 01:06 PM Lý do: Sửa lại màu trong PHP tí cho nó Pro hơn...
-
Có 9 thành viên cảm ơn PhanTuHuong về bài viết này:
-
16-02-09, 01:39 PM #2
Thầy ơi! Tôi nghĩ cái này mới là vô địch đây:
Tách số không dùng vòng lặp
-
Có 2 thành viên cảm ơn ndu96081631 về bài viết này:
-
16-02-09, 02:03 PM #3
Hàm tách số từ chuỗi
Và đây là hàm ngược lại với hàm trên :PHP Code:Function StrNonNum(Str As String) As String
Dim i as long
For i = 1 To Len(Str)
If IsNumeric(Mid(Str, i, 1)) Then StrNonNum = StrNonNum + Mid(Str, i, 1)
Next
End Function
PHP Code:Function StrNonText(Str As String) As String
StrNonText = Replace(Replace(Replace(Replace(Replace(Replace _
(Replace(Replace(Replace(Replace(Str, "0", ""), "1", ""), "2", "") _
, "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
End Function
-
Có 4 thành viên cảm ơn hoangdanh282vn về bài viết này:
-
14-05-09, 09:00 PM #4
Thành viên mới
- Tham gia ngày
- 05 2008
- Bài gởi
- 1
- Cảm ơn
- 1
- Được cảm ơn 0 lần trong 0 bài viết
Bạn có thể giúp mình cách cài hàm tách số từ trong chữ hay không
-
14-05-09, 10:31 PM #5
Trên là code sử dụng thư viện của VBScript với ứng dụng Class của nó là RegExp. Đứng về góc độ lập trình thì để làm được việc ngắn gọn trên, các nhà lập trình cũng phải viết những mã lệnh xử lý và có lẽ vẫn là dùng vòng lặp. Quá trình làm việc đó được gói trong một Class với hàm Replace. Việc ngắn gọn đó là do ta nhìn về hình thức thôi. Việc tốc độ chạy nhanh hay không em chưa có dịp so sánh nhưng VBScript được lập trình bằng C++ bởi các chuyên gia MS thì chắc tốc độ là rất nhanh.Code:Function TachSo(Cell As Range) As Double Set Temp = CreateObject("VBScript.RegExp") Temp.Global = True Temp.Pattern = "[^0-9]" TachSo = Temp.Replace(Cell, "") End Function
Nếu hàm trên anh Hướng viết trong DLL rồi nó cài vào máy, người ta chỉ cần viết thế này
Một người nào đó nhìn vào code trên lại thấy "ngắn gọn quá, không dùng vòng lặp".Code:Function TachSo(Cell As Range) As Double Set Temp = CreateObject("VB6DLL.TACHGIATRI") Temp.RemoveNonNumeric(Cell) Set Temp = Nothing End Function
Nói vậy chứ em quan điểm vẫn thích áp dụng tối đa những thư viện đã có trong hệ thống, hoặc các thư viện được cung cấp free mà nó đã được thừa nhận là tốt. Mình tận dụng nó để làm ra những cái có một giá trị mới. Cần viết riêng trong trường hợp tin rằng cái của mình là tối ưu hơn hoặc để học tập.
-
Có 7 thành viên cảm ơn Nguyễn Duy Tuân về bài viết này:
-
11-03-10, 11:04 PM #6
Thành viên mới
- Tham gia ngày
- 06 2009
- Bài gởi
- 22
- Cảm ơn
- 15
- Được cảm ơn 1 lần trong 1 bài
Nếu em muốn tách số trong dãy ký tự này thì sao ạ?
12/03/2010
-
12-03-10, 08:36 AM #7
-
14-04-10, 11:52 AM #8
Thành viên mới
- Tham gia ngày
- 08 2008
- Bài gởi
- 7
- Cảm ơn
- 0
- Được cảm ơn 0 lần trong 0 bài viết
Em có một dãy ký tự gồm cả số và chữ vd: mã thẻ bảo hiểm 52300725716TC52117. Giờ em muốn tách lấy thành 1 cột có 2 ký tự chữ trong chuỗi trên. Xin được giúp đỡ.
-
07-05-11, 11:24 AM #9
Thành viên mới
- Tham gia ngày
- 05 2011
- Bài gởi
- 1
- Cảm ơn
- 0
- Được cảm ơn 0 lần trong 0 bài viết
-
18-05-11, 04:08 PM #10
Thành viên hoạt động

- Tham gia ngày
- 04 2008
- Nơi Cư Ngụ
- Lai Châu
- Bài gởi
- 122
- Cảm ơn
- 38
- Được cảm ơn 71 lần trong 34 bài viết
Thông tin về chủ đề này
Users Browsing this Thread
Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)
Đề tài tương tự
-
Xin hỏi cách lấy chuỗi ký tự trước một ký tự trong chuỗi
Viết bởi kecodon trong chuyên mục Hỏi đáp những vấn đề khácTrả lời: 5Bài mới gởi: 17-03-12, 11:45 PM -
Trích ra một chuỗi con giống nhau ở vị trí bất kỳ trong các chuỗi mẹ khác nhau
Viết bởi Hang.Redtar trong chuyên mục Hàm và công thức ExcelTrả lời: 3Bài mới gởi: 04-12-10, 09:37 AM -
Trả về vị trí đạt giá trị max hoặc min trong chuỗi!
Viết bởi nguyentieu trong chuyên mục Giải thích, gỡ rối, xử lý lỗi công thứcTrả lời: 8Bài mới gởi: 05-05-10, 09:36 AM -
Dò tìm chuỗi trong chuỗi
Viết bởi voda trong chuyên mục Tìm kiếm, dò tìm và tham chiếuTrả lời: 13Bài mới gởi: 08-10-09, 10:27 AM -
Xin hỏi cách tìm trong chuỗi và trả kết quả về chuỗi khác.
Viết bởi kisskiss trong chuyên mục Xử lý chuỗi ký tựTrả lời: 7Bài mới gởi: 22-05-09, 10:08 AM








Trả Lời Với Trích Dẫn




Bookmarks