Macro hàm Sumif (sumif dữ liệu của dòng) (4 người xem)

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

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

Em đã từng thử thế này nhưng không ăn thua
PHP:
Function SumVisible(rng As Range, Optional dk As Boolean = True) As Double
Application.Volatile
Dim it, kqduong, kqam
For Each it In rng
    If it.Columns.Hidden = False Then
        If it > 0 Then kqduong = kqduong + it Else kqam = kqam + it
    End If
Next
If dk = True Then SumVisible = kqduong Else SumVisible = kqam
End Function
Phải chữa cháy thế này
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub
Dear anh với code này thì công thức goc trong cell là gì vậy anh
 
Cú pháp:
=SumVisible(vùng dữ liệu) nếu lấy số dương

=SumVisible(vùng dữ liệu,0) nếu lấy số âm
Dear anh!
Tốc độ xử lý còn quá chậm, có cách nào làm cho nó xử lý nhanh hơn không anh. Anh có thể tạo 1 cái nút để click khi cần cập nhật được không anh, vì em không nhất thiết phải cập nhật liền khi số liệu thây đổi hay rê chuột như hiện tại nó giật giật cảm thấy khó chịu sao đó anh. Em tính độ trễ khi di chuyển chuột khoảng tầm 3 giây đó anh
Thank anh
 
Lần chỉnh sửa cuối:
Dear anh!
Tốc độ xử lý còn quá chậm, có cách nào làm cho nó xử lý nhanh hơn không anh. Anh có thể tạo 1 cái nút để click khi cần cập nhật được không anh, vì em không nhất thiết phải cập nhật liền khi số liệu thây đổi hay rê chuột như hiện tại nó giật giật cảm thấy khó chịu sao đó anh. Em tính độ trễ khi di chuyển chuột khoảng tầm 3 giây đó anh
Thank anh
Vậy bỏ cái đoạn Application.CalculateFull đi
Mỗi lần muốn cập nhật thì bấm F9
 
chửa cháy
chép cái này vào sheet1
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = Rows.Count * Selection.Columns.Count Then
    hoi = MsgBox("Ban muon an cot?", vbYesNo, "")
    If hoi = vbYes Then Selection.Columns.Hidden = True: Calculate
End If
End Sub
===========
cũng không ổn, thôi làm cái sub, nhấn nút cho nó chạy là chắc ăn
Dear anh Let'GâuGâu , anh đã làm cái sub chưa dậy anh hjj
 
HTML:
  Function Sum_Visible_Cells(Cells_To_Sum As Object)     Application.Volatile
     For Each cell In Cells_To_Sum
         If cell.Rows.Hidden = False Then
             If cell.Columns.Hidden = False Then
                 Total = Total + cell.Value
             End If
         End If
     Next
     Sum_Visible_Cells = Total
 End Function

Em tìm được đoạn code này trên http://www.mrexcel.com nó chạy hàm SUBTOTAL cho hàng ngang, Anh Let'GâuGâu có thể cải tiến theo hàm sumif cho số >0 hoặc <0 được không anh
 
HTML:
  Function Sum_Visible_Cells(Cells_To_Sum As Object)     Application.Volatile
     For Each cell In Cells_To_Sum
         If cell.Rows.Hidden = False Then
             If cell.Columns.Hidden = False Then
                 Total = Total + cell.Value
             End If
         End If
     Next
     Sum_Visible_Cells = Total
 End Function

Em tìm được đoạn code này trên http://www.mrexcel.com nó chạy hàm SUBTOTAL cho hàng ngang, Anh Let'GâuGâu có thể cải tiến theo hàm sumif cho số >0 hoặc <0 được không anh

có 2 cái khó
1 là hàm subtotal có tác dụng với ẩn dòng, nhưng lại không có tác dụng với ẩn cột.
2 là khi ẩn dòng hoặc ẩn cột thì excel không tự chạy calculate.
vì vậy tôi nghĩ là chỉ có thể làm cái nút nhấn, khi bạn ẩn hoặc hiện xong thì nhấn cái nút đó để nó tính lại
nhưng có cái khó là khi mình làm sub thì cái vùng dữ liệu của mình phải cố định, không ấn định vùng dữ liệu thì rất khó làm

tôi vẫn không tìm được giải pháp nào hay, thôi bạn xem cách củ chuối này xài được ko?
tôi để lại một hàng đầu tiên, khi nào cần ẩn cột, bạn đánh vào đó một ký tự bất kỳ, không ẩn nữa thì xóa nó đi
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Trả lời
42
Đọc
17K
Back
Top Bottom