Lấy tất cả các kí tự trước số trong chuỗi

Liên hệ QC

redosolo

Thành viên chính thức
Tham gia
19/2/13
Bài viết
61
Được thích
4
Mình có 1 file excel gồm địa chỉ của Khách hàng.
Mình muốn lấy tất cả những kí tự trước số, chẳng hạn:
1. 524 Lý Thường Kiệt Quận 11 thì sẽ lấy 524
2. Kiot 3 Chợ Bến Thành Quận 1 thì sẽ lấy là Kiot 3
Đại khái là phải lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái
 
Mình có 1 file excel gồm địa chỉ của Khách hàng.
Mình muốn lấy tất cả những kí tự trước số, chẳng hạn:
1. 524 Lý Thường Kiệt Quận 11 thì sẽ lấy 524
2. Kiot 3 Chợ Bến Thành Quận 1 thì sẽ lấy là Kiot 3
Đại khái là phải lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái
Chắc phải dùng VBA
Cú pháp: =Layso(A1)
PHP:
Function LaySo(ByVal Cell)
Dim Str As String, Temp, Item
Str = Application.Trim(Cell)
Temp = Split(Application.Trim(Cell), Space(1))
For Each Item In Temp
   If IsNumeric(Item) Then
      LaySo = Item
      Exit Function
   End If
Next
End Function
 
Mình có 1 file excel gồm địa chỉ của Khách hàng.
Mình muốn lấy tất cả những kí tự trước số, chẳng hạn:
1. 524 Lý Thường Kiệt Quận 11 thì sẽ lấy 524
2. Kiot 3 Chợ Bến Thành Quận 1 thì sẽ lấy là Kiot 3
Đại khái là phải lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái
Theo như bạn yêu cầu là lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái thì trường hợp 1 sẽ có kết quả là số 5, không phải là 524
 
Mình có 1 file excel gồm địa chỉ của Khách hàng.
Mình muốn lấy tất cả những kí tự trước số, chẳng hạn:
1. 524 Lý Thường Kiệt Quận 11 thì sẽ lấy 524
2. Kiot 3 Chợ Bến Thành Quận 1 thì sẽ lấy là Kiot 3
Đại khái là phải lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái

thử tìm vị trí cần cắt xem sao
chuổi bạn ở A1
Mã:
=SMALL(IFERROR(FIND(ROW($1:$10)-1&" ",A1),""),1)
nhớ nhấn Ctrl Shift Enter
 
Theo như bạn yêu cầu là lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái thì trường hợp 1 sẽ có kết quả là số 5, không phải là 524
Theo kinh nghiệm mưa gió ở GPE thì mình thấy chỉ nên dựa vào kết quả tạm tính thủ công của các diễn giả, chứ dựa vào ngôn từ thì... bói mệt nghỉ luôn.
 
Code của bạn QuangHai chưa lấy đc những chữ trước số
Chẳng hạn Kiot 3 thì chỉ lấy đc số 3, nhưng ở đây mình cần lấy lun cả chữ Kiot 3
Rồi có những địa chỉ như 51A thì mình cũng mún lấy cả 51A
 
Code của bạn QuangHai chưa lấy đc những chữ trước số
Chẳng hạn Kiot 3 thì chỉ lấy đc số 3, nhưng ở đây mình cần lấy lun cả chữ Kiot 3
Rồi có những địa chỉ như 51A thì mình cũng mún lấy cả 51A
Vậy thử tiếp
PHP:
Function LaySo(ByVal Cell)
Dim Temp, i&
Temp = Split(Application.Trim(Cell), Space(1))
For i = 0 To UBound(Temp)
   If i > 0 And IsNumeric(Temp(i)) Then
      LaySo = Temp(i - 1) & Space(1) & Temp(i)
      Exit Function
   ElseIf IsNumeric(Temp(i)) Then
      LaySo = Temp(i)
      Exit Function
   ElseIf IsNumeric(Left(Temp(i), 1)) Then
      LaySo = Temp(i)
      Exit Function
   End If
Next
End Function
 
Code của bạn QuangHai chưa lấy đc những chữ trước số
Chẳng hạn Kiot 3 thì chỉ lấy đc số 3, nhưng ở đây mình cần lấy lun cả chữ Kiot 3
Rồi có những địa chỉ như 51A thì mình cũng mún lấy cả 51A

"Ké" với Quang Hải 1 Function rồi chạy luôn.
Híc!
PHP:
Public Function GPE(Rng As Range) As String
Dim L As Long, I As Long, J As Long
L = Len(Rng)
For I = 1 To L
    If IsNumeric(Mid(Rng, I, 1)) Then
        For J = I To L
            If Mid(Rng, J, 1) = Space(1) Then
                GPE = Left(Rng, J - 1)
                Exit Function
            End If
        Next J
    End If
Next I
End Function
Công thức =GPE(ô nào đó)

Mình muốn lấy tất cả những kí tự trước số, ....
Sau bi giờ sao có vụ 51A nữa vậy? Chữ A nằm sau số mà ta?
Chạy là đúng rồi Hải ơi.
 
Lần chỉnh sửa cuối:
Mình có 1 file excel gồm địa chỉ của Khách hàng.
Mình muốn lấy tất cả những kí tự trước số, chẳng hạn:
1. 524 Lý Thường Kiệt Quận 11 thì sẽ lấy 524
2. Kiot 3 Chợ Bến Thành Quận 1 thì sẽ lấy là Kiot 3
Đại khái là phải lấy được tất cả những kí tự trước số đầu tiên gặp tính từ bên trái
Thử dùng hàm tự tạo này xem sao
Nhập=Tach( 1 ô nào đó )
PHP:
Public Function Tach(Str)
With CreateObject("VBScript.RegExp")
.Pattern = "\D*\d*\S*"
Tach = .Execute(Str)(0)
End With
End Function
 
Thử dùng hàm tự tạo này xem sao
Nhập=Tach( 1 ô nào đó )
PHP:
Public Function Tach(Str)
With CreateObject("VBScript.RegExp")
.Pattern = "\D*\d*\S*"
Tach = .Execute(Str)(0)
End With
End Function

Hàm này gặp "a1b 123" thì nó trả về "a1b" thay vì "a1b 123".
Có thể đúng ý chủ thớt (lấy số nhà). Nhưng theo lô gíc của vấn đề thì không đúng.
 
Lần chỉnh sửa cuối:
Bác VetMiMi nói chính xác lun.
 
Web KT
Back
Top Bottom