Ý bạn là sao? Có phải như thế này không?Mình muốn hỏi thuật toán tính tống các chữ số trong một số?
Xin mọi người giúp đỡ.
B1 = SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
Thuật toán là: tách từng ký tự một trong chuỗi số đó ra (dùng hàm MID), chuyển nó thành số (vì hàm MID trả về giá trị là Text) và cho vào một mảng, sau đó SUM tất cả các phần tử trong mảng đó lại! dùng SUM (phải ctrl+Shift+Enter) hoặc SUMPRODUCTĐối với một bài toán thông thường. Thuật toán chung để giải quyết bài toán này là thế nào?
Bạn có thể cho ý kiến không?
Ý bạn là sao? Có phải như thế này không?
Giả sử:
Ô [A1] = 12345678
Ô [B1] cần tính = 1+2+3+4+5+6+7+8 = 36
Nếu đúng vậy thì dùng công thức sau:
PHP:B1 = SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
INDIRECT("1:"&LEN(A1))
là sao hả anh?Formula is too long
Dùng VBA cũng thế thôi!Điều đó thì tất nhiên. Mình hỏi ví dụ dùng vba. Thì phải làm thế nào?
Bạn có thể giúp mình không?
Indirect("1:"& LEN(A1)) phải đặt trong hàm ROW nó mới có nghĩa.Anh giải thích giúp em công thức trên với. Em quét đoạnrồi nhấn F9 nó báo là Formula is too long là sao hả anh?Mã:INDIRECT("1:"&LEN(A1))
Vì ta không biết trước độ dài của chuỗi số là bao nhiêu nên cái n đó thay bằng LEN(chuỗi số) và ta không thể viết là:Row(1:1) = {1}
Row(1:2) = {1,2}
Row(1:3) = {1,2,3}
Row(1:n) = {1,2,3,....,n}
Mà phải dùng Indirect để chuyển text thành giá trị tham chiếuROW(1:Len(A1))
Indirect("1:"&LEN(A1)) =1:n
Ý bạn là sao? Có phải như thế này không?
Giả sử:
Ô [A1] = 12345678
Ô [B1] cần tính = 1+2+3+4+5+6+7+8 = 36
Nếu đúng vậy thì dùng công thức sau:
PHP:B1 = SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
Đúng vậy, bản chất của SUMPRODUCT là một hàm mảng rồi, cho nên khi dùng nó ta không cần ấn Ctrl+Shift+Enter. Còn hàm SUM thì không phải hàm mảng nên ta phải dùng tổ hợp phím trên!Mình muốn hỏi 1 chút, ở đây bạn dùng SUMPRODUCT có phải là với mục đích chuyển cả hàm ROW đó thành 1 mảng {1,2,3,4,5,6,7,8} hay không, mình thử với SUM cũng cho ra cùng kết quả nhưng phải kết thúc với Ctrl Shift Enter, còn công thức của bạn thì chỉ cần nhấn Enter thôi.
Cho mình xin link bài viết về sự khác nhau khi nhấn tổ hợp phím ctrl+shift+enter và Enter với.
Vì thời gian không có nhìu và không bít cách searh bài như thế nào nên bạn giúp mình với.
Thanks.
Đúng vậy, bản chất của SUMPRODUCT là một hàm mảng rồi, cho nên khi dùng nó ta không cần ấn Ctrl+Shift+Enter. Còn hàm SUM thì không phải hàm mảng nên ta phải dùng tổ hợp phím trên!
Dùng công thức được không?Các bạn giúp mình tính tổng các số trong một số sao cho đến kết quả cuối cùng còn một chữ số.
Ví dụ như : cho số 214598
thì sẽ cộng như sau : 2+1+4+5+9+8=29
tiếp 2+9=11
tiếp 1+1=2
như vậy mới kết thúc.
dùng VBA nhé
Cám ơn các bạn
Nếu em nhập vào A1 số 0 thì... tèoDùng công thức được không?
Giả sừ bạn gõ số gì đó tại A1 thì yêu cầu của bạn có thể thực hiện bằng công thức thế này tại B1:
=MOD(A1-1,9)+1
Chắc vậy! Và đương nhiên chỉ tính số nguyên thôi nha
Thử xem... Ẹc... Ẹc...
Thì IF cái đi ---> Thuật toán vẫn vậy màNếu em nhập vào A1 số 0 thì... tèo![]()
Ý bạn là sao? Có phải như thế này không?
Giả sử:
Ô [A1] = 12345678
Ô [B1] cần tính = 1+2+3+4+5+6+7+8 = 36
Nếu đúng vậy thì dùng công thức sau:
PHP:B1 = SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
Mình muốn hỏi 1 chút, ở đây bạn dùng SUMPRODUCT có phải là với mục đích chuyển cả hàm ROW đó thành 1 mảng {1,2,3,4,5,6,7,8} hay không, mình thử với SUM cũng cho ra cùng kết quả nhưng phải kết thúc với Ctrl Shift Enter, còn công thức của bạn thì chỉ cần nhấn Enter thôi.
Dùng công thức được không?
Giả sừ bạn gõ số gì đó tại A1 thì yêu cầu của bạn có thể thực hiện bằng công thức thế này tại B1:
=MOD(A1-1,9)+1
Chắc vậy! Và đương nhiên chỉ tính số nguyên thôi nha
Thử xem... Ẹc... Ẹc...
Em muốn hỏi chút ạ:
Ví dụ dãy số của e trong ô A1 hiển thị thế này: 1-2-5-1-3-4-2-1
Bây giờ e muốn cộng kiểu tịnh tiến dãy số trên thì làm thế nào ạ?
Cộng tịnh tiến bằng tay thì dãy số trên sẽ ra là 1-3-8-9-12-16-18-19
Em cảm ơn nhiều ạ!
Bài đã được tự động gộp:
Em muốn hỏi chút ạ:
Ví dụ dãy số của e trong ô A1 hiển thị thế này: 1-2-5-1-3-4-2-1
Bây giờ e muốn cộng kiểu tịnh tiến dãy số trên thì làm thế nào ạ?
Cộng tịnh tiến bằng tay thì dãy số trên sẽ ra là 1-3-8-9-12-16-18-19
Em cảm ơn nhiều ạ!
Bài đã được tự động gộp:
Em muốn hỏi chút ạ:
Ví dụ dãy số của e trong ô A1 hiển thị thế này: 1-2-5-1-3-4-2-1
Bây giờ e muốn cộng kiểu tịnh tiến dãy số trên thì làm thế nào ạ?
Cộng tịnh tiến bằng tay thì dãy số trên sẽ ra là 1-3-8-9-12-16-18-19
Em cảm ơn nhiều ạ!
Public Function fGpe(ByVal Txt As String, Byval Deli As String) As String
Dim j As Long, N As Long, Tmp
Tmp = Split(Txt, Deli)
N = Tmp(0)
fGpe = N
If UBound(Tmp) > 0 Then
For j = 1 To UBound(Tmp)
N = N + Tmp(j)
fGpe = fGpe & Deli & N
Next j
End If
End Function
B1= fGpe(A1;"-")
A1= '1-2-3-4-5-6-7-8-9PHP:Public Function fGpe(ByVal Txt As String, Byval Deli As String) As String Dim j As Long, N As Long, Tmp Tmp = Split(Txt, Deli) N = Tmp(0) fGpe = N If UBound(Tmp) > 0 Then For j = 1 To UBound(Tmp) N = N + Tmp(j) fGpe = fGpe & Deli & N Next j End If End Function
PHP:B1= fGpe(A1;"-")