Giúp mình tách số ra khỏi chuỗi thành số riêng trong từng ô

Liên hệ QC
Bạn làm theo cú pháp gì vậy??? bạn muốn tách ra là 01234 một chuỗi và abcd một chuỗi ?
Đây là bài "tách số ra khỏi chuỗi" nhưng thực ra là tách giá trị của số ra khỏi chuỗi. Vd : chuối 1234abcd ra là 1234, tôi cũng cần dùng code này nhưng muốn tách "các ký tự số" ra chứ ko phải giá trị. VD: chuỗi 01234abcd ~> tôi muốn : 01234 chứ ko phải như code này là 1234. Các anh chị giúp dùm
 
Đây là bài "tách số ra khỏi chuỗi" nhưng thực ra là tách giá trị của số ra khỏi chuỗi. Vd : chuối 1234abcd ra là 1234, tôi cũng cần dùng code này nhưng muốn tách "các ký tự số" ra chứ ko phải giá trị. VD: chuỗi 01234abcd ~> tôi muốn : 01234 chứ ko phải như code này là 1234. Các anh chị giúp dùm
Chuỗi nằm ở A1, bạn dùng công thức này :
PHP:
=LEFT(A1,COUNT(--LEFT(A1,COLUMN(INDIRECT("1:"&LEN(A1))))))
Kết thúc bằng Ctrl+Shift+Enter
 
Chào Anh Tuấn

Mình cũng có bài toán tương tự nhưng không thể giải được, nhờ bạn hỗ trợ giúp!
Thanks.
 

File đính kèm

  • Tachso_06(1).xls
    30.5 KB · Đọc: 34
Chào Anh Tuấn

Mình cũng có bài toán tương tự nhưng không thể giải được, nhờ bạn hỗ trợ giúp!
Thanks.
Cho code này vào 1 module, rồi tại AF2 nhập =tong($A$2:$AE$2,"B")
PHP:
Function TONG(vung As Range, dk As String)
Dim data, it, kq, tam
data = vung.Value
For Each it In data
    tam = UCase(it)
    If Left(tam, 1) = UCase(dk) Then
        kq = kq & "+" & (Replace(tam, dk, ""))
    End If
Next
kq = Replace(kq, "+", "", 1, 1)
TONG = Evaluate(kq)
End Function
 
Chào Anh Tuấn

Mình cũng có bài toán tương tự nhưng không thể giải được, nhờ bạn hỗ trợ giúp!
Thanks.
Không phải Anh Tuấn cũng bon chen tí.

Nếu bạn dùng Ex2007 trở lên dùng thử cái sau
Mã:
=SUM(IFERROR(--RIGHT(A2:AE2,LEN(A2:AE2)-1),0)*(LEFT(A2:AE2,1)="b"))

Nếu 2003 thì dùng cái sau

Mã:
=SUM(IF(ISERROR(--RIGHT(A2:AE2,LEN(A2:AE2)-1)),0,--RIGHT(A2:AE2,LEN(A2:AE2)-1))*(LEFT(A2:AE2,1)="b"))

kết thúc Ctrl + Shift + Enter. Chữ cái C thì thay B bằng C
 
Công thức này dùng cũng rất oki bạn ạ. Cảm ơn bạn nhiều /-*+/
Không phải Anh Tuấn cũng bon chen tí.

Nếu bạn dùng Ex2007 trở lên dùng thử cái sau
Mã:
=SUM(IFERROR(--RIGHT(A2:AE2,LEN(A2:AE2)-1),0)*(LEFT(A2:AE2,1)="b"))

Nếu 2003 thì dùng cái sau

Mã:
=SUM(IF(ISERROR(--RIGHT(A2:AE2,LEN(A2:AE2)-1)),0,--RIGHT(A2:AE2,LEN(A2:AE2)-1))*(LEFT(A2:AE2,1)="b"))

kết thúc Ctrl + Shift + Enter. Chữ cái C thì thay B bằng C
 
Bạn ơi, khi mình nhập công thức =Tong(...) thì nó báo lỗi #name?
Không biết mình missing chổ nào rồi :(

Cho code này vào 1 module, rồi tại AF2 nhập =tong($A$2:$AE$2,"B")
PHP:
Function TONG(vung As Range, dk As String)
Dim data, it, kq, tam
data = vung.Value
For Each it In data
    tam = UCase(it)
    If Left(tam, 1) = UCase(dk) Then
        kq = kq & "+" & (Replace(tam, dk, ""))
    End If
Next
kq = Replace(kq, "+", "", 1, 1)
TONG = Evaluate(kq)
End Function
 
Chào Anh Tuấn

Mình cũng có bài toán tương tự nhưng không thể giải được, nhờ bạn hỗ trợ giúp!
Thanks.
Em bon chen tí :
PHP:
Function SumNumbers(Rng As Range, first As String) As Double
    Dim k As Long, i As Long
    Dim sArr()
    sArr = Rng.Value
    For i = 1 To UBound(sArr, 2)
    If UCase(sArr(1, i)) Like UCase(first) & "*" Then
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+(\.\d+)?"
            If .test(sArr(1, i)) Then
                SumNumbers = SumNumbers + .Execute(sArr(1, i))(0)
            End If
    End With
    End If
    Next
End Function
Tại ô AF2 nhập =SumNumbers(A2:AE2,"b") copy công thức xuống. Có thể tính tổng với nhiều ký tự bắt đầu ví dụ =SumNumbers(A2:AE2,"bbdf").....
 
Lần chỉnh sửa cuối:
Chào Anh Tuấn

Mình cũng có bài toán tương tự nhưng không thể giải được, nhờ bạn hỗ trợ giúp!
Thanks.

Em của Anh Tuấn làm bài này thử hen
Công thức cho AF2
Mã:
=SUM(IF(LEFT($A2:$AE2)=RIGHT(AF$1),1*REPLACE($A2:$AE2,1,1,0),0))
Bấm Ctrl + Shift + Enter ---> Kéo fill sang phải và xuống dưới
------------------
Bài này còn một rắc rối nhỏ: Nếu mang file sang máy tính có Control Panel định dạng số theo kiểu Việt Nam thì sẽ.. tèo
 
Cảm ơn anh @ndu96081631 :)
 
Thưa Thầy Ndu,

Thầy có thể giải thích giúp em kết quả của name POS, TEMP là gì trong quá trình tính toán của excel trong phần tách số của Thầy ở trên được không ạ?

Cảm ơn Thầy trước ạ.
 
Lần chỉnh sửa cuối:
Xin các bác trích giúp em ô này:
[Nguyen Hoang Anh nop tien BH XM 16 (354838+354839) ;8701 nop tien BH xe may so seri 0354351,0354352,0354353]
Ra thành số các ô tương ứng với số lượng number xuất hiện trong chuỗi ->
16 | 354838 | 354839 | 8701 | 354351 | 354352 | 354353 | ...

Tại vì các Code bên trên chỉ tách được số, khi giữa các cụm số phân cách với nhau bằng ít nhất 1 dấu cách _ (space).
Trong khi thực tế bài toán của em, thì các cụm số có thể phân cách với nhau không bằng dấu cách, mà bằng ký tự bất kỳ (ngoài các ký tự số ra: 0..9).

Mong các bác giúp đỡ em với ạ.
 
Lần chỉnh sửa cuối:
Xin các bác trích giúp em ô này:
[Nguyen Hoang Anh nop tien BH XM 16 (354838+354839) ;8701 nop tien BH xe may so seri 0354351,0354352,0354353]
Ra thành số các ô tương ứng với số lượng number xuất hiện trong chuỗi ->
16 | 354838 | 354839 | 8701 | 354351 | 354352 | 354353 | ...

Tại vì các Code bên trên chỉ tách được số, khi giữa các cụm số phân với cách nhau bằng ít nhất 1 dấu cách _ (space).
Trong khi thực tế bài toán của em, thì các cụm số có thể phân cách nhau không bằng dấu cách, mà bằng ký tự đặc biệt bất kỳ (ngoài các ký tự: A..Z, a..z, 0..9).

Mong các bác giúp đỡ em với ạ.
Giả sử dữ liệu bạn ở A1, bạn dùng CT này:
Mã:
B1=LARGE(IFERROR(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A$1," ",REPT(" ",100)),",",REPT(" ",100)),";",REPT(" ",100)),"[",REPT(" ",100)),"]",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100),0),ROW(A1))
Ctrl+Shift+Enter rồi fill xuống khi nào xuất hiện số 0 thì dừng!!!
P/s: còn kí tự đặc biệt nào thì bạn tự thêm hàm SUBSTITUTE để loại bỏ kí tự đó nhe bạn!!!
 
Vâng, cảm ơn bác!
Nhưng em nhầm chút (nên đã sửa lại).

Bác có thể loại trừ theo kiểu ngược lại:
Tức là giữa 2 Cụm số trong Chuỗi, có thể phân cách bằng Một hoặc Nhiều ký tự bất kỳ (kể cả xen kẽ Space hay không), chứ không chỉ riêng các Ký tự đặc biệt (đương nhiên trừ Number từ 0..9).

Do yêu cầu thay đổi như vậy, nên trong CT trên, nếu em thay hết các Ký tự có trong Bảng mã (trừ 0..9) thì chết em mất.

Và nữa, bác có thể cho Kết quả nó ra Các ô trên cùng 1 Hàng (chứ không phải là trên cùng 1 Cột) được không. Vì Dữ liệu của em, cũng như thông thường, nó theo nhiều hàng (Nội dung tương tự Cell trên), nên chắc em sẽ phải kéo CT xuống các hàng dưới bác ạ.

Không biết nó có phải Mảng miếc gì đó không, mà em lại chưa học đến.
Bác giúp em nhé.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom