giúp mình sửa lỗi hàm đếm số 0

Liên hệ QC

tuikhongten

Thành viên hoạt động
Tham gia
1/8/09
Bài viết
124
Được thích
11
mình mới vào nghề nên chưa hiểu nhiều mong các bạn sưa giúp lỗi này

Mình muốn đếm hàng ngang nhưng gặp phải lỗi #REF!

Và giúp mình hàm đếm số khác 0 nhé

mình làm dc bộ hàm đếm số 0 rồi giờ mìh muốn đếm các số khác 0 mong các bạn chỉ giúp mình với
 
Chỉnh sửa lần cuối bởi điều hành viên:
cảm ơn huthanh_db nhung mình tải về máy thì không hiển thị được. thấy báo là phải dùng macro , nhưng mình không biết gì về cái đó.với lại hàm đếm số 0 mình không đùng cái đó.bạn nào có thể giúp mìh với
Lấy lại file này. Do tôi làm chung trên một file khác mà quên xóa.

hì mình gửi file ban làm giúp mình nhé mình muốn tự làm nhưng mà do chưa hiểu nhiều nên hơi khó với mình.
Tôi làm giúp bạn. Còn muốn tự làm thì từ từ ngâm cứu nhé:-=. Công thức trong file này khá phức tạp.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
cảm ơn bạn huu thang nhưng mà hàm đó mình thấy lỗi ở dòng cuối cùng.nếu dòng cuối cùng có hai số liền nhau thì phần ô hiển thị sẽ nhảy cách ra,bạn có thể sửa nốt giúp mình kô?cảm ơn bạn nhiều
 
cảm ơn bạn huu thang nhưng mà hàm đó mình thấy lỗi ở dòng cuối cùng.nếu dòng cuối cùng có hai số liền nhau thì phần ô hiển thị sẽ nhảy cách ra,bạn có thể sửa nốt giúp mình kô?cảm ơn bạn nhiều
Nhầm một chút. Sửa lại thế này:
 

File đính kèm

Giúp mình sửa làm sao khi kéo xuống B7 thì số B6 và số 6 sẽ tự nhảy thành B7 và số 7 với.!
=IF(COLUMN(A6)>COUNT(SO_00);"";COUNTIF(INDIRECT("B6:"&ADDRESS(6;SMALL(SO_00;COLUMN(A6))));0)-SUM($BN6:BN6))
 

File đính kèm

bạn ơi mình dùng hàm row () thi phải làm thế nào mình không rành về cái này lắm.bạn có thể giúp mình được không?cảm ơn bạn.
 
bạn ơi mình dùng hàm row () thi phải làm thế nào mình không rành về cái này lắm.bạn có thể giúp mình được không?cảm ơn bạn.
Bạn thay thế nó vào:
Mã:
=IF(COLUMN(A6)>COUNT(SO_00);"";COUNTIF(INDIRECT("B"&[COLOR=Red]ROW()[/COLOR]&":"&ADDRESS([COLOR=Red]ROW()[/COLOR];SMALL(SO_00;COLUMN(A6))));0)-SUM($BN6:BN6))
 
Giúp mình sửa bộ đếm số với

mong các bạn sửa giúp mình. chi tiết mình đã viết kèm trong file rồi.
 

File đính kèm

mong các bạn sửa giúp mình. chi tiết mình đã viết kèm trong file rồi.
Tôi nghĩ bài này mà dùng công thức là không khả thì
Gữi bạn cách làm bằng code VBA
PHP:
Function altCount(Rng As Range, Pos As Long)
  Dim k As Long, i As Long, Dic
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To Rng.Count
    If IsEmpty(Rng(i)) Then Exit For
    k = k + 1
    If Rng(i) = "0" Then
      If Rng(i + 1) <> "0" Then
        Dic.Add i, k: k = 0
      End If
    Else
      If Rng(i + 1) = 0 Then
        Dic.Add i, k: k = 0
      End If
    End If
  Next
  If Pos > Dic.Count Then
    altCount = ""
  Else
    altCount = Split(Join(Dic.Items, vbBack), vbBack)(Pos - 1)
  End If
End Function
Hy vọng đúng ý bạn!
 

File đính kèm

Cũng tham gia 1 hàm mảng cho vui cửa vui nhà

PHP:
Option Explicit:           Option Base 1
Function DemCong(LookUpRange As Range)
 Dim Clls As Range, Jj As Integer
  
 ReDim MDL(LookUpRange.Count)
 If LookUpRange.Cells(1, 1).Value = "0" Then Jj = 2 Else Jj = 1
 For Each Clls In LookUpRange
   If Clls.Value <> "" Then _
      MDL(Jj) = MDL(Jj) + 1
   If Clls.Offset(, 1).Value <> Clls.Value Then
      Jj = Jj + 1
   End If
 Next Clls
 DemCong = MDL
End Function
Hướng dẫn cách dùng (theo file của NDU)

Ta chọn 1 lúc các ô sau (bằng chuột) 'AI17:AO17'
Nhấn chuột lên thanh công thức & nhập cú pháp: =DemCong(B4:U4)
Kết thúc bằng tổ hợp 3 fím;

Lần 2: Chọn dẫy ô 'AI19:AR19'; Cú pháp =DemCong(B9:V9)
& kết thúc bằng các fím đã xài;

Chúc thành công.
 
Chỉnh sửa lần cuối bởi điều hành viên:
PHP:
Option Explicit:           Option Base 1
Function DemCong(LookUpRange As Range)
 Dim Clls As Range, Jj As Integer
  
 ReDim MDL(LookUpRange.Count)
 If LookUpRange.Cells(1, 1).Value = "0" Then Jj = 2 Else Jj = 1
 For Each Clls In LookUpRange
   If Clls.Value <> "" Then _
      MDL(Jj) = MDL(Jj) + 1
   If Clls.Offset(, 1).Value <> Clls.Value Then
      Jj = Jj + 1
   End If
 Next Clls
 DemCong = MDL
End Function
Hướng dẫn cách dùng (theo file của NDU)

Ta chọn 1 lúc các ô sau (bằng chuột) 'AI17:AO17'
Nhấn chuột lên thanh công thức & nhập cú pháp: =DemCong(B4:U4)
Kết thúc bằng tổ hợp 3 fím;

Lần 2: Chọn dẫy ô 'AI19:AR19'; Cú pháp =DemCong(B9:V9)
& kết thúc bằng các fím đã xài;

Chúc thành công.
Hình như chưa ổn sư phụ à
Dòng 12 và 14, kết quả đúng phải là 4 2 5 1 7 1
Kết quả theo UDF của sư phụ là 4 1 1 5 1 7 1
Theo như tác giả trình bày thì:
- Số 0 liên tục ---> ĐẾM DỒN
- Số <>0 liên tục ---> cũng ĐẾM DỒN và xem các số <> 0 này là cùng 1 LOẠI
Chứ nếu cứ giống nhau liên tục thì ĐẾM DỒN thì quá khỏe rồi.. và hàm của em cũng không dài đến thế
Mặc khác:
Hàm của sư phụ nếu bỏ được mấy số 0 vô nghĩa thì sẽ hoàn chỉnh hơn!
 
Sửa lại rồi & cả khử hấu hết các số không đây

PHP:
Option Explicit:           Option Base 1
Function DemCong(LookUpRange As Range)
 Dim Clls As Range, Jj As Integer, bD As Integer, Ww As Integer
  
 bD = LookUpRange.Count
 ReDim MDL(bD)
 If LookUpRange.Cells(1, 1).Value = "0" Then Jj = 2 Else Jj = 1
 For Each Clls In LookUpRange
   If Clls.Value <> "" Then MDL(Jj) = MDL(Jj) + 1
   With Clls.Offset(, 1)
      If (Jj Mod 2 = 1 And .Value = "0") _
         Or (Jj Mod 2 = 0 And .Value <> "0") Then
         Jj = Jj + 1
      End If
   End With
 Next Clls
'Khu Các So Không Trong Mảng:'
 For Ww = Jj + 1 To bD
   MDL(Ww) = ""
 Next Ww
 DemCong = MDL
End Function
 
PHP:
Option Explicit:           Option Base 1
Function DemCong(LookUpRange As Range)
 Dim Clls As Range, Jj As Integer, bD As Integer, Ww As Integer
  
 bD = LookUpRange.Count
 ReDim MDL(bD)
 If LookUpRange.Cells(1, 1).Value = "0" Then Jj = 2 Else Jj = 1
 For Each Clls In LookUpRange
   If Clls.Value <> "" Then MDL(Jj) = MDL(Jj) + 1
   With Clls.Offset(, 1)
      If (Jj Mod 2 = 1 And .Value = "0") _
         Or (Jj Mod 2 = 0 And .Value <> "0") Then
         Jj = Jj + 1
      End If
   End With
 Next Clls
'Khu Các So Không Trong Mảng:'
 For Ww = Jj + 1 To bD
   MDL(Ww) = ""
 Next Ww
 DemCong = MDL
End Function
Em cũng góp 1 code cùng với sư phụ (hàm mãng)
PHP:
Function altCount(Rng As Range)
  Dim k As Long, i As Long, n As Long, Arr() As String
  ReDim Arr(1 To Rng.Count)
  Do
    i = i + 1: k = k + 1
    If (Rng(i) = "0" And Rng(i + 1) <> "0") Or (Rng(i) <> "0" And Rng(i + 1) = 0) Then
      n = n + 1: Arr(n) = k: k = 0
    End If
  Loop Until IsEmpty(Rng(i + 1))
  altCount = Arr
End Function
 

File đính kèm

Web KT

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

Back
Top Bottom