Công thức cộng dãy số trong 1 ô ?

Liên hệ QC

laianhtu

Thành viên tiêu biểu
Tham gia
4/1/07
Bài viết
635
Được thích
858
Nghề nghiệp
Finance and Accountancy field, Tax consultant, tax
Có công thức nào cộng một dãy số trong một ô như file đính kèm không các bạn ?
 

File đính kèm

File đính kèm

mình muốn nhập điểm trong đó có cả điểm 10 VD: HS có 3 điểm là 7, 8, 10 khi nhập vào
ô A2 sẽ là 7810 hoặc 1078 hoặc 7108 dùng code hay CT nào để ô B2 luôn được tổng = 25
các bạn giúp mình nhé! Trân trọng cảm ơn!
 
mình muốn nhập điểm trong đó có cả điểm 10 VD: HS có 3 điểm là 7, 8, 10 khi nhập vào
ô A2 sẽ là 7810 hoặc 1078 hoặc 7108 dùng code hay CT nào để ô B2 luôn được tổng = 25
các bạn giúp mình nhé! Trân trọng cảm ơn!
- Loại số 10 ra khỏi chuổi đồng thời cũng "nhớ" xem có bao nhiêu số 10 đã bị loại
- Tính tổng các chữ số còn lại
- Cộng kết quả với các số 10 đã loại ở bước 1
Suy nghĩ đi
 
mình muốn nhập điểm trong đó có cả điểm 10 VD: HS có 3 điểm là 7, 8, 10 khi nhập vào
ô A2 sẽ là 7810 hoặc 1078 hoặc 7108 dùng code hay CT nào để ô B2 luôn được tổng = 25
các bạn giúp mình nhé! Trân trọng cảm ơn!
Sử dụng thử code này
Mã:
Public Function tong(Vung As Range) As Integer
    Dim I As Integer, J As Integer, Tam As Integer
        For I = Len(Vung) To 1 Step -1
            J = Val(Mid(Vung, I, 1))
                If J = 0 Then
                    Tam = Tam + 9
                Else
                    Tam = Tam + J
                End If
       Next
    tong = Tam
End Function
Cú pháp: =tong(Cell dữ liệu)
Phải chắc chắn không cho điểm "zero"
 
Phải chắc chắn không cho điểm "zero"
Chơi vậy sao "đẹp" anh Cò ơi!
Em nghĩ có thể "chấp" luôn việc nhập số 0 đấy
Ẹc... Ẹc...
Em làm vầy:

PHP:
Public Function SumString(Num As String) As Long
  Dim Tmp As Long
  On Error Resume Next
  Tmp = (Len(Num) - Len(Replace(Num, 10, ""))) / 2
  SumString = Tmp * 9 + Evaluate(Join(Split(StrConv(Num, 64), Chr(0)), "+") & "0")
End Function
Như thuật toán đã nói ở trên
Và còn nữa: Dùng công thức chắc cũng không có vấn đề ---> Ai rảnh thử xem!
 
Chơi vậy sao "đẹp" anh Cò ơi!
Em nghĩ có thể "chấp" luôn việc nhập số 0 đấy
Ẹc... Ẹc...
Em làm vầy:

PHP:
Public Function SumString(Num As String) As Long
  Dim Tmp As Long
  On Error Resume Next
  Tmp = (Len(Num) - Len(Replace(Num, 10, ""))) / 2
  SumString = Tmp * 9 + Evaluate(Join(Split(StrConv(Num, 64), Chr(0)), "+") & "0")
End Function
Như thuật toán đã nói ở trên
Và còn nữa: Dùng công thức chắc cũng không có vấn đề ---> Ai rảnh thử xem!
Theo thuật toán của bác, dùng công thức sau
=(LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))*5+SUMPRODUCT((--MID(SUBSTITUTE(A3,10,""),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A3,10,"")))),1)))
Nhấn Ctr+Shift+Enter
 
Theo thuật toán của bác, dùng công thức sau
PHP:
=(LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))*5+SUMPRODUCT((--MID(SUBSTITUTE(A3,10,""),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A3,10,"")))),1)))
Nhấn Ctr+Shift+Enter
Đoạn này (LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))/2 là tính xem có bao nhiêu số 10 tại cell A3
Chỉ cần lấy kết quả trên nhân cho 9 rồi cộng với công thức của cadafi là được rồi
Tức
PHP:
=(LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))*9/2+SUMPRODUCT(--MID(A3,ROW(INDIRECT("1:"&LEN(A3))),1))
Enter bình thường
 
Đoạn này (LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))/2 là tính xem có bao nhiêu số 10 tại cell A3
Chỉ cần lấy kết quả trên nhân cho 9 rồi cộng với công thức của cadafi là được rồi
Tức
PHP:
=(LEN(A3)-LEN(SUBSTITUTE(A3,10,"")))*9/2+SUMPRODUCT(--MID(A3,ROW(INDIRECT("1:"&LEN(A3))),1))
Enter bình thường

Và tại sao không làm thế này luôn?
PHP:
=SUMPRODUCT(--MID(SUBSTITUTE(A3,10,19),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A3,10,19)))),1))
Hay:
PHP:
=SUMPRODUCT(--MID(SUBSTITUTE(A3,10,28),ROW(INDIRECT("1:"&LEN(A3))),1))

Chỗ nào cứ có số 10 thì thay bằng 19, 28, 37,...sao cho tổng 2 số =10
 
Lần chỉnh sửa cuối:
Mình đã hiểu được cảm ơn các bạn rất nhiều. nhưng mình còn bài toán tính tổng các điểm viết có cả điểm không làm tròn.
VD: HS có 6 điểm: 7; 6,5; 10; 6; 8; 8,5 đại khái là khi nhập vào một ô là co cả dấu (,) như 76,510688,5
mình không áp dụng được để tính tổng ô này. Làm phiền các bạn giúp mình lần nữa.
 
Mình đã hiểu được cảm ơn các bạn rất nhiều. nhưng mình còn bài toán tính tổng các điểm viết có cả điểm không làm tròn.
VD: HS có 6 điểm: 7; 6,5; 10; 6; 8; 8,5 đại khái là khi nhập vào một ô là co cả dấu (,) như 76,510688,5
mình không áp dụng được để tính tổng ô này. Làm phiền các bạn giúp mình lần nữa.
Cho hỏi:
1> Ngoài cái phẩy 5 ra còn có cái phẩy nào khác nữa không? Chẳng hạn phẩy 1, phẩy 2, phẩy 3 vân vân
2> Trường hợp chỉ có phẩy 5 thôi thì... thuật toán như bài #6, tức:
- Loại mấy số ,5 ra khỏi chuổi, đồng thời đếm xem có bao nhiêu số ,5 đã loại ---> Ra được bao nhiêu số, ta nhân cho 0,5, được KQ1
- Chuổi còn lại cứ cộng bình thường, ra được KQ2
- Lấy KQ1 cộng với KQ2, ra được kết quả cuối cùng
Còn như trong chuổi có tùm lum các loại phẩy thì chắc phải dùng code (công thức tôi chưa nghĩ ra)
 
VD: HS có 6 điểm: 7; 6,5; 10; 6; 8; 8,5
nhập vào một ô là co cả dấu (,) như 76,510688,5
mình không áp dụng được để tính tổng ô này. Làm phiền các bạn giúp mình lần nữa.

Không thể hình dung nổi trường nào, phòng nào, sở nào lại cho phép giáo viên nhập điểm theo kiểu này
 
Bạn thật đúng là người không hiểu j rồi. Đây là điều tôi quan tâm đến thuật toán thôi.
 
Không thể hình dung nổi trường nào, phòng nào, sở nào lại cho phép giáo viên nhập điểm theo kiểu này
Nhiều khi "lười" ấy mà
Thậm chí có người còn toan tính.. khỏi nhập điểm luôn, cứ có điểm tổng kết rồi ta dùng code để tự suy ra điểm kiểm tra
Ẹc... Ẹc...
Bạn thật đúng là người không hiểu j rồi. Đây là điều tôi quan tâm đến thuật toán thôi.
Tôi cũng chỉ quan tâm đến THUẬT TOÁN thôi (còn mục đích của bạn là gì thì... kệ bạn)... Vì vậy vui lòng trả lời câu hỏi ở bài 13 trước đã nhé
 
Bạn thật đúng là người không hiểu j rồi. Đây là điều tôi quan tâm đến thuật toán thôi.

Hi, có lẽ là KHÔNG HIỂU J RỒI


  1. Nếu các số thập phân (tất cả đều lấy 1; 2; ... chữ số sau dấu phẩy) thì kết quả tính tổng là duy nhất. VD trường hợp các số thập phân có 1 chữ số sau dấu phẩy thì
    • Tìm các dấu "," -> lấy các cặp ký tự dạng "a,b" -> chuyển thành số "a.b" rồi cộng lại cho KQ1
    • Phần còn lại theo thuật toán nhiều bài ở trên đã nêu tính được KQ2
    • Kết quả cuối cùng = KQ1 + KQ2
  2. Nếu các số thập phân khi lấy số chữ số sau dấu phẩy không theo quy luật (lúc thì 1, lúc thì 2; 3; ...) thì kết quả tính tổng không còn là duy nhất nữa vậy bạn muốn lấy kết quả như thế nào? RẤT MONG BẠN ĐÃ HIỂU CHỈ GIÁO ĐỂ MÌNH HỌC HỎI THÊM
 
Lần chỉnh sửa cuối:
Các bạn rất giỏi mình lên đây chủ yếu nhờ các bạn giúp để học hỏi thôi. như trên là mình cần tìm hiểu các bạn giúp mình thì mình rất
cảm ơn. Mình đã tìm ra tính tổng khi trong ô có cả điểm 10 và ,5. Còn phẩy khác thì mình chịu thua thôi.
-----------------
Public Function SumCel(cel As String) As Double
Dim ddphay As Double
Dim dmuoi As Double
On Error Resume Next
ddphay = (Len(cel) - Len(Replace(cel, ",", ""))) * 4.5
cel = Replace(cel, ",", "")
dmuoi = (Len(cel) - Len(Replace(cel, 10, ""))) / 2
SumCel = dmuoi * 9 + Evaluate(Join(Split(StrConv(cel, 64), Chr(0)), "+") & "0") - ddphay
End Function
-----------------
Thực ra trong câu lệnh " Evaluate(Join(Split(StrConv(cel, 64), Chr(0)), "+") & "0") mình chỉ biết bắt trước các bạn còn hiểu cụ thể
nó là sao thì mình vẫn chưa biết
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom