PDA

View Full Version : Tính tổng các chữ số



namquoc29
30-08-09, 10:15 AM
Nhờ diễn đàn chỉ giùm cách tính tổng các chữ số, Ví dụ: 35768 tính tổng các chữ số đó. Cảm ơn

ndu96081631
30-08-09, 10:47 AM
Nhờ diễn đàn chỉ giùm cách tính tổng các chữ số, Ví dụ: 35768 tính tổng các chữ số đó. Cảm ơn
Ví dụ cell A1 chứ số 35768
Bạn dùng công thức sau:

=SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))

haodalat
11-05-10, 11:55 PM
Ví dụ cell A1 chứ số 35768
Bạn dùng công thức sau:

=SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))


Công thức này mình nhập bị báo lỗi, không biết có ai đã thử chưa ?

oishi
12-05-10, 01:29 AM
Công thức này mình nhập bị báo lỗi, không biết có ai đã thử chưa ? Bạn xem lại dấu trong cú pháp nhé, có lẽ hệ thống của bạn khác với hệ thống của người gửi công thức . Bạn thay dấu , thành ; xem sao.

dat_butmuc
12-05-10, 08:31 AM
Công thức này mình nhập bị báo lỗi, không biết có ai đã thử chưa ?

Bạn xem trong link sau: http://www.giaiphapexcel.com/forum/showthread.php?34487-Cách-tính-tổng-tiền-của-1-dãy-số&p=229284#post229284
Có file đính kèm trong đó

haodalat
12-05-10, 08:02 PM
Cảm ơn oishi (http://www.giaiphapexcel.com/forum/member.php?60185-oishi) , (http://www.giaiphapexcel.com/forum/member.php?11906-BNTT) BNTT (http://www.giaiphapexcel.com/forum/member.php?11906-BNTT) , (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) đã dành thời gian, minh download theo link của (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) xuống chạy thử. cái này thì chạy tốt, đúng theo yêu cầu của mình rôi.

Hiện giờ mình cần thêm 2 tính năng:

1/ ví dụ như dãy số 082215605323 thì số 0 đầu tiên sẽ tự bỏ đi (cái này excel tự làm rồi ) , cái mình cần thêm là nếu dãy số có 0 nằm trong dãy số khác vị trí đầu tiên thì công là 10 chứ không phải là 0. vd: 082215605323 = 0 (bỏ) +8+2+2+1+5+6+ 10 (số 0 ) +5+3+2+3 = 37.

2/ vấn đề thứ 2 của mình là: sau khi cộng xong, như ví dụ trên có kết quả là 37 thì sẽ hiện ra dòng chữ " kết quả là ba mươi bảy"

Mong nhận được sự hỗ trợ của mọi người.


Bạn xem trong link sau: http://www.giaiphapexcel.com/forum/showthread.php?34487-Cách-tính-tổng-tiền-của-1-dãy-số&p=229284#post229284 (http://www.giaiphapexcel.com/forum/showthread.php?34487-C%C3%A1ch-t%C3%ADnh-t%E1%BB%95ng-ti%E1%BB%81n-c%E1%BB%A7a-1-d%C3%A3y-s%E1%BB%91&p=229284#post229284)
Có file đính kèm trong đó

ndu96081631
12-05-10, 08:17 PM
Hiện giờ mình cần thêm 2 tính năng:

1/ ví dụ như dãy số 082215605323 thì số 0 đầu tiên sẽ tự bỏ đi (cái này excel tự làm rồi ) , cái mình cần thêm là nếu dãy số có 0 nằm trong dãy số khác vị trí đầu tiên thì công là 10 chứ không phải là 0. vd: 082215605323 = 0 (bỏ) +8+2+2+1+5+6+ 10 (số 0 ) +5+3+2+3 = 37.

2/ vấn đề thứ 2 của mình là: sau khi cộng xong, như ví dụ trên có kết quả là 37 thì sẽ hiện ra dòng chữ " kết quả là ba mươi bảy"

Mong nhận được sự hỗ trợ của mọi người.
Vấn đề thứ nhất:
- Kết quả = 47 chứ bạn
- Công thức cũ cộng thêm với công thức này: 10*(LEN(1*A2)-LEN(SUBSTITUTE(1*A2,0,"")))
- Công thức này đếm xem trong chuổi có bao nhiêu số 0 (trừ số 0 bên trái) rồi nhân với 10
Vấn đề thứ hai:
- Phải dùng VBA bạn à! Hàm đọc số thành chữ

dat_butmuc
14-05-10, 01:11 PM
Vấn đề thứ nhất:
- Kết quả = 47 chứ bạn
- Công thức cũ cộng thêm với công thức này: 10*(LEN(1*A2)-LEN(SUBSTITUTE(1*A2,0,"")))
- Công thức này đếm xem trong chuổi có bao nhiêu số 0 (trừ số 0 bên trái) rồi nhân với 10


Dùng công thức như NDU là "ngon" nhất rồi, tuy nhiên cũng có thể thêm "kiểu" này nữa cho bạn tham khảo:

=SUMPRODUCT(1*MID(SUBSTITUTE((--A2),"0","19"),ROW(INDIRECT("1:"&LEN(SUBSTITUTE((--A2),"0","19")))),1))

Số 19 trong công thức bạn có thể thay bằng 28, 37, .... miễn sao cho tổng 2 số đó =10

haodalat
21-05-10, 09:37 PM
Vấn đề thứ nhất:
- Kết quả = 47 chứ bạn
- Công thức cũ cộng thêm với công thức này: 10*(LEN(1*A2)-LEN(SUBSTITUTE(1*A2,0,"")))
- Công thức này đếm xem trong chuổi có bao nhiêu số 0 (trừ số 0 bên trái) rồi nhân với 10
Vấn đề thứ hai:
- Phải dùng VBA bạn à! Hàm đọc số thành chữ

Cảm ơn (http://www.giaiphapexcel.com/forum/member.php?61139-ndu96081631) ndu96081631 (http://www.giaiphapexcel.com/forum/member.php?61139-ndu96081631) và [/URL][URL="http://www.giaiphapexcel.com/forum/member.php?u=57544"]dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) nhiều, vậy là vấn đề của mình đã được hơn 80% rồi. HIện giờ chỉ còn 1 yêu cầu cần thục hiện nữa là: sau khi nập 1 dãy số vào ô, nhận được kết quả (kết quả này chỉ chạy từ 1 đến 80) . Ví dụ: tính kết quả của tổng dãy số ra đươc = 69 thì chỉ cần hiện ra 1 dòng ghi là: kết quả là 69; tính kết quả của tổng dãy số ra đươc = 80 thì chỉ cần hiện ra 1 dòng ghi là: kết quả là 80; ...

Mong mọi người hỗ trợ.

Hoàng Trọng Nghĩa
21-05-10, 09:49 PM
Với công thức này nếu số cần Tổng là 80 phải cho ra kết quả là 8 chứ nhỉ? Nhưng lại ra là 18? Hoặc 1000 thành 31 v.v...???

= SUMPRODUCT(1*MID(A17,ROW(INDIRECT("1:"&LEN(A17))),1))+10*(LEN(1*A17)-LEN(SUBSTITUTE(1*A17,0,"")))

Tường_Vi
22-05-10, 12:39 AM
To : Anh NDU


=SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))


Làm ra rồi thì thấy đơn giản nhưng thực sự rất tư duy, công thức hay quá.


</span></span>To : Tác giả
Mình tò mò quá không biết bài toán này có ứng dụng gì không nhỉ?

Cảm ơn oishi (http://www.giaiphapexcel.com/forum/member.php?60185-oishi) , (http://www.giaiphapexcel.com/forum/member.php?11906-BNTT) BNTT (http://www.giaiphapexcel.com/forum/member.php?11906-BNTT) , (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) đã dành thời gian, minh download theo link của (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) xuống chạy thử. cái này thì chạy tốt, đúng theo yêu cầu của mình rôi.

Hiện giờ mình cần thêm 2 tính năng:

1/ ví dụ như dãy số 082215605323 thì số 0 đầu tiên sẽ tự bỏ đi (cái này excel tự làm rồi ) , cái mình cần thêm là nếu dãy số có 0 nằm trong dãy số khác vị trí đầu tiên thì công là 10 chứ không phải là 0. vd: 082215605323 = 0 (bỏ) +8+2+2+1+5+6+ 10 (số 0 ) +5+3+2+3 = 37.

2/ vấn đề thứ 2 của mình là: sau khi cộng xong, như ví dụ trên có kết quả là 37 thì sẽ hiện ra dòng chữ " kết quả là ba mươi bảy"

Mong nhận được sự hỗ trợ của mọi người.

dat_butmuc
22-05-10, 09:49 AM
Cảm ơn (http://www.giaiphapexcel.com/forum/member.php?61139-ndu96081631) ndu96081631 (http://www.giaiphapexcel.com/forum/member.php?61139-ndu96081631) và [/URL][URL="http://www.giaiphapexcel.com/forum/member.php?u=57544"]dat_butmuc (http://www.giaiphapexcel.com/forum/member.php?57544-dat_butmuc) nhiều, vậy là vấn đề của mình đã được hơn 80% rồi. HIện giờ chỉ còn 1 yêu cầu cần thục hiện nữa là: sau khi nập 1 dãy số vào ô, nhận được kết quả (kết quả này chỉ chạy từ 1 đến 80) . Ví dụ: tính kết quả của tổng dãy số ra đươc = 69 thì chỉ cần hiện ra 1 dòng ghi là: kết quả là 69; tính kết quả của tổng dãy số ra đươc = 80 thì chỉ cần hiện ra 1 dòng ghi là: kết quả là 80; ...

Mong mọi người hỗ trợ.

Bạn format lại các ô chứa công thức
Vào Format Cells -> Number -> Custom (Mục Type gõ: "Kết quả là "# ) -> OK

Hoàng Trọng Nghĩa
22-05-10, 10:31 PM
Mình tò mò quá không biết bài toán này có ứng dụng gì không nhỉ?

Chắc là làm để bói toán số điện thoại í mà! Từ 1 đến 80, mỗi số có một lời "sấm", muốn tin thì tin, không tin thì thôi đó mà!

Tường_Vi
22-05-10, 11:35 PM
Con số mà biết nói "nhăng"
Thì thầy nhờ code hàm răng chẳng còn

hi hi...

Cám ơn Anh

Tường_Vi
23-05-12, 06:13 PM
Em cũng có dạng bài như trên nhưng rườm rà hơn một chút (vì chưa có ngay dãy số để tính tổng từ đầu
Ví dụ:
1. Phải dùng công thức join (nối) ta mới có được dãy số xxxxK3xxxxxP3
2. Em tham khảo hàm NDU (dùng hàm tách số) ta có: dãy 33
3. Em dùng công thức của anh NDU
=SUMPRODUCT(1*MID(Z6;ROW(INDIRECT("1:"&LEN(Z6)));1)) để tính dãy 33 = 3+ 3

như vậy em phải qua 2 cột phụ để làm bài trên (mặc dù đã xài code)

Rất mong các anh chị, hướng dẫn cách nào làm nhanh & gọn hơn

Em cám ơn

ndu96081631
23-05-12, 08:53 PM
Em cũng có dạng bài như trên nhưng rườm rà hơn một chút (vì chưa có ngay dãy số để tính tổng từ đầu
Ví dụ:
1. Phải dùng công thức join (nối) ta mới có được dãy số xxxxK3xxxxxP3
2. Em tham khảo hàm NDU (dùng hàm tách số) ta có: dãy 33
3. Em dùng công thức của anh NDU
=SUMPRODUCT(1*MID(Z6;ROW(INDIRECT("1:"&LEN(Z6)));1)) để tính dãy 33 = 3+ 3

như vậy em phải qua 2 cột phụ để làm bài trên (mặc dù đã xài code)

Rất mong các anh chị, hướng dẫn cách nào làm nhanh & gọn hơn

Em cám ơn
Công thức cho cell W6:

=SUM(IF(D6:V6="",0,1*MID(D6:V6,2,20)))
Công thức mảng nha!

Tường_Vi
24-05-12, 08:33 AM
Huynh NDU
Số 20 trong hàm MID có ý nghĩa gi vậy?


=SUM(IF(D6:V6="",0,1*MID(D6:V6,2,20)))


E thành tâm bái phục thuật toán của Huynh....

Tường_Vi
24-05-12, 08:36 AM
Em hiểu rồi
Anh làm tổng quát lấy maximum luôn là 20 kí tự (LEN)

Thanks Anh nhé

concogia
24-05-12, 08:58 AM
Em hiểu rồi
Anh làm tổng quát lấy maximum luôn là 20 kí tự (LEN)

Thanks Anh nhé
Thế có thể dùng hàm khác để không phải sử dụng số 20 đó không ??? Bạn thử xem

huuthang_bd
24-05-12, 09:00 AM
Tôi thử lại thì thấy nếu sau ký tự k hoặc p là một số lơn hơn 9 thì kết quả công thức của bạn và công thức của anh ndu khác nhau. Vậy không biết kết quả bạn muốn chính xác là như thế nào.
Công thức của anh ndu có thể rút gọn lại như sau:

=SUM(1*(0&MID(D6:V6,2,20)))
Hoặc làm như thế này:

=SUM(--REPLACE(D6:V6,1,1,0))

Tường_Vi
24-05-12, 03:01 PM
Tôi thử lại thì thấy nếu sau ký tự k hoặc p là một số lơn hơn 9 thì kết quả công thức của bạn và công thức của anh ndu khác nhau. Vậy không biết kết quả bạn muốn chính xác là như thế nào.
Công thức của anh ndu có thể rút gọn lại như sau:

=SUM(1*(0&MID(D6:V6,2,20)))
Hoặc làm như thế này:

=SUM(--REPLACE(D6:V6,1,1,0))

Em quên mất cách 1 của em chỉ đúng với số nhỏ hơn 9 thôi (vì là công dãy số)
ví dụ: với K11 & K8
cách 1: 118 = 1+1+8 = 10 (bị sai)
cách 2: 11+8 = 19 (nghỉ 19 tiết)

Thực tế số tiết học trong buổi sẽ khó > 10 nên em tạm thời làm như vậy.

Em xin được hỏi, em thử công thức này sao nó không ra nhỉ?


{=SUM(IF(D11:N11<>"";RIGHT(D11:N11;1);0))}



p.s: em đang nghiên cứu 2 công thức của a Hữu Thắng. Có j không hiểu e sẽ hỏi tiếp

Tường_Vi
24-05-12, 03:10 PM
=SUM(--REPLACE(D6:V6,1,1,0))

Hay nhỉ,
1. dùng hàm Replace để bỏ đi phần text, số còn lại sẽ ở dạng Text
2. Dùng 2 dấu -- để biến Text thành số
3. Công thức mảng sum lại

Cám ơn Anh Thắng nhé

huuthang_bd
24-05-12, 03:29 PM
Em xin được hỏi, em thử công thức này sao nó không ra nhỉ?


Bạn quên chuyển kết quả về kiểu số trước khi SUM.

thaycung
06-07-13, 11:37 AM
Tôi muốn mọi người chỉ bảo thêm một chút nữa: Nếu tính tổng các chữ số cho kết quả > hoặc = 10 thì lại tiếp tục tính tổng các chữ số trong tổng mới đó cho tới khi tổng cuối cùng có giá trị <10 thì dừng lại.
VD: tính tổng các chữ số của 12345: 1+2+3+4+5 = 15 > 10, ta lại tính tổng các chữ số của 15: 1+5=6, và lấy giá trị cuối cùng là 6.

ndu96081631
06-07-13, 11:47 AM
Tôi muốn mọi người chỉ bảo thêm một chút nữa: Nếu tính tổng các chữ số cho kết quả > hoặc = 10 thì lại tiếp tục tính tổng các chữ số trong tổng mới đó cho tới khi tổng cuối cùng có giá trị <10 thì dừng lại.
VD: tính tổng các chữ số của 12345: 1+2+3+4+5 = 15 > 10, ta lại tính tổng các chữ số của 15: 1+5=6, và lấy giá trị cuối cùng là 6.

Giả sử số bạn gõ tại A1
Công thức bạn cần là: =IF(A1=0,0,MOD(A1-1,9)+1)
Vậy thôi