Tách số và chữ ngẫu được sắp xếp ngẫu nhiên (1 người xem)

Liên hệ QC

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

Em nghĩ anh và bạn mhung2005 hiểu sai ý tác giả, theo những gì tác giả mô tả có lẽ bạn ấy muốn tính E = A1+B1+C1+D1 =12+4+4+645 = 665 mới đúng??? Không dùng VBA thì yêu cầu này khó nhai, hic!


Em có bài toán tương tự như ý của bác ở trên đề cập, mọi người giúp em với: (em dùng được 2007)

Chuỗi: Bàn,:20 Ghế,:24 Xe,:50 Dụng cụ,: 56

Nhờ các bác tách số ra và tính sum giúp em được không ạ: 20+24+50+56

Em cám ơn nhiều :x
 
Em có bài toán tương tự như ý của bác ở trên đề cập, mọi người giúp em với: (em dùng được 2007)

Chuỗi: Bàn,:20 Ghế,:24 Xe,:50 Dụng cụ,: 56

Nhờ các bác tách số ra và tính sum giúp em được không ạ: 20+24+50+56

Em cám ơn nhiều :x

Dữ liệu ví dụ thấy không có qui luật rõ ràng - có chỗ sau dấu ":" là chữ số, có chỗ sau ":" là dấu cách rồi mới đến chữ số. Nhưng không sao. Hàm dưới đây tính tổng tất cả các số tự nhiên (mà bài của bạn thì số bàn ghế, bia, rượu thì là những số tự nhiên) có trong chuỗi. Không quan trọng chuyện trước chữ số đầu và sau chữ số cuối của mỗi số là ký tự gì. Trong tương lai bạn có thể thay đổi cấu trúc dữ iệu tùy ý. vd. chuỗi
PHP:
Bàn,:20 Ghế,*24 Xe,-50 Dụng cụ,: (chỉ toàn hàng hiệu thôi nhé, hãng xịn mà) 56
mà không phải thay đổi công thức, code
Vào VBA --> Insert --> Module --> dán code dưới đây

Mã:
Function SumNumeric(ByVal text As String) As Long

    Dim objRegExp As Object
    Dim baonhieu As Long, match As Object
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp
        .Pattern = "\d+"
        .Global = True
        If .Test(text) Then
            For Each match In .Execute(text)
                baonhieu = baonhieu + match.Value
            Next
        End If
    End With
    
    SumNumeric = baonhieu
    Set objRegExp = Nothing
End Function

Giả sử ô A1 có chuỗi, kết quả tại B1 thì công thức cho B1 là = SumNumeric(A1)
Có thể sửa code để:
1. tính các số (không nhất thiết nguyên dương) kể cả có phần thập phân, số âm
2. nhập bảng các chuỗi và tính tổng cho muỗi chuỗi - để đập một nhát xuống sheet. Đã làm được cho 1 chuỗi thì cũng làm được cho 1 mảng chuỗi.

Về hàm thì bạn tự test, tôi chỉ viết "nháp" thế thôi.
 
Trùi ui bác pro quá, em ngưỡng mộ quá ạ :x
Em cảm ơn nha :)
 
Ngày 6/5

Cảm ơn các bạn bây giờ mình cần hỏi như sau:

VD: AB5 + AC4 + AB + AC + 2.5A3 + 3B4 3B1.5 + 2C0.5

làm sao cộng tất cả các số đứng trước ký tự đầu tiên: đó là 2.5A3 + 3B4 3B1.5 + 2C0.5 = 10.5

làm sao cộng tất cả các số đứng sau ký tự đầu tiên: AB5 + AC4 + 2.5A3 + 3B4 3B1.5 + 2C0.5 = 18

Cụ thể như file đính kèm, cần tính khoảng 30 cột cho 1 tháng lương, cần tính tổng các số đứng trước ký tự đầu tiên của mỗi dòng và tổng các số đứng sau ký tự cuối cùng. Chủ yếu là áp dụng trên 2003

Cảm ơn các bạn

Bạn nên chú ý quy định của Diễn đàn nhé, không nên dùng quá nhiều chữ đậm màu đỏ, không là phạm quy đó!
 
Em có bài toán tương tự như ý của bác ở trên đề cập, mọi người giúp em với: (em dùng được 2007)

Chuỗi: Bàn,:20 Ghế,:24 Xe,:50 Dụng cụ,: 56

Nhờ các bác tách số ra và tính sum giúp em được không ạ: 20+24+50+56

Em cám ơn nhiều :x

Góp thêm 1 hàm để cộng theo dữ liệu dạng này, và hàm này có thể tách số ra khởi chuỗi nếu xoá hết khoảng trắng trong chuỗi.

PHP:
Public Function Congso(cell As String) As Long
Dim i, tam, congvao
For i = 1 To Len(cell)
    If IsNumeric(Mid(cell, i, 1)) Then
        If Mid(cell, i + 1, 1) = " " Then congvao = "+"
    End If
    If IsNumeric(Mid(cell, i, 1)) Then
        tam = tam & Mid(cell, i, 1) & congvao
    End If
    congvao = Empty
Next
If Right(tam, 1) = "+" Then tam = Left(tam, Len(tam) - 1)
Congso = Evaluate("=" & tam)
End Function
 
Web KT

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

Back
Top Bottom