Không cộng những số bị gạch ngang (2 người xem)

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

LienDong

Thành viên thường trực
Tham gia
22/11/12
Bài viết
238
Được thích
46
Nghề nghiệp
Ai nói đúng thì làm!
Em có bài toán như hình
trong đó có số 300 bị gạch ngang, em không muốn cộng số này vào
Kết quả mong muốn là 1.000
Nhờ mong anh/chị và các bạn giúp đở (cách nào cũng được) Em cảm ơn
1782987168352.png
 
Em có bài toán như hình
trong đó có số 300 bị gạch ngang, em không muốn cộng số này vào
Kết quả mong muốn là 1.000
Nhờ mong anh/chị và các bạn giúp đở (cách nào cũng được) Em cảm ơn
View attachment 311966
Dùng hàm tự tạo loại trừ giá trị format font gạch ngang
Mã:
Function SumUnStrikethrough(ByVal RngSum As Range) As Double
  Dim rng As Range
  For Each rng In RngSum
    If IsNumeric(rng) Then
      If rng.Font.Strikethrough = False Then SumUnStrikethrough = SumUnStrikethrough + rng.Value
    End If
  Next
End Function
Công thức ngoài sheet
Mã:
A1 =SumUnStrikethrough(A2:A4)
 
@DeTong : Làm theo hướng dẫn ở #2. Chẻn code rồi dùng công thức như ảnh dưới. --> ra kết quả đúng
Khi định dạng để tạo 1 số có gạch ngang thì cần nháy kép vào công thức sum mới tạo rồi nhấn Enter
vbxnv.PNG
 
- Nếu tạo dấu gạch ngang bằng Conditional Formatting thì hàm sẽ không chạy.
- Muốn áp dụng được cho trường hợp dùng CF thì thêm DisplayFormat. Nhưng hàm này cũng chỉ chạy được khi gọi Macro thôi, gọi trực tiếp trong sheet cũng chạy không được. :)
rng.DisplayFormat.Font.Strikethrough = False
 
Dùng xlRangeValueXMLSpreadsheet = 11 là được.

Hoặc thế này cũng xong.
Mã:
trangThaiGach = oCell.Parent.Evaluate("KiemTraGachNgangHienThi(" & _
    oCell.Address( _
        RowAbsolute:=False, _
        ColumnAbsolute:=False, _
        ReferenceStyle:=xlA1) & ")")

Public Function KiemTraGachNgangHienThi(ByVal oCell As Range) As Variant
    KiemTraGachNgangHienThi = oCell.DisplayFormat.Font.Strikethrough
End Function
 
Xin vui lòng giải thích kết quả này ?!
Tôi có làm thử thì ban đầu mới gõ xong công thức thì đúng. Thử với 1 vùng rộng hơn trong đó có 1 số ô trống thì vẫn đúng.

q01.png

Khi điền thêm số vẫn còn đúng. Nhưng định dạng gạch ngang cho số mới thì sẽ không còn đúng. Nhấn F9 không tính lại mà phải nhấn F2 và enter.
Gỡ gạch ngang 1 số cũng không tính lại.

q02.png

Tạm kết luận: Hàm không tự tính lại khi thay đổi định dạng.

Nhấn F9 cũng không. Tuy nhiên khi thêm câu lệnh

Application.Volatile True

Thì nhấn F9 có tính lại.
 

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

Back
Top Bottom