Sửa lỗi: Hàm đếm các cells kiểu Text (2 người xem)

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

khanhcang2

Thành viên chính thức
Tham gia
5/6/12
Bài viết
89
Được thích
23
Em bắt đầu học VBA, em muốn viết 1 hàm đếm các ô trong 1 vùng có cùng thông tin kiểu "type". Em viết như sau:

Function Sumtype(Area As Range)

Dim sng As Single, rng As Range
For Each rng In Area
sng = 0
If Cell("type", rng) = "l" Then sng = sng + 1
Next rng
SumColor = sng
End Function

Nhưng em không biết trong bài này, ý tưởng, công thức của em sai ở những điểm cơ bản nào. Em mong các anh chị giúp đỡ!
 
Em bắt đầu học VBA, em muốn viết 1 hàm đếm các ô trong 1 vùng có cùng thông tin kiểu "type". Em viết như sau:

Function Sumtype(Area As Range)

Dim sng As Single, rng As Range
For Each rng In Area
sng = 0
If Cell("type", rng) = "l" Then sng = sng + 1
Next rng
SumColor = sng
End Function

Nhưng em không biết trong bài này, ý tưởng, công thức của em sai ở những điểm cơ bản nào. Em mong các anh chị giúp đỡ!
Đọc sơ qua thì thấy kỳ cục lắm lắm
1. Câu lệnh sng=0 bị thừa nên sng sẽ luôn là 0, nếu lớn nhất chỉ có thể là 1
2. VBA hình như không có hàm Cell, nếu dùng thì e là phải là Application.Cell mới được
3. Tự nhiên ở đâu lòi ra anh SumColor vậy? Chắc phải sửa lại là Sumtype
4. Nếu muốn kiểm tra xem đó có phải là chuỗi thì sao không dùng hàm TypeName
 
Lần chỉnh sửa cuối:
Upvote 0
Đọc sơ qua thì thấy kỳ cục lắm lắm
1. Câu lệnh sng=0 bị thừa nên sng sẽ luôn là 0, nếu lớn nhất chỉ có thể là 1
2. VBA hình như không có hàm Cell, nếu dùng thì e là phải là Application.Cell mới được
3. Tự nhiên ở đâu lòi ra anh SumColor vậy? Chắc phải sửa lại là Sumtype
4. Nếu muốn kiểm tra xem đó có phải là chuỗi thì sao không dùng hàm TypeName
Dạ! Em xin phép được sửa hàm Sumcolor trong bài của GPE. Do chưa có kiến thức nên nó hơi lôm côm ạ. Nhưng các anh cho em hỏi về ý tưởng tính số cells cùng kiểu thông tin có thực hiện được không ạ? Dùng hàm cell đã bị phá sản rồi ạ! --=0--=0
 
Upvote 0
Dạ! Em xin phép được sửa hàm Sumcolor trong bài của GPE. Do chưa có kiến thức nên nó hơi lôm côm ạ. Nhưng các anh cho em hỏi về ý tưởng tính số cells cùng kiểu thông tin có thực hiện được không ạ? Dùng hàm cell đã bị phá sản rồi ạ! --=0--=0
trong vba có hàm TypeName kiểm tra kiểu dữ liệu
nhưng bạn lấy dữ liệu từ range đưa xuống kiểm tra, nếu là chuỗi thì không sao, nếu là số thì cho dù số nguyên hay số thực thì nó điều cho là double, như vậy bạn muốn kiểm tra như thế nào? muốn trong vùng chọ có bao nhiêu loại chuổi bao nhiêu loại số, hay bạn muốn ra sao
ví dụ có 4 ô chuổi và 3 ô số, kết quả ra 2 loại dữ liệu, hay ra 4 ô chuỗi, 3 ô số
 
Upvote 0
Cùng kiểu thông tin nghĩa là sao? Sao bạn không cho file lên cho cụ thể
Xem code, cảm giác nên dùng COUNTIF thì phải
Ý đồ của em là muốn lập công thức kiểm tra trong vùng (D5:D20) xem có bao nhiêu ô dữ liệu kiểu text (khi em dùng hàm Cell("type";…) cho giá trị là "l" và bao nhiêu ô khi dùng hàm Cell("type"; cho giá trị là "v")). Cảm ơn các anh ah!
File đính kèm:
 

File đính kèm

Upvote 0
Ý đồ của em là muốn lập công thức kiểm tra trong vùng (D5:D20) xem có bao nhiêu ô dữ liệu kiểu text (khi em dùng hàm Cell("type";…) cho giá trị là "l" và bao nhiêu ô khi dùng hàm Cell("type"; cho giá trị là "v")). Cảm ơn các anh ah!
File đính kèm:
Worksheetfunction.cell không hoạt động nên có thể thay hàm ở bài 1 thành
Mã:
Function Sumtype(Area As Range) As Long
    Dim rng As Range
    For Each rng In Area
        If Application.WorksheetFunction.IsText(rng) Then Sumtype = Sumtype + 1
    Next rng
End Function
 
Upvote 0
Worksheetfunction.cell không hoạt động nên có thể thay hàm ở bài 1 thành
Mã:
Function Sumtype(Area As Range) As Long
    Dim rng As Range
    For Each rng In Area
        If Application.WorksheetFunction.IsText(rng) Then Sumtype = Sumtype + 1
    Next rng
End Function
Em chạy hàm sumtype theo code của anh vẫn chưa thành công! Vấn đề ở đây là gì ah?
 
Upvote 0
Em chạy hàm sumtype theo code của anh vẫn chưa thành công! Vấn đề ở đây là gì ah?
Mình chưa hiểu không thành công là gì? Code của bạn cần sửa mục đích đếm số ô text trong 1 range, bạn thử đếm thủ công bằng công thức mảng {=sum(if(cell("type",khối_ô)="l",1)} xem kết quả có giống nhau không?
 
Upvote 0
bạn thử đếm thủ công bằng công thức mảng {=sum(if(cell("type",khối_ô)="l",1)} xem kết quả có giống nhau không?

Hàm CELL không phải là hàm mảng nên áp dụng công thức này không được đâu
Theo tôi thì thế này:
Mã:
=SUMPRODUCT(1*ISTEXT(D4:D20))
Hoặc:
Mã:
=COUNTIF(D4:D20,"*")
 
Lần chỉnh sửa cuối:
Upvote 0
Mình chưa hiểu không thành công là gì? Code của bạn cần sửa mục đích đếm số ô text trong 1 range, bạn thử đếm thủ công bằng công thức mảng {=sum(if(cell("type",khối_ô)="l",1)} xem kết quả có giống nhau không?
Như đoạn code của anh thì em hiểu là khi nhập em sẽ phải nhập tại 1 ô nào đó là =sumtype(D4:D20) và cho kết quả số ô chứa text nhưng hàm báo lỗi #VALUE
 
Upvote 0
Lúc đầu em cũng sử dụng hàm COUNTIF nhưng không biết cách diễn đạt. Em đang học kĩ chức năng của hàm này. Công thức sẵn có mà mạnh ghê ah! :-=
 
Upvote 0

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

Back
Top Bottom