Option Explicit
Function CountNum(SColumns As Range, Num As Byte) As Byte
Dim Clls As Range
For Each Clls In SColumns
If Clls.Value = Num Then
With Clls.Interior
If .ColorIndex < 3 Or (.ColorIndex > 2 And Clls.Offset(1).Interior.ColorIndex < 3) Then
CountNum = CountNum + 1
End If
End With
End If
Next Clls
End Function
Mình không dùng code được ko vậy bạn?khi mình chép file qua máy khác nó lại ko hiểu!phải cài code vào máy đó ah?
Code thì chay trên file chứ sao lại chạy trên máy. Bạn chép file đã có code này thì máy nào chạy chẳng được.
Nếu muốn khi sử dụng file trên máy khác, thì bạn chép Code từ Addins sang Module của File những code nào dùng được cho File đó.Em có mấy chục file như vậy thì làm sao khi nào mở file lên cũng có thể dùng được vậy anh?mà chép sang máy khác cũng đọc dc!
nhờ bạn kiểm tra dùm mình, cái code này đếm luôn những hàng xanh mà có hàng trắng phía dưới luôn rồi!mà ý mình thì ko muốn đếm những hàng xanh mà có hàng trắng phía dưới, chỉ đếm những hàng xanh nằm 1 mình và những hàng trắng thôi!PHP:option explicit function countnum(scolumns as range, num as byte) as byte dim clls as range for each clls in scolumns if clls.value = num then with clls.interior if .colorindex < 3 or (.colorindex > 2 and clls.offset(1).interior.colorindex < 3) then countnum = countnum + 1 end if end with end if next clls end function
tại [j2] bạn nhập cú fáp =countnum($d1:$d11,3)
tại j2 là 4 tại các ô d4,d5,d6,d10!cảm ơn bạn nhiều!đây là 1 fần chủ iếu trong bảng số liệu của bạn
c|d|
4 | 3 | đếm trong cột d có bao nhiêu số 1 trong hàng trắng,
1|1|nếu hàng xanh có 1 hàng cũng đếm luôn,
2|2|
3|3|nếu hàng xanh có các hàng trắng phía dưới thì không quan tâm
4|3|(nghĩa là khi đếm không quan tâm đến d1 và d8)
1 | 3 |
1 | 1 |
2 | 3 |
1|2|
2|3|
vậy xin hỏi lại bạn, tại [j2] bạn muốn nó bằng 5 hay bằng 6 hay bằng bao nhiêu, khi cần đếm số 3 ở cột d này vậy?
Option Explicit
Function CountNum(sColumn As Range, Num As Byte) As Byte
Dim Clls As Range, MyColor As Integer
For Each Clls In sColumn
If Clls.Value = Num Then
MyColor = Clls.Offset(1).Interior.ColorIndex
If Clls.Row = 1 Then
If MyColor < 3 Then CountNum = CountNum + 1
Else
If Clls.Interior.ColorIndex < 3 Then
CountNum = 1 + CountNum
Else
If Clls.Offset(-1).Interior.ColorIndex < 3 And MyColor < 3 Then _
CountNum = 1 + CountNum
End If
End If
End If
Next Clls
End Function
(1)số 1 có 2 số tại D2 và D7 mà bạn!sao mình dùng CODE chỉ có 1 vậy?
(2) với lại sao mình thay đổi số 3 chỗ ô D6 thành số 1 thì tại ô J2 vẫn là số 4 (đáng lý phải là số 3 chứ)
nhờ bạn xem lại dùm!
Xin lỗi bạn nhé!có lẽ bạn ko hiểu ý của mình rồi!mình muốn đếm số trong các hàng trắng và hàng xanh nằm 1 mình (hàng xanh nằm 1 mình là các hàng 6 và 7), còn các hàng xanh 1 và 8 (là các hàng xanh có con là các hàng trắng) thì mình ko wan tâm!nghỉa là mình đổi số D3 và D8 thì ko ảnh hưởng gì đến kết quả của mình hết, còn mình đổi số trong các hàng 6 và 7 thì mình kết quả đếm của mình sẽ thay đổi!
Nhờ bạn giúp dùm mình!
Thanks bạn rất nhiều!
Lần cuối để hiểu nhau:
Bạn cần đếm số liệu cho trước nằm ở các dòng trắng (Không màu) & số liệu thuộc ô tô màu, nhưng ô dưới liền kề cũng tô màu?
Cái khó ở đây không fải chổ đi tìm thuật toán cho bạn; mà ở chổ hiểu được bạn!
Chúng ta không thể hiểu nhau qua tiếng mẹ đẽ rồi; Hay ta chuyển sang dùng tiếng "Lào", tiếng "Ý' đi nhễ!
Công nhận "bi" giờ mới lờ mờ hiểu(1) Dòng 6 cho tới dòng 8 bạn đang tô màu xanh; vậy trị [D7]=1 cũng đâu có được tính
(2) Cũng như trường hợp (1), dòng 7 màu xanh cùng với dòng 6, thì con gì nằm trong đó cũng thây kệ chứ!
Thật chán cho bạn quá đi mất! Tốn thời gian!
Sao Bạn khoái dùng từ "Một mình" thế:Mình cũng ko muốn làm phiền bạn nhiều!mình xin diễn đạt lại lần cuối cùng!
- Giá trị cần đếm nằm trong cột D
- Hàng xanh mà có hàng trắng phía dưới (là hàng số 1 và hàng số 8) thì mình ko quan tâm nghĩa là số trong D1 và D8 là gì thì kệ nó!
- Cái mình cần đếm là tất cả các hàng trắng (nghĩa là hàng 2,3,4,5,9,10.) + thêm các hàng xanh nằm 1 mình là các hàng 6 và 7 (nghĩa là ko có hàng trắng nằm phía dưới).
Tóm lại đối với bài toán này mình sẽ đếm các ô D2,D3,D4,D5,D6,D7,D9 và D10, khi giá trị trong các ô này thay đổi thì kết quả đếm của mình sẽ thay đổi!(ko đếm D1 và D8).
Thanks bạn đã hết lòng quan tâm đến mình!