Thứ nhất: Xin lỗi mình không có quyền gửi file, cái này mình cũng muốn hỏi mấy bạn là có phải do mình là thành viên mới hay sao mà không được phép gửi và tải file.
Thứ hai: Dãy đó là mình ví dụ một số hàng thôi, chứ nó không có quy luật gì hết bạn ơi, thế mới chán chứ.
Ví dụ: có hành thì như thế này
Tiền gửi 03 tháng lãi háng quý
hay
TGTK 3th lãi cuối kỳ
TG TK CKH 6 tháng lãi hàng tháng
Tiết kiệm 24 tháng lãi 6 tháng
nói chung là không có quy luật và mình muốn láy số đầu tiên (tức là kỳ hạn) thôi
Mình diễn tả như thể chắc đã rõ
Rất mong nhận được sự giúp đỡ.
Chán quá, sao mà chẳng cho mình gửi file
Tôi nhận dc mail của bạn rồi! Đây là file của bạn đấy!
ANH TUẤN
=LocSo([Ô/giá trị cần trích lọc],[ký tự ngăn cách])
To ca_dafi: Hình như công thức bạn làm chưa đáp ứng được yêu cầu của joankim rồi. Bạn cần dừng vòng lặp ngay khi tìm được con số đầu tiên và cho ra kết quả.Ví dụ: có hành thì như thế này
Tiền gửi 03 tháng lãi háng quý
hay
TGTK 3th lãi cuối kỳ
TG TK CKH 6 tháng lãi hàng tháng
Tiết kiệm 24 tháng lãi 6 tháng
nói chung là không có quy luật và mình muốn láy số đầu tiên (tức là kỳ hạn) thôi
Mình diễn tả như thể chắc đã rõ
Rất mong nhận được sự giúp đỡ.
Chán quá, sao mà chẳng cho mình gửi file
Cách này gần giống với cách của tôi... tuy nhiên của tôi lại làm bằng công thức bình thường!Em xin góp 1 function:
=LSO(Dữ liệu cần lọc số)
Option Explicit
Sub KyHan()
Dim lRow As Long, jW As Long
lRow = Range("A65432").End(xlUp).Row
For jW = 2 To lRow
With Range("A" & jW)
.Offset(, 4) = LSO(.Value)
End With
Next jW
End Sub
To ca_dafi: Hình như công thức bạn làm chưa đáp ứng được yêu cầu của joankim rồi. Bạn cần dừng vòng lặp ngay khi tìm được con số đầu tiên và cho ra kết quả.
VD:
TG TK CKH 6 tháng lãi hàng tháng --> kq = 6
Tiết kiệm 24 tháng lãi 6 tháng --> kq = 24
Cho em hỏi hàm nào có thể cho phép lấy số từ 1 dãy ký tự
Vd: Ô A1 có nội dung là "Hôm nay là ngày 11 tháng 04 năm 2008"
Ở ô B1 em muốn lấy ra các số 11,04,2008 từ ô A1 thì em phải làm thế nào.
Nhờ các bác giúp em với!
Thanks nhiều.
=mid(LocSo(Text,"-"),1,find("-",LocSo(Text,"-"),1)-1)
Function LocSo(TargetText As String, Optional Signal As String)
Dim ResultText As String
Dim TextLenth As Integer
Dim ZPoint(1000, 1) As Variant
IZ = -1
TextLenth = Len(TargetText) 'Đếm số ký tự trong chuỗi cần lọc
If TextLenth = 0 Then
LocSo = 0
Else
'Quét các ký tự từ trái qua phải, ký tự nào là số thì cho vào cột 1 của mảng ZPoint,
'Cột 0 của Mảng ZPoint lưu số thự tự của ký tự số trong chuỗi (biến ZZ)
For ZZ = 1 To TextLenth
If IsNumeric(Mid(TargetText, ZZ, 1)) Then
ResultText = ResultText + Mid(TargetText, ZZ, 1) 'Thay thế kết quả bằng kết quả lần trước nối với ký tự kế tiếp tìm được
IZ = IZ + 1 'Chỗ này là thể hiện Row number của Mảng ZPoint
ZPoint(IZ, 0) = ZZ 'Ghi lại số thứ tự của ký tự số tìm được trong chuỗi, gán vào cột 0
ZPoint(IZ, 1) = Mid(TargetText, ZZ, 1) ' Gán ký tự số tìm được vào cột 1 của mảng ZPoint
End If
Next ZZ
'Hoàn tất việc lọc các ký tự số
'----------------------------------------------------------
'Trả kết quả về ký tự số đầu tiên tìm được, mục đích để chèn vào ký hiệu phân cách (biến Signal)
ResultText = ZPoint(0, 1)
'Nối lần lượt các giá trị số tìm được theo thứ tự , cách nhau bởi ký hiệu phân cách "Signal":
'Thuật toán như sau: Mảng Zpoint có Cột 0 là cột lưu thứ tự của ký tự số trong chuỗi,
'Nếu hai ký tự số đứng kế nhau trong chuỗi thì hiệu số của hai vị trí này là 1,
'Nếu Hiệu số là 1 thì kết quả = kết quả nối với ký tự số kế tiếp đó,
'Nếu hiệu số <> 1 thì kết quả = kết quả + ký hiệu phân cách + ký tự số kế tiếp
For JZ = 1 To IZ
If ZPoint(JZ, 0) - ZPoint(JZ - 1, 0) = 1 Then
ResultText = ResultText + ZPoint(JZ, 1)
Else
ResultText = ResultText + Signal + ZPoint(JZ, 1)
End If
'a = MsgBox(ResultText, , "tip")
Next JZ
'a = MsgBox("Ket qua la: " & ResultText, , "tip")
LocSo = ResultText
End If
End Function