PDA

View Full Version : Xin các Pro chỉ giúp có cách nào cộng dãy số trong 1 chuỗi không



meodenxiii
21-08-12, 03:58 PM
Mình có 1 chuỗi ký tự bao gồm các số và text. Bài toán đặt ra là chỉ cộng tổng các số lại thì liệu có hàm nào có thể làm được không vậy. Có cả hàng trăm cột kiểu này mà cộng tay chắc chết luôn. Nhờ các bác giúp xem có cách nào nhanh hơn không, hix. **~**

Vd chuỗi :

máytính,290687,chuột,28510,bànphím,2600912,m ànhình,1000000,vỏcây,500000,tainghe,1000,ổc ứng,167000,ổcd,167000


Kết quả ra được : 290678 + 28510 ...+ 167000 =

xuan.nguyen82
21-08-12, 04:04 PM
Bạn dùng Text to column với điều kiện là dấu phẩy sau đó sum lại bình thường nhé.

meodenxiii
21-08-12, 04:09 PM
Bạn dùng Text to column với điều kiện là dấu phẩy sau đó sum lại bình thường nhé.

Bạn hướng dẫn kỹ hơn giúp mình được không? Mình vẫn chưa hiểu lắm, hix +-+-+-+

xuan.nguyen82
21-08-12, 04:23 PM
Bạn hướng dẫn kỹ hơn giúp mình được không? Mình vẫn chưa hiểu lắm, hix +-+-+-+

Mình gửi clip hướng dẫn vào email bạn đăng ký tại diễn đàn rồi nhé...Tài khoản tại you tube của mình bị lỗi chút xíu, mai mình up lên đây lại, trước mắt mình gửi vào email của bạn..

xuan.nguyen82
21-08-12, 04:32 PM
Hic, Bạn xem hướng dẫn dưới đây nhé.



http://youtu.be/W0j1wOxhIoo

quanghai1969
21-08-12, 04:38 PM
Mình có 1 chuỗi ký tự bao gồm các số và text. Bài toán đặt ra là chỉ cộng tổng các số lại thì liệu có hàm nào có thể làm được không vậy. Có cả hàng trăm cột kiểu này mà cộng tay chắc chết luôn. Nhờ các bác giúp xem có cách nào nhanh hơn không, hix. **~**

Vd chuỗi :

máytính,290687,chuột,28510,bànphím,2600912,m ànhình,1000000,vỏcây,500000,tainghe,1000,ổc ứng,167000,ổcd,167000

Kết quả ra được : 290678 + 28510 ...+ 167000 =


Nếu biết xài VBA thì cái này sẽ là giải pháp



Public Function congso(cell As Range) As Long
Dim i, kq, tam
For i = 1 To Len(cell) + 1
If IsNumeric(Mid(cell, i, 1)) Then
tam = tam & Mid(cell, i, 1)
Else
kq = kq + Val(tam)
tam = 0
End If
Next
congso = kq
End Function

meodenxiii
21-08-12, 06:32 PM
Nếu biết xài VBA thì cái này sẽ là giải pháp



Public Function congso(cell As Range) As Long
Dim i, kq, tam
For i = 1 To Len(cell) + 1
If IsNumeric(Mid(cell, i, 1)) Then
tam = tam & Mid(cell, i, 1)
Else
kq = kq + Val(tam)
tam = 0
End If
Next
congso = kq
End Function



Chuẩn, OK mình sử dụng được rồi, cảm ơn 2 bạn quanghai1969 và xuan.nguyen82 rất nhiều nhé @$@!^%

ndu96081631
21-08-12, 08:21 PM
Nếu biết xài VBA thì cái này sẽ là giải pháp



Public Function congso(cell As Range) As Long
Dim i, kq, tam
For i = 1 To Len(cell) + 1
If IsNumeric(Mid(cell, i, 1)) Then
tam = tam & Mid(cell, i, 1)
Else
kq = kq + Val(tam)
tam = 0
End If
Next
congso = kq
End Function


Thế sao không dùng VBScript.RegExp cho nó khỏe?

quanghai1969
21-08-12, 08:30 PM
Thế sao không dùng VBScript.RegExp cho nó khỏe?

Em chưa có quen xài VBScript.RegExp nên không tự tin lắm, cũng đang nghiên cứu. Khi nào thấy an toàn mới dám xài anh ơi

ndu96081631
21-08-12, 08:34 PM
Em chưa có quen xài VBScript.RegExp nên không tự tin lắm, cũng đang nghiên cứu. Khi nào thấy an toàn mới dám xài anh ơi
Bài toán này đơn giản mà
Với Pattern = "[^0-9]" sẽ Match bất cứ thứ gì không phải là ký tự số
Vậy bạn suy nghĩ sẽ .Replace(...gì gì đó..) để có thể dùng Evaluate là được rồi
(xem lại bài SumDigits đi)