Dùng công thức nào cho bài toán của em

  • Thread starter Thread starter qwertyu
  • Ngày gửi Ngày gửi
Liên hệ QC
Q

qwertyu

Guest
Hãy giúp mình với các bạn ơi ,bài toán trên excel dùng công thức nào để giải bài toán như sau: Chọn công thức nào để cho ra các số với điều kiện , số tự nhiên có ba chữ số ,khi cộng hàng trăm ,chục,đơn vị đều bằng một giá trị cho trước .ví dụ các số :600,510,240,114,123,204,303,420...... tổng hàng trăm ,chục ,đơn vị đều bằng 6.Hãy giúp mình với mình cám ơn nhiều lắm
 
Bạn dùng thử công thức này xem
=SERIESSUM(A1,1,2,3)/A1*2
Fill xuống
Thân!
 
Không được bạn Salam ơi.
Công thức của bạn, gán cho A1 bất kỳ con số nào (kể cả số hàng triệu...) thì kết quả cũng bằng 6!
Đề bài là liệt kê ra các số có tổng hàng trăm, hàng chục và hàng đơn vị bằng 6 cơ!
Tôi nghĩ cái này chắc phải nhờ đến VBA.
 
Oh Ho tui nhầm rồi cám ơn bác nhé! bài này bạn ấy hỏi là tổng hàng các số có tổng hàng trăm, Tổng hàng trục và tổng hàng đơn vị bằng 6 hay là cộng các số hàng trăm, trục và đơn vị bằng lại bằng 6. Vì tôi thấy bạn liệt kê các số có tổng hàng trăm, hàng trục, hàng đơn vị cộng lại ấy nhỉ.
Code:

Function Tongcacso(Number)
Dim i As Integer
For i = 1 To Len(Number)
Tongcacso = Tongcacso + Val(Mid(Number, i, 1))
Next i
End Function
 
Lần chỉnh sửa cuối:
qwertyu đã viết:
Số tự nhiên có ba chữ số ,khi cộng hàng trăm ,chục,đơn vị đều bằng một giá trị cho trước.
Phân tích bài toán:
- Số tự nhiên có 3 chữ số: 100, 101, ..., 999
- Tổng hàng trăm + hàng chục + hàng đơn vị nhỏ nhất là 1 ( số 100) và lớn nhất là 27 (số 999)
- Do phải liệt kê ra danh sách các số, nên dùng Sub thay cho Function hay hơn.
Mã:
Sub TongTramChucDvi()
Dim tong As Byte
Dim s1 As Byte, s2 As Byte, s3 As Byte
tong = Application.InputBox("Nhap tong hang tram, chuc, don vi", "Tong tram chuc donvi", , , , , , 1)
If tong < 1 Or tong > 27 Then
  MsgBox "Tong phai lon hon 0 va nho hon 28"
End If
Columns("A").ClearContents
r = 1
For n = 100 To 999
  s1 = Left(n, 1)
  s2 = Mid(n, 2, 1)
  s3 = Right(n, 1)
  If s1 + s2 + s3 = tong Then
    Cells(r, 1) = n
    r = r + 1
  End If
Next
End Sub
Sub TongTramChucDvi sẽ đưa ra hộp Inputbox để nhập số tổng, kiểm tra số tổng nếu hợp lệ thì tìm những số thỏa mãn điều kiện và ghi ra cột A.
 
Thêm một tham khảo

qwertyu đã viết:
Hãy giúp mình với các bạn ơi ,bài toán trên excel dùng công thức nào để giải bài toán như sau: Chọn công thức nào để cho ra các số với điều kiện , số tự nhiên có ba chữ số ,khi cộng hàng trăm ,chục,đơn vị đều bằng một giá trị cho trước .ví dụ các số :600,510,240,114,123,204,303,420...... tổng hàng trăm ,chục ,đơn vị đều bằng 6.Hãy giúp mình với mình cám ơn nhiều lắm

Đây chỉ là thêm tham khảo
Mã:
Option Explicit
Sub ThongKeSo()
 Dim ij As Integer, iZ As Integer, Dong As Integer
 Dim Chuc As Byte, DVi As Byte, Tong As Byte
 
 For iZ = 1 To 27
    Dong = 0
    For ij = 100 To 999
        Chuc = (ij \ 10) Mod 10:                    DVi = ij Mod 10
        Tong = (ij \ 100) + Chuc + DVi
        If Tong = iZ Then
            Dong = 1 + Dong
            Cells(Dong, iZ) = ij
        End If
 Next ij, iZ
End Sub
(Bài sau khi gộp lại!)
 
Lần chỉnh sửa cuối:
Tham khảo thêm 1 cách làm bằng công thức:
Ứng với mỗi số ta chọn ở hàng trăm trong ComboBox sẽ cho tương ứng các số có khả năng ở hàng chục và từ đó suy ra số hàng đơn vị...
Nếu làm bằng macro tôi nghĩ cũng theo thuật toán này!
Mến
ANH TUẤN
 

File đính kèm

anhtuan1066 đã viết:
Nếu làm bằng macro tôi nghĩ cũng theo thuật toán này!
Mến
ANH TUẤN
Mình thắc mắc tại sao Bạn Tuấn không đi sâu vào VBA nhỉ? Từ nghĩ ra thuật toán phù hợp đến viết ra chỉ còn là vấn đề ngôn ngữ (lập trình), đối với bạn cũng đâu phải là vấn đề.
Mình thấy bạn cũng có 1 cách học cấu trúc và nội dung lệnh rất hay (là record 1 macro rồi xem code). Mình cũng đã từng theo đường này (thông qua wizard) trong Access và nay là trong Excel. Đa năng càng tốt mà.
 
Bác SA và DuyLong sao chạy nhiều vòng thế, chạy ít để cho chúng em nhờ chứ.
Mạn phép bác DuyLong, em sửa lại xíu :

PHP:
Sub TongTramChucDvi()
    Dim S1 As Integer, S2 As Integer, S3 As Integer, i As Integer, Tong As Byte, m As Byte
    Tong = Application.InputBox("Nhap tong hang tram, chuc, don vi", "Tong tram chuc donvi", , , , , , 1)
    If Tong < 1 Or Tong > 27 Then
      MsgBox "Tong phai lon hon 0 va nho hon 28"
    Else
        Columns("A").ClearContents
        For S1 = 0 To 9
            For S2 = 0 To Application.WorksheetFunction.Min(9, Tong - S1)
                m = m + 1
                S3 = Tong - S1 - S2
                If S3 >= 0 And S3 <= 9 Then
                    i = i + 1
                    Range("A" & i) = S1 * 100 + S2 * 10 + S3
    End If: Next: Next: End If
    Range("B1") = m
End Sub

Thân!
 
ptm0412 đã viết:
Mình thắc mắc tại sao Bạn Tuấn không đi sâu vào VBA nhỉ? Từ nghĩ ra thuật toán phù hợp đến viết ra chỉ còn là vấn đề ngôn ngữ (lập trình), đối với bạn cũng đâu phải là vấn đề.
Mình thấy bạn cũng có 1 cách học cấu trúc và nội dung lệnh rất hay (là record 1 macro rồi xem code). Mình cũng đã từng theo đường này (thông qua wizard) trong Access và nay là trong Excel. Đa năng càng tốt mà.
Cám ơn bạn... thì tôi cũng đang cố học đây! Nhưng vì nhiều điều kiện khách quan khác nhau mà chưa thể chuyên sâu mãng này dc... Nói thật ngay cả như vòng lập FOR nó thế nào tôi cũng có biết nhưng lại ko tài nào áp dũng nhuần nhuyễn dc (mà tôi biết chắc ăn nếu làm bài này bằng VBA thì sẽ ko tránh khỏi dùng vòng lập đễ vét các điều kiện)... Cảm giác như người đi xe vẫn chưa làm chủ dc tay lái, bạn hiểu ko?
 
Lần chỉnh sửa cuối:
Vòng lặp For . . . next và select case, dễ hay khó.

anhtuan1066 đã viết:
Nói thật ngay cả như vòng lập FOR nó thế nào tôi cũng có biết nhưng lại ko tài nào áp dũng nhuần nhuyễn dc
Trước hết xin lỗi mod vì ra ngoài chủ đề của topic này. Nếu phạm quy xin vui lòng chuyển giúp bài qua mục khác
To Tuấn: bạn xem mình học select case thế này nè (xem file kèm theo), cũng là đọc (của bạn nào tớ quên rồi), cố hiểu, rồi cải tiến theo ý mình, rồi thử đi thử lại, sửa tới sửa lui, test đủ kiều và sau khi bị đủ các lỗi thì được như vậy đó.
hì hì, tớ nghĩ bạn học for next chắc phải thành công hơn tớ.
 

File đính kèm

Web KT

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

Back
Top Bottom