code đếm số ô có chung thuộc tính

Liên hệ QC

connhangheo

Thành viên thường trực
Tham gia
18/5/07
Bài viết
214
Được thích
225
Nghề nghiệp
Sinh Viên
Các bác cho em hỏi muốn viết code đếm số ô có cùng thuộc tính thì viết thế nào (ví dụ cột A có những ô có chữ đậm, có những ô có chữ bình thường, làm thế nào để đếm số ô giữa 2 ô có chữ đậm)??? Thanks
 
connhangheo đã viết:
Các bác cho em hỏi muốn viết code đếm số ô có cùng thuộc tính thì viết thế nào (ví dụ cột A có những ô có chữ đậm, có những ô có chữ bình thường, làm thế nào để đếm số ô giữa 2 ô có chữ đậm)??? Thanks
Cái này có thể dùng công thức dc.. Đó là hàm GET.CELL(20)
Còn như bạn muốn code VBA thì cũng đâu có khó... Bạn thử Record macro quá trình bạn format chử đậm cho 1 cell rồi xem code nó viết gì là có thể suy luận dc rồi...
ANH TUẤN
 
Upvote 0
Nếu đối tượng cần tìm của bạn là những SpecialCells Thì quá dễ:
http://www.giaiphapexcel.com/forum/showthread.php?t=1278;
Nếu không thuộc các loại trên, thì dùng vòng lặp
Mã:
 For Each Clls In Rng . . . 
    If . . . .=. . .   then iDem = 1 + iDem
  Next Clls
mà đếm thôi

CamChuongW.jpg
. . . . . .
 
Upvote 0
ở ví dụ của em ở trên thì ý của em là đếm số ô có chữ bình thường giữa 2 ô có chữ đậm thôi, khi sang 1 ô chữ đậm khác thì biến đếm lại bắt đầu từ 0,và lại đếm cho đến khi gặp ô có chữ đậm tiếp theo thì lại dừng lại
Như vậy thì code sẽ như thế nào ???
 
Upvote 0
Bạn thử với cái này xem nha:

PHP:
Option Explicit

Sub NoBold()
' Macro recorded 3/28/2008 by Sa_DQ in GPE.COM '
 Dim lRow As Long, jZ As Long, bDem As Byte, Lan2 As Byte
'Dem Dinh Dang Khong Dam Tai Cot "A"; '
 lRow = Range("A65432").End(xlUp).Row
 For jZ = 1 To lRow
    If Lan2 = 1 And Cells(jZ, 1).Font.Bold = False Then bDem = 1 + bDem
    If Cells(jZ, 1).Font.Bold = True Then
        Lan2 = Lan2 + 1:                If Lan2 = 2 Then Exit For
    End If
 Next jZ
 MsgBox bDem
End Sub
 
Upvote 0
Code của bác chỉ đếm được 1 lần, theo em hiểu bạn ấy muốn đếm liên tục các ô bình thường giữa các ô bold.
 
Upvote 0
Bài này cũng không phức tạp, chỉ cần bạn connhangheo cho biết những giá trị đếm được để ở đâu, làm gì rồi cải tiến code của bác SA_DQ một chút là được.
 
Upvote 0
ý của em thì bác sửa hộ em cái code này thì sẽ hiểu ngay, hì
PHP:
Sub NoBold()
 Dim lRow As Long, jZ As Long, i As Long, bDem As Byte, Lan2 As Byte
 lRow = Range("A65432").End(xlUp).Row
 For jZ = 1 To lRow
    If Cells(jZ, 1).Font.Bold = True Then
        i = jZ
        Do While Cells(i + 1, 1).Font.Bold = False
         i = i + 1
         Cells(i, 1).Font.ColorIndex = 3
         If Cells(i, 1).Font.Bold = True Then Exit Do
        Loop
    End If
 Next jZ
End Sub
code này nếu có khoảng 1000 dòng thì ko biết chạy đến bao h, mong các bác giúp đỡ, thanks
 
Upvote 0
PHP:
Sub NoBold()
 Dim lRow As Long, jZ As Long, i As Long, bDem As Byte, Lan2 As Byte
 lRow = Range("A65432").End(xlUp).Row
 For jZ = 1 To lRow
    If Cells(jZ, 1).Font.Bold = True Then
        i = jZ
        Do While Cells(i + 1, 1).Font.Bold = False
         i = i + 1
         Cells(i, 1).Font.ColorIndex = 3
         If Cells(i, 1).Font.Bold = True Then Exit Do
        Loop
    End If
 Next jZ
End Sub
code này nếu có khoảng 1000 dòng thì ko biết chạy đến bao h, mong các bác giúp đỡ, thanks
Không cứ 1.000 dòng, mà 10 dòng thôi cũng sẽ vô tận luôn (xác suất 5 ăn/5 thua)
Vì sao bạn biết không?
Nều nó không thoát khỏi vòng lặp Do . . . Loop
thì làm sao ra khỏi for . . . next được, hở 'Trời'!
(Bạn xem lại điều kiện để thoát vòng lặp trong dùm cái!!)
Còn vấn đề nữa, nói luôn đây chứ không sẽ phải nói lại:
Hình như bạn muốn đếm biến i; Vậy bạn chưa ghi nhận biến í vô đâu đó để lưu thì phải!
 
Upvote 0
To connhangheo: Sao bác không gửi file lên để mọi người cùng test, em vẫn không hiểu bác muốn để biến i ở đâu?
 
Upvote 0
Web KT

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

Back
Top Bottom