Hàm không trả về được giá trị Null

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

ankiten

Thành viên mới
Tham gia
4/1/09
Bài viết
17
Được thích
0
Chào cả nhà. Mình có viết một hàm thế này, nhưng khi sử dụng gặp một ô rỗng trong Rng1 giá trị trả về bằng 0 chứ k phải là #Value. Lỗi ở đâu thể nhỉ
PHP:
Public Function QValue2(Rng1 As Range, Rng2 As Range)
Dim avg1, avg2   As Double
Dim n As Integer
Dim cll1, cll2 As Range
avg1 = 0
avg2 = 0
n = 4
For Each cll1 In Rng1
    If cll1 <> "" Then
        avg1 = avg1 + cll1
    Else
        avg1 = Null
        Exit For
    End If
Next
For Each cll2 In Rng2
  If cll2 = "" Then
   n = n - 1
  End If
  avg2 = avg2 + cll2
Next
      QValue2 = (avg1 / 4) / (avg2 / n)
End Function
 
Bạn muốn nếu để trống rng1 thì kết quả trả về #value hả bản? hay là trả về kết quả 0. Nếu như bạn muốn giá trị của hàm trả về giá trị #Value khi không có mặt Rng1 thì bạn thử code sau nhé! M ko biểt lập trình. Thử sửa nghịch chút thôi.
Mã:
Public Function QValue2(Rng2 As Range, [B]Optional Rng1 As Variant[/B])
Dim avg1, avg2   As Double
Dim n As Integer
avg1 = 0
avg2 = 0
Dim cll1, cll2 As Range
n = 4
For Each cll1 In Rng1
    If cll1 <> "" Then
        avg1 = avg1 + cll1
    Else
        avg1 = Null
        Exit For
    End If
Next
For Each cll2 In Rng2
  If cll2 = "" Then
   n = n - 1
  End If
  avg2 = avg2 + cll2
Next
      QValue2 = (avg1 / 4) / (avg2 / n)
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu gặp một ô trống trong Range Rng1 thì trả về #Value bạn ạh. Nhưng thử nghiệm thì hàm lại trả về 0.k biết vì sao . Mình đã gán avg1 = Null rồi mà
 
Upvote 0
M nghĩ là khai báo là Variant thì nó có thể bao gồm Null, Empty,..Bạn xem lại phần khai báo biến thử xem nhé.Bạn khai báo biến rng1 là variant thì kết quả sẽ là #Value mà.
 
Upvote 0
PHP:
 If cll1 <> "" Then
        avg1 = avg1 + cll1
    Else
        avg1 = Null
        Exit For
    End If

Sửa thành:

PHP:
' .....'
        avg1 = ""
'....'

Null mà cộng trừ nhân chia sẽ coi như zero và vẫn tính toán. Nhưng 1 chuỗi dù là chuỗi rỗng sẽ không tính toán được. Vậy phải khai báo avg1 là variant.
 
Upvote 0
Web KT

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

Back
Top Bottom