Các câu hỏi về hàm SUBTOTAL (11 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Điều này đương nhiên! Kết quả của 1 công thức chỉ được cập nhật khi có sự thay đổi giá trị tại các cell khác
Còn những sự kiện sau đây:
- Ẩn dòng, ẩn cột
- Tô màu, kẽ khung
......

vân vân....
Đều không được xem là sự kiện change ---> Dẩn đến công thức không nhận biết có sự thay đổi! Vì lẽ đó ta phải F9 giúp nó (Nếu không có đoạn Application.Volatile thì thậm chí bấm F9 cũng không có tác dụng)
Trong các hàm hình như chỉ có SUBTOTAL là có khả năng nhận biết được việc ẩn dòng... đáng tiếc nó lại không được thiết kế với việc ẩn cột, vì thế mới có topic này đây!
 
Còn nữa: Tôi nghĩ code trên cần phải cải tiến thêm trong 1 vài trường hợp đặc biệt, chẳng hạn như range là 2 vùng không liên tục ---> Vậy phải viết code thế nào đây? Mong thầy gợi ý thêm (khó quá, chưa nghĩ ra được)

Em có một đoạn code này Bác xem thử:
Mã:
Public Function SumVisible(ParamArray a() As Variant) As Double
 Dim rng As Variant
 Dim value As Double
 Application.Volatile
 value = 0
 For Each rng In a
    If Not TypeName(rng) = "Range" Then
        value = ""
        Exit For
    End If
    For Each c In rng.Cells
        If c.EntireColumn.Hidden = False And c.EntireRow.Hidden = False Then
            If IsNumeric(c.value) = True Then
                value = value + c.value
            End If
        End If
    Next
 Next
 SumVisible = value
End Function
 
Chiêu này thật đặc biệt... Tôi bó tay chứ không tài nào nghĩ ra được!
Salam có thể thêm 1 vài ví dụ nhỏ đơn giản về vấn đề chọn nhiều range không liên tục trong UDF (tương tự như trên) được không?
Phải đọc thêm 1 vài ví dụ nữa may ra mới nắm bắt được vấn đề (mới mẽ quá)
 
Code bác đặc biệt quá, đọc vô chẳng hiểu gì trọi, bác có thể biên dịch vài dòng được không? Public Function SumVisible(ParamArray a() As Variant) As Double If Not TypeName(rng) = "Range" Then Tại sao lại viết như vậy ạ! Thanks.
 
Lần chỉnh sửa cuối:
ParamArray a() As Variant = Khai báo tham số a của hàm là mảng chưa xác định số phần tử và chưa xác định loại (mảng = nhiều phần tử, ở đây sẽ là nhiều range)
If Not TypeName(rng) = "Range" Then = Nếu phần tử rng của a trong vòng lặp "For Each Rng in a" không phải loại biến "Range" thì go out, xét phần tử rng tiếp theo.

Mới thiệt!
 
có cách nào không dùng code hok mấy bác! em dùng subtotal sau khi lọc thì lúc trong bảng 1 đối tượng ra kết quả khác. cho hiển thị tất cả bảng thì lại ra kết quả khác. Bro nào giúp em cái này cái. thanks trước
 
Hỏi về hàm SubTotal?

huhu mọi người cho em hỏi với
em hỏi về subtotal ạ
đề bài là cho 1 bảng Báo cáo hoạt động khách sạn, subtoal tổng hợp tiền theo ngày đi của khách để biết tổng số tiền thu được trong hôm đó
sau khi subtotal xong phải trình bày theo 1 bảng: chỉ bao gồm các cột Ngày, Tổng tiền, Ghi chú

vấn đề là sau khi subtotal xong, em không biết cách nào trình bày được cái bảng như trên ạ

đây nó đây ạ :( View attachment Bai 5.xls
 
Lần chỉnh sửa cuối:
sau khi bạn subtotal xong, bạn nhấp vào số 2 trong biểu tượng ở phía trên góc bên trái, nằm ngang hàng với các biểu tượng cột A,B,C...là được như như cái bảng bạn cần
 
Hỏi về hàm Subtotal

Tôi có công thức: SUBTOTAL(9,C3:C1500)

Do phải áp dụng cho nhiều cột, khoảng số liệu lại thay đổi nên tôi muốn sử dụng giá trị của 1 ô nào đó đưa vào công thức trên thay cho giá trị 1500 để khi thay đổi giá trị của ô đó, khoảng cộng của SUBTOTAL sẽ thay đổi theo
Vậy có ai trên diễn đàn biết cách làm hướng dẫn giúp tôi.

Cám ơn nhiều
 
Nhờ vào bài viết về Offset của bạn TranThanhPhong, tôi đã tìm được cách xử lý
Tôi dùng hàm:
=SUBTOTAL(9,OFFSET(A5,0,0,$A$1,1))
và A1 sẽ nhập số dòng max cần lấy tổng, ví dụ 12, thì lệnh trên tương đương với
=SUBTOTAL(9,A5:A16)

Cám ơn bạn Phong, cám ơn diễn đàn GPE !
 
Bạn ơi, bạn có thể chỉ rõ hơn bằng hình ảnh được không? Mình thì nhấn vào Autosum thì nó bị chuyển thành Subtotal, giờ muốn chuyển thành Sum thì làm thế nào ah, mình thử cách của bạn nhưng không được
 
khi e sử dụng hàm subtotal, dùng chức năng lọc dữ liệu thì mất dữ liệu ở dòng tổng cộng, xin mọi người hướng dẫn e lọc để có dữ liệu ở dòng tổng cộng với
 

File đính kèm

Nhân đây các anh chị cho e hỏi một chút.
Có cách nào (hay phím tắt nào hay đại loại thế) để cộng tổng các dòng bên dưới (nghĩa là công thức tính tổng ở bên trên, dữ liệu tính tổng ở bên dưới) không ạ?
 
e đã tìm hiểu và thay tham số rồi vẫn không lọc được dữ liệu, làm ơn chỉ giúp cho e ví dụ
Trong help subtotal có câu:
For the function_num constants from 1 to 11, the SUBTOTAL function includes the values of rows hidden by the Hide Rows command under the Hide & Unhide submenu of the Format command in the Cells group on the Home tab
do vậy tham số này có hiệu lực với lệnh hiden và unhide (hoặc với alt+shift+->) còn với filter thì nó chỉ tính toán trên phần đã lọc được.
Do vậy với trường hợp của bạn nên dùng 1 trong 2 cái, nếu dùng subtotal thì dùng alt+shift+-> và không filter trường "ghi nhớ" nữa, còn nếu dùng filter thì thay subtotal bằng sum cho đơn thuần.
 
Trong help subtotal có câu:
do vậy tham số này có hiệu lực với lệnh hiden và unhide (hoặc với alt+shift+->) còn với filter thì nó chỉ tính toán trên phần đã lọc được.
Do vậy với trường hợp của bạn nên dùng 1 trong 2 cái, nếu dùng subtotal thì dùng alt+shift+-> và không filter trường "ghi nhớ" nữa, còn nếu dùng filter thì thay subtotal bằng sum cho đơn thuần.

Hình như người ta hỏi vầy:
khi e sử dụng hàm subtotal, dùng chức năng lọc dữ liệu thì mất dữ liệu ở dòng tổng cộng, xin mọi người hướng dẫn e lọc để có dữ liệu ở dòng tổng cộng với
Và hình như là.. hổng liên quan đến câu trả lời của bạn thì phải
 
Web KT

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

Back
Top Bottom