- Tham gia
- 23/3/16
- Bài viết
- 705
- Được thích
- 52
Function DemKiTu(KT As String, Rng As Range)
Dim sRng As Range, Cls As Range, Rg0 As Range
Dim Tmp As String
Dim Dem As Integer, VTr As Byte
Set sRng = Rng.Find(KT, , xlFormulas, xlPart)
If sRng Is Nothing Then
MsgBox "Nothing"
Else
Set Rg0 = Range(sRng, Rng(Rng.Rows.Count))
For Each Cls In Rg0
Tmp = Cls.Value & "GPE.COM"
Do
VTr = InStr(Tmp, KT)
If VTr Then
DemKiTu = DemKiTu + 1
Tmp = Mid(Tmp, VTr + 1, Len(Tmp))
Else
Exit Do
End If
Loop
Next Cls
End If
End Function
Có ký tự nào cần đếm mà liên quan đến việc phân biệt HOA thường không?Chào cả nhà GPE ! CHúc cả nhà Giáng sinh vui vẽ
Cả nhà giúp em đoạn code đểm 1 ký tự nào đó xuất hiện bao nhiêu lần trong 1 vùng. Xin chân thành cảm ơn
Code này nếu để đếm ký tự đơn thì được chứ đếm 1 chuỗi nhiều ký tự thì sai sư phụ àXin chuyển đến bạn hàm người dùng sau:
PHP:Function DemKiTu(KT As String, Rng As Range) Dim sRng As Range, Cls As Range, Rg0 As Range Dim Tmp As String Dim Dem As Integer, VTr As Byte Set sRng = Rng.Find(KT, , xlFormulas, xlPart) If sRng Is Nothing Then MsgBox "Nothing" Else Set Rg0 = Range(sRng, Rng(Rng.Rows.Count)) For Each Cls In Rg0 Tmp = Cls.Value & "GPE.COM" Do VTr = InStr(Tmp, KT) If VTr Then DemKiTu = DemKiTu + 1 Tmp = Mid(Tmp, VTr + 1, Len(Tmp)) Else Exit Do End If Loop Next Cls End If End Function
Đó là làm theo đề nghị của chủ bài đăng mà.
Còn đếm chuỗi kí tự thì fải sửa tiếp hàm thôi.
Em yêu cầu rất rõ và ví dụ có ** và ;; mà anhCode này nếu để đếm ký tự đơn thì được chứ đếm 1 chuỗi nhiều ký tự thì sai sư phụ à
Chẳng hạn đếm có bao nhiêu dấu ;;
Tôi thấy chứ! Vấn đề hiện nay người ta nghĩ rằng bạn muốn đếm 1 ký tự, tức đến 1 dấu * hoặc 1 dấu ;Em yêu cầu rất rõ và ví dụ có ** và ;; mà anh
Chào cả nhà GPE ! CHúc cả nhà Giáng sinh vui vẽ
Cả nhà giúp em đoạn code đểm 1 ký tự nào đó xuất hiện bao nhiêu lần trong 1 vùng. Xin chân thành cảm ơn
Function CountChar(Rng As Variant, Ch As String) As Integer
Dim Cell As Variant
For Each Cell In Rng
If InStr(Cell.Value, Ch) Then CountChar = CountChar + (Len(Cell) - Len(Replace(Cell.Value, Ch, ""))) / Len(Ch)
Next Cell
End Function
Tôi đả test gần 3 ngày. Code chính xác 100% cho hầu hết mọi trường hợp. Chân thành cảm ơn Giáo sư Code ( tôi bái phục thích nhất đoạn code tìm kiếm 10.000 tôi đã hỏi. Code rất rất Nhanh Nhanh và Cực kỳ chính xác )Mã:Function CountChar(Rng As Variant, Ch As String) As Integer Dim Cell As Variant For Each Cell In Rng If InStr(Cell.Value, Ch) Then CountChar = CountChar + (Len(Cell) - Len(Replace(Cell.Value, Ch, ""))) / Len(Ch) Next Cell End Function
Mã:Function CountChar(Rng As Variant, Ch As String) As Integer Dim Cell As Variant For Each Cell In Rng If InStr(Cell.Value, Ch) Then CountChar = CountChar + (Len(Cell) - Len(Replace(Cell.Value, Ch, ""))) / Len(Ch) Next Cell End Function
Sub codedem2kytu()
' Thuc ra a cam Dem 2 ky tu * va ;
Range("d3") = (Len(Range("d8").Value) * 2) - _
Len(Replace(Range("d8").Value, "*", "")) - _
Len(Replace(Range("d8").Value, ";", ""))
End Sub
Mã:... If InStr(Cell.Value, Ch) Then CountChar = CountChar + (Len(Cell) - Len(Replace(Cell.Value, Ch, ""))) / Len(Ch)
cảm ơn đoạn code của bác nha. Thật ra e chỉ cần đoạn code đếm được 2 ký tự * và ; để em ứng dụng cho công việc của em ( nếu chỉ cần đếm >0 thì em không cho người dùng nhập vào ô Tên hàng ( vì sau này nó sẽ ảnh hưởng đến code tìm kiếm siêu tốc độ 10.000 dòng của bác ). Em tự mò mẫm thì nó chỉ đếm được 1 ô thôi. Bác sữa lại giúp em đếm được 1 vùng ( chẳng hạn ( D8:C100). THank bác
Mã:Sub codedem2kytu() ' Thuc ra a cam Dem 2 ky tu * va ; Range("d3") = (Len(Range("d8").Value) * 2) - _ Len(Replace(Range("d8").Value, "*", "")) - _ Len(Replace(Range("d8").Value, ";", "")) End Sub
Sub codedem2kytu()
Dim Cell As Variant, CountChar As Long, tmp As Variant
For Each Cell In Range("d8:c17")
tmp = Cell.Value
If InStr(tmp, "*") Then CountChar = CountChar + Len(tmp) - Len(Replace(tmp, "*", ""))
If InStr(tmp, ";") Then CountChar = CountChar + Len(tmp) - Len(Replace(tmp, ";", ""))
Next Cell
Range("d3") = CountChar
End Sub
Làm tôi nhớ vụ hàm if gì của bạn.
If làm được + test 1 tháng> zả tiền, ngược lại về "ăn cơm mẹ nấu"...
(Chú: hôm nay mới gần 3 ngày thôi ah.)
Code của bác chính xác theo ý em rồi, chúc bác năm mới thật nhiều sức khoẻMã:Sub codedem2kytu() Dim Cell As Variant, CountChar As Long, tmp As Variant For Each Cell In Range("d8:c17") tmp = Cell.Value If InStr(tmp, "*") Then CountChar = CountChar + Len(tmp) - Len(Replace(tmp, "*", "")) If InStr(tmp, ";") Then CountChar = CountChar + Len(tmp) - Len(Replace(tmp, ";", "")) Next Cell Range("d3") = CountChar End Sub