Tìm giá trị số của một chuỗi (1 người xem)

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

vophuonglan

Thành viên mới
Tham gia
3/12/09
Bài viết
2
Được thích
0
Các bạn cho mình hỏi: Trong bảng tính excel mình muốn tìm giá trị của một chuổi thì phải làm sao dùng hàm nào?
Ví dụ: 43HID56 hoặc 120356GK: thì được giá trị là bao nhiêu?
 
Các bạn cho mình hỏi: Trong bảng tính excel mình muốn tìm giá trị của một chuổi thì phải làm sao dùng hàm nào?
Ví dụ: 43HID56 hoặc 120356GK: thì được giá trị là bao nhiêu?
Tìm giá trị của 1 chuỗi nghĩa là tìm như thế nào? Tức là tổng các số trong 1 chuỗi đó lại hay sao? (VD: 43HID56=18) Bạn giải thích rõ nhé!+-+-+-+
 
Theo ý mình hỏi là không tính tổng của dãy chuổi trên mà chỉ lấy những con số trong chuổi đó thôi. VD 43HID56=4356
 
Theo ý mình hỏi là không tính tổng của dãy chuổi trên mà chỉ lấy những con số trong chuổi đó thôi. VD 43HID56=4356
Cái này có nhiều trên diễn đàn rồi sao bạn không tìm kiếm nhỉ? nấu muốn dùng công thức thì cũng có (Anh ndu tạo 1 công thức tách số và tách chuỗi)
Còn muốn dùng VBA thì cũng có (Bạn chép cái add-in về và mở excel lên vào tool chọn add ins và tìm đến cái add - ins bạn vừa chép xong nhé)
Câu lện cho add-in là:
VD: A1 = 43HID56
B1 bạn nhập công thức = tachso(A1)
 
Lần chỉnh sửa cuối:
Nhẹ nhàng nhất bạn viết 1 Hàm UDF ngắn như sau

PHP:
Function Num(ch As String) As Long
Dim tam As String
For i = 1 To Len(ch)
If IsNumeric(Mid(ch, i, 1)) Then tam = tam & Mid(ch, i, 1)
Next
Num = Val(tam)
End Function

Giờ ta muốn lấy số trong chuỗi của ô A1 ta nhập =Num(A1) là có kết quả
 

File đính kèm

bạn ơi cho minh hỏi là , nếu tính tổng của chuỗi số đó thì dùng công thức gì
ví dụ như A1= 43HID56
 
Tặng bạn công thức mình sưu tầm được để tách số:

=SUM(MID(A1,LARGE(ISNUMBER(--MID(A1,ROW(1:25),1))* ROW(1:25),ROW($A$1:INDEX($A:$A,COUNT(--MID(A1,ROW(1:25),1))))),1)* 10^(ROW(INDEX(1:25,COUNT(--MID(A1,ROW(INDEX(1:25,1,1): INDEX(1:25,LEN(A1),1)),1)),1):INDEX(1:25,1,1))-1))

Lưu ý chuỗi không vượt quá 25 kí tự và nhớ Ctrl+shift enter nhé.
 
Lần chỉnh sửa cuối:
Các bạn cho mình hỏi: Trong bảng tính excel mình muốn tìm giá trị của một chuổi thì phải làm sao dùng hàm nào?
Ví dụ: 43HID56 hoặc 120356GK: thì được giá trị là bao nhiêu?
Theo ý mình hỏi là không tính tổng của dãy chuổi trên mà chỉ lấy những con số trong chuổi đó thôi. VD 43HID56=4356
anh SeaLand đã trả lời cho bạn :
Nhẹ nhàng nhất bạn viết 1 Hàm UDF ngắn như sau
PHP:
Function Num(ch As String) As Long
Dim tam As String
For i = 1 To Len(ch)
If IsNumeric(Mid(ch, i, 1)) Then tam = tam & Mid(ch, i, 1)
Next
Num = Val(tam)
End Function

Giờ ta muốn lấy số trong chuỗi của ô A1 ta nhập =Num(A1) là có kết quả
bạn ơi cho minh hỏi là , nếu tính tổng của chuỗi số đó thì dùng công thức gì
ví dụ như A1= 43HID56

__--__ Được voi đòi Hai Bà Trưng ah nghen !

Tặng bạn Hàm tự khai báo :
[GPECODE=vb]
Function Reg(Cell As Range) As LongDim Arr
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\d"
Set Arr = .Execute(CStr(Cell))
For Each Item In Arr
Reg = Reg + CLng(Item)
Next
End With
End Function
[/GPECODE]
hoặc
PHP:
Function Num(ch As String) As Long
Dim tam As Long
For i = 1 To Len(ch)
If IsNumeric(Mid(ch, i, 1)) Then tam = tam +Clng(Mid(ch, i, 1))
Next
Num = tam
End Function
 
Lần chỉnh sửa cuối:
Theo mình dùng Reg nên hạn chế dùng vòng lặp.
Mã:
Function RegSum(Str As String)
With CreateObject("Vbscript.Regexp")
    .Global = True
    .Pattern = "\D+"
    RegSum = Evaluate(.Replace(Str, "+0"))
End With
End Function
 
Theo mình dùng Reg nên hạn chế dùng vòng lặp.
Mã:
Function RegSum(Str As String)
With CreateObject("Vbscript.Regexp")
    .Global = True
    .Pattern = "\D+"
    RegSum = Evaluate(.Replace(Str, "+0"))
End With
End Function

ok , thanks bạn ! thế còn trường hợp chuỗi xyz355t5 =3+5+5+5 thì sửa code trên như thế nào bạn nhj ?
 
ok , thanks bạn ! thế còn trường hợp chuỗi xyz355t5 =3+5+5+5 thì sửa code trên như thế nào bạn nhj ?

Có thể là vầy:
Mã:
Function SumString(ByVal Text As String)
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "\D"
    Text = .Replace(Text, "")
    .Pattern = "\B"
    SumString = Evaluate(.Replace(Text, "+") & "+0")
  End With
End Function
 
Có thể là vầy:
Mã:
Function SumString(ByVal Text As String)
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "\D"
    Text = .Replace(Text, "")
    .Pattern = "\B"
    SumString = Evaluate(.Replace(Text, "+") & "+0")
  End With
End Function
Gộp lại cho gọn
PHP:
Function SumString(ByVal Text As String)
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "\D|\B"
    SumString = Evaluate(.Replace(Text, "+") & "+0")
  End With
End Function
 
Góp vui và cũng là cớ để giới thiệu một "kỹ thuật" trong Regular Expressions - Alternation and Grouping

Mã:
Function SumString(ByVal Text As String)
    With CreateObject("VBScript.RegExp")
        .Global = True
        .pattern = "([B][COLOR=#ff0000]?:[/COLOR][/B]\D+|\B)(\d)"
        Text = .replace(Text & "0", "+$1")
        SumString = Evaluate(Text)
        [B][COLOR=#0000ff]' hoặc SumString = Evaluate(.replace(Text & "0", "+$1"))[/COLOR][/B]
    End With
End Function

Trong pattern trên thì $1 = (\d) vì (?:\D+|\B) không được ghi nhớ.

Với pattern như trên thì Text sau khi replace không thiếu ký tự "+" và cũng không thừa. Nếu cần trả về chuỗi sau replace thì chuỗi rất đẹp, tránh tình trạng vd. "++1++++5+5++++4++++1+2+3+++++++++++++++++5+0"

Chẳng hạn nếu text = "q1abc55def4ghi123xyz5"
thì sau replace ta có "+1+5+5+4+1+2+3+5+0"
 
Cái này có nhiều trên diễn đàn rồi sao bạn không tìm kiếm nhỉ? nấu muốn dùng công thức thì cũng có (Anh ndu tạo 1 công thức tách số và tách chuỗi)
Còn muốn dùng VBA thì cũng có (Bạn chép cái add-in về và mở excel lên vào tool chọn add ins và tìm đến cái add - ins bạn vừa chép xong nhé)
Câu lện cho add-in là:
VD: A1 = 43HID56
B1 bạn nhập công thức = tachso(A1)

Nếu mình muốn tách số rùi lại gộp vào và thêm chữ chẳng hạn như: Mình có dãy mã: 2016822, làm sao để trở thành: 1.6xPN8X22kg. Bạn nào bít giúp mình với...Hepl me !!!!
 
Nếu mình muốn tách số rùi lại gộp vào và thêm chữ chẳng hạn như: Mình có dãy mã: 2016822, làm sao để trở thành: 1.6xPN8X22kg. Bạn nào bít giúp mình với...Hepl me !!!!
Nếu chỉ số 1 số thì bạn dùng CT này:
Mã:
=REPLACE(REPLACE(REPLACE(MID(A1,3,100),2,0,"."),4,0,"xPN"),8,0,"x")&"kg"
 
Ngoài cách dùng code ra. có công thức nào ko bạn? Mình ko dành về code tí nào. hic

Cái dòng =REPLACE(REPLACE(REPLACE(MID(A1,3,100),2,0,"."),4,0,"xPN"),8,0,"x")&"kg" là công thức excel.

Còn chữ "Code:" mà bạn nhìn thấy đó là thẻ code để gửi bài của diễn đàn, nội dung trong khung đó được phân biệt, dễ đọc.
 
Cái dòng =REPLACE(REPLACE(REPLACE(MID(A1,3,100),2,0,"."),4,0,"xPN"),8,0,"x")&"kg" là công thức excel.

Còn chữ "Code:" mà bạn nhìn thấy đó là thẻ code để gửi bài của diễn đàn, nội dung trong khung đó được phân biệt, dễ đọc.

Vậy ah? Cảm ơn bạn nhiều nha, Mình mới tham gia diễn đàn nên ko biết
 
Cái dòng =REPLACE(REPLACE(REPLACE(MID(A1,3,100),2,0,"."),4,0,"xPN"),8,0,"x")&"kg" là công thức excel.

Còn chữ "Code:" mà bạn nhìn thấy đó là thẻ code để gửi bài của diễn đàn, nội dung trong khung đó được phân biệt, dễ đọc.


Công thức của bạn thì mình áp dụng rùi nhưng chỉ đúng với 1 mã 7 số, mà mình còn có mã 8, 9 số. vậy làm cách kết hợp nào đọc được ko bạn? Cảm ơn bạn !!!
VD: 202212525 = 2.2xPN12.5x25kg
 

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

Back
Top Bottom