Mừng Sinh Nhật GPE 11: sáng 25/6 Hà Nội; 1/7 Huế/Đà Nẵng; Trưa 2/7 TPHCM

Hàm tính tổng một ô trong tất cả các sheets

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi kelvin, 2 Tháng mười 2006.

  1. kelvin

    kelvin Thành viên thường trực

    Có bạn hỏi mình:"minh muon viet mot ham de tinh tong mot o trong tat ca cac sheet .thi du nhu o A3 chang hen minh viet nhu sau:
    PHP:
    Function sumall(cel As Range)’Dim wSht As Worksheet
     Dim allwShts 
    As Sheets
     Set allwShts 
    Worksheets
     
    For Each wSht In allwShts
             sumall 
    sumall cel.value
     Next wSht
    End 
    function
    Nhung ket qua bi loi #VALUE!
    Ban co the giup minh nhe!Cam on nhieu"

    Mình có nghĩ cách giải quyết tàm tạm trong file att, mong các bạn giúp tiếp cho bạn thanguct@gmail.com
     

    Các file đính kèm:

    Chỉnh sửa lần cuối bởi điều hành viên: 25 Tháng sáu 2008
  2. nvson

    nvson Geotechnics

    Một cách cực kỳ đơn giản là bạn sử dụng hàm có sẵn trong Excel.
    Để tính tổng toàn bộ các ô A1 trong tất cả các sheet ta dùng hàm: Sum()
    Tại ô bất kỳ (A3 chẳng hạn) đánh công thức sau:
    =SUM(Sheet1:Sheet3!A1)
    OK

    Nếu bạn thích viết bằng VBA thì sử dụng code sau:
    PHP:
    Option Explicit
    Public Function tinhtong_sheet(Cell_1 As Range)
        
    Dim Sum_All_Sheet As Double
        Dim i 
    As Byte
        Dim sheet
        i 
    0
        Sum_All_Sheet 
    0
        
    For Each sheet In Worksheets
            i 
    1
            Sum_All_Sheet 
    Sum_All_Sheet _
                       Application
    .Sheets(i).Cells(Cell_1.RowCell_1.Column)
        
    Next
        tinhtong_sheet 
    Sum_All_Sheet
    End 
    Function
     
  3. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    Vấn đề này đã được tro đổi ở (tuy nhiên vẫn còn hạn chế là khi thay đổi các giá trị thì nó không tự tính toán lại):



    http://www.giaiphapexcel.com/forum/showthread.php?t=121&page=2



    To ngvson: Công thức = Sum() của bạn thật đơn giản, hiệu quả. Nhưng tôi hỏi nếu tên các sheet không cùng kiểu thì như thế nào vậy, có nên dùng theo thứ tự các sheet 1,2,3... thì tuỳ biến cao hơn không?
     
  4. nvson

    nvson Geotechnics

    Anh Hướng à. Tên Sheet không quan trọng. Vấn đề là lúc mình đánh tên hàm thôi.
    Tại ô cần tính tổng, đánh =sum( rồi chọn ô cần tính tổng, sau đó nhấn phím Shift rồi chọn đến sheet cuối cùng, tiếp đó đánh dấu ) là xong.

    Hình như hàm tính tổng của tôi khắc phục được hạn chế không tự động tính toán lại khi giá trị các ô thay đổi!!!!!!!!!
     
  5. kelvin

    kelvin Thành viên thường trực

    bạn thanguct@gmail.com có báo kelvin
    ---------------
    Cảm ơn bạn rất nhiều ,mình cũng bận nên hôm nay mới đọc được thư của bạn .Vấn đề của mình đã được mọi người tham gia giúp đỡ .Xin cảm ơn tất cả !!Tạm biệt chúc vui vẻ
    --
    buiduythang
    NCC.,JSC
    BaiChayRoad,HalongCity
    -----------------------------------
    Nếu có ý mới trong v/đề này, mong bạn post lên để mọi người tham khảo thêm.A! nhân tiện hỏi thăm ban điều hành, ở web WKT mỗi khi có tin nhắn từ forum nó đều C/c về địa chỉ e-mail của mình, còn tin nhắn ở đây sao kg thấy default như vậy
     
  6. hung007007

    hung007007 Thành viên mới

    Bạn "chết" ở chỗ đậm đậm kia kìa, bạn tính qua tên hàm như thế kia là "đại họa" cho việc lập trình sau này, vấn đề này gọi là đệ quy - và chỉ dùng trong trường hợp hiểu rất rõ về tính dừng của hàm.
    Để an toàn, nên làm như sau thì khỏi luôn


    PHP:
    Function sumall(cel As Range)’Dim wSht As Worksheet
     Dim allwShts 
    As Sheets
     Dim t 
    as long ' Ví dụ là số nguyên
     Set allwShts = Worksheets
     For Each wSht In allwShts
             t = t+ cel.value
     Next wSht
     sumall = t
    End function
     
    Chỉnh sửa lần cuối bởi điều hành viên: 25 Tháng sáu 2008
  7. boyxin

    boyxin Members actively

    Thêm một tham khảo dùng công thức

    Gửi bác file này để tham khảo Histories File
    [​IMG]Summing_Across02.xls (26.0 KB) của ndu96081631
    1. 100% là công thức
    2. Có thể tùy biến khoảng sheet được lấy giá trị để cộng
    3. Khi thêm sheet, đổi tên sheet, chuyển vị trí sheet thì List thay đổi theo <-> kết quả cũng thay đổi theo ...
    ----------------------
    Post xong nhìn lại mới thấy nhầm mục: đây là mục Các hàm tự tạo cho worksheet thế mà lại tương công thức thuần của excel vào. mong các bác bỏ qua nhé
     
    Chỉnh sửa lần cuối bởi điều hành viên: 25 Tháng sáu 2008
  8. chibi

    chibi Thành viên danh dự

    sumall(A1)= Giá trị ô A1 * số sheet
     

Chia sẻ trang này