Sử dụng hàm nào trong excel để lấy 1 số ký tự trong chuỗi

Liên hệ QC
Hình như nếu số ký tự nằm trong [] ở đầu mà nhiều hơn 5 ký tự thì công thức này "tèo"
Thí dụ:"[123456] [teexiii] hu hu hu"
Thân
Lý do là ở phần in đậm bác cò ơi
Chào các anh chị diễn đàn, em có một text dạng thế này "[1234] [teexiii] test", em muốn lấy ký tự bên trong [ ] thì phải làm sao

Cụ thể em muốn xuất ra là: "1234, teexiii"

Chiều dài của dãy số là 4 số không đổi, nhưng chiều dài chữ thì nó thay đổi
 
Lần chỉnh sửa cuối:
Huhu, mình không đọc kỹ
"Xó zì" dhn46 nhé
Thân
Thêm một công thức

Kết quả xuất ra có cái dấu phẩy ở giữa cho giống với kết quả của bạn ra câu hỏi
Híc

:) đúng là dhn46 cũng không đọc kỹ yêu cầu, may có bác "nhắc bài". Để phòng trường hợp có nhiều hơn 4 số thì bạn có thể dùng công thức sau
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A1,FIND("]",A1,8)),"[",""),"]","")," ",", ")

Hoặc

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(LEFT(SUBSTITUTE(A1," ",REPT(" ",255)),500)),"[",""),"]","")," ",", ")
 
Chào thầy,

Có thể áp dụng phương trên vào ví dụ dưới đây của em được không thầy ?

Em dùng hàm trong bảng 2 là

=B9&"."&LEFT(A9,1)&MID(A9,FIND(" ",A9)+1,1)&MID(A9,FIND(" ",A9,FIND(" ",A9)+1)+1,1)&MID(A9,FIND(" ",A9,FIND(" ",A9)+1+FIND(" ",A9))+1,1)

Hàm hơi dài và phải bẫy lỗi rất mệt, vì số ký tự trong chuỗi không cố định
Bài ví dụ trên báo lỗi giá trị vì hàm FIND không biết được khoảng trắng cuối cùng để dừng lại

Thanks !
Dùng công thức này đơn giản dễ hiểu nè nó dài mà nó nhẹ, công thức chỉ đúng với Họ và chữ lót 4 chữ thôi nếu nhiều hơn tự động thêm vào (chắc chữ Họ lót tối đa tới 4 thôi nhiều quá cũng uể --=0). Ví dụ dữ liệu nằm ở A1, và B1
Mã:
=IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=0,B1&"."&LEFT(A1,1),IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=1,B1&"."&LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1),IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=2,B1&"."&LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(SUBSTITUTE(A1," ","",1),FIND(" ",SUBSTITUTE(A1," ","",1))+1,1),IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))=3,B1&"."&LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(SUBSTITUTE(A1," ","",1),FIND(" ",SUBSTITUTE(A1," ","",1))+1,1)&MID(SUBSTITUTE(A1," ","",2),FIND(" ",SUBSTITUTE(A1," ","",2))+1,1),""))))
 
Cảm ơn các anh nhiều, em đã làm được :D
 
Em có bài này anh chị giúp em với
 

File đính kèm

  • Book1.xlsx
    11.4 KB · Đọc: 13
Em có 4 số này​
AB/13P|01444
AC/13P|01444A
AD/13P|01444BC
AD/13P|01444ABC
Bác nào giúp tách lấy thành các số từ số 0 trở về bên phải (Ví dụ:
01444
01444A
01444ABC

Tức là bỏ từ dấu gạch dọc về bên trái đi. Em cảm ơn
 

Em có 4 số này​
AB/13P|01444
AC/13P|01444A
AD/13P|01444BC
AD/13P|01444ABC
Bác nào giúp tách lấy thành các số từ số 0 trở về bên phải (Ví dụ:

01444
01444A
01444ABC

Tức là bỏ từ dấu gạch dọc về bên trái đi. Em cảm ơn
Mã:
=replace(chuoi,1,find("|",chuoi),"")
 
Ai giup em với!!
VD: Cột mã gồm:
  1. B100GI
  2. A200VB
  3. C1320GA
  4. B50BI
Xác định số lượng, là các ký số bên trong côt Mã????
Em phải dùng hàm nào đây ạ!! Em cần gắp lắm mọi người ơi
**~**
 
Ai giup em với!!
VD: Cột mã gồm:
  1. B100GI
  2. A200VB
  3. C1320GA
  4. B50BI
Xác định số lượng, là các ký số bên trong côt Mã????
Em phải dùng hàm nào đây ạ!! Em cần gắp lắm mọi người ơi
**~**

Với dữ liệu như trên, tôi đoán là dùng công thức này sẽ phù hợp:
Mã:
=MID(A1,2,LEN(A1)-3)
Với cell A1 là dữ liệu gốc
 
Các thầy ơi em có bài này mong các thầy giúp em
Em muốn lọc các số ra khỏi dãy chữ nhưng phân chia theo từng cột.
Mong các thầy giúp em
 

File đính kèm

  • Loc So.xlsx
    8.9 KB · Đọc: 22
Các thầy ơi em có bài này mong các thầy giúp em
Em muốn lọc các số ra khỏi dãy chữ nhưng phân chia theo từng cột.
Mong các thầy giúp em
Thử hàm này xem nhé bạn vukody :
PHP:
Function getNum(Rng As String, i As Long)
Dim objMatches As Object
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+"
        .Global = 1
        .IgnoreCase = 1
        Set objMatches = .Execute(Rng)
            getNum = Val(objMatches(i))
    End With
End Function
 

File đính kèm

  • Loc So.xlsm
    15 KB · Đọc: 34
Lần chỉnh sửa cuối:
Thử hàm này xem nhé bạn vukody :
PHP:
Function getNum(Rng As String, i As Long)
Dim objMatches As Object
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+"
        .Global = 1
        .IgnoreCase = 1
        Set objMatches = .Execute(Rng)
            getNum = Val(objMatches(i))
    End With
End Function

Cảm ơn Hoa Mặt Trời nhiều lắm hehe :D
 
ad cho mình hỏi mình có chuỗi ký tự "cho mình hỏi làm như thế nào" cần lấy những chữ cái đầu tiên của từng từ "cmhlntn"

cho mình hỏi làm như thế nào = cmhlntn
Thank!
 
ad cho mình hỏi mình có chuỗi ký tự "cho mình hỏi làm như thế nào" cần lấy những chữ cái đầu tiên của từng từ "cmhlntn"

cho mình hỏi làm như thế nào = cmhlntn
Thank!
Dùng thử hàm này xem sao
Mã:
Public Function KTD(Str)
Dim cl As Long
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\s\S"
For cl = 0 To .Execute(" " & Str).Count - 1
KTD = KTD & Trim(.Execute(" " & Str)(cl))
Next cl
End With
End Function
Cú pháp =KTD( 1 Ô nào đó )
 
Dùng thử hàm này xem sao
Mã:
Public Function KTD(Str)
Dim cl As Long
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\s\S"
For cl = 0 To .Execute(" " & Str).Count - 1
KTD = KTD & Trim(.Execute(" " & Str)(cl))
Next cl
End With
End Function
Cú pháp =KTD( 1 Ô nào đó )
Thường khi người ta dùng RegExp để tránh đụng đến vòng lập. Đàng này vừa RegExp vừa vòng lập thì hóa ra.. thừa
Bởi nếu tôi mà dùng vòng lập thì tôi chỉ hàm LEFT thôi cũng xong!
 
Web KT
Back
Top Bottom