giúp code lọc tên hàng không trùng, và đếm số lần xuất hiện

Liên hệ QC

hunglam123

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
31/3/20
Bài viết
180
Được thích
43
Chào cả nhà GPE !
em cần 1 đoạn code lọc ra các tên hàng không trùng và đếm số lần xuất hiện. Xin chân thành cảm ơn

1592031163800.png
 

File đính kèm

  • gpe.xlsx
    10.1 KB · Đọc: 25
Lần chỉnh sửa cuối:
Thử thay:
PHP:
If k <> 0 Then Sheet1.Range("D3").Resize(k, 2).Value = aKetQua

bằng;
PHP:
If k <> 0 Then Sheet1.Range("D3").Resize(k - 1, 2).Value = aKetQua
Sửa thế này nếu giá trị Rỗng nó nằm giữa Data chắc lại thiếu dữ liệu.
 
Upvote 0
Dùng 1 mảng:

Dim a As Variant, aNum As Long
Dim i As Long
' lưu ý: 2 cột
a = Range("B3:C" & Cells(Rows.Count, "B").End(xlUp).Row).Value
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(a)
If a(i, 1) <> "" Then ' thớt mới thêm điều kiện này. Trước đó không có. File mẫu cũng không có
If Not .Exists(a(i, 1)) Then
aNum = aNum + 1 ' tổng số dòng kết quả
.Add (a(i, 1)), aNum
a(aNum, 1) = a(i, 1)
a(aNum, 2) = 1
Else
a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) + 1
End If
End If
Next i
End With
Range("D3").Resize(aNum, 2).Value = a

Dùng đít sần chỉ để đếm:
(lưu ý: Application.Transpose có giới hạn của nó. Khi dùng nên cẩn thận. Code chỉ có tính chất minh họa)

a = Range("B3:C" & Cells(Rows.Count, "B").End(xlUp).Row).Value
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(a)
If a(i, 1) <> "" Then .Item(a(i, 1)) = .Item(a(i, 1)) + 1
Next i
Range("D3").Resize(.Count).Value = Application.Transpose(.Keys())
Range("E3").Resize(.Count).Value = Application.Transpose(.Items())
End With

Code chạy ok rồi. Bây giờ không muốn phần biệt chữ Hoa chữ Thường thì thêm Ucase vào đoạn nào vậy bác

Mã:
Sub dadad()
Dim a As Variant, aNum As Long
Dim i As Long
a = Range("B3:C" & Cells(Rows.Count, "B").End(xlUp).Row).Value
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(a)
    If a(i, 1) <> "" Then ' th?t m?i thêm di?u ki?n này. Tru?c dó không có. File m?u cung không có
        If Not .Exists(a(i, 1)) Then
                aNum = aNum + 1 ' t?ng s? dòng k?t qu?
                .Add (a(i, 1)), aNum
                a(aNum, 1) = a(i, 1)
                a(aNum, 2) = 1
        Else
               a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) + 1
        End If
    End If
Next i
End With
Range("D3:E1000").ClearContents
Range("D3").Resize(aNum, 2).Value = a
End Sub
 
Upvote 0
Thử chi. Từ o-ka dến 100% xa lắm. Phải tét 1000 lần trong phòng thí nghiệm.

Đã test rất Kỷ và Thông báo 1 tin buồn. Code vẫn bị lổi khi tôi cố tinh nhập 1 text có tên là #NAME?
( Đó là 1 tên tôi tự gõ từ bàn phím chứ không phải là 1 công thức sai cú pháp trả về )


1592133500362.png


Mã:
Sub Codelocdem()
Dim a As Variant, aNum As Long
Dim i As Long
a = Range("B3:C5000").Value
With CreateObject("Scripting.dictionary")
.CompareMode = vbTextCompare ' BO DONG NAY de phan biet chu hoa chu thuong
For i = 1 To UBound(a)
    If a(i, 1) <> "" Then
        If Not .Exists(a(i, 1)) Then
                aNum = aNum + 1
                .Add (a(i, 1)), aNum
                a(aNum, 1) = a(i, 1)
                a(aNum, 2) = 1
        Else
               a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) + 1
        End If
    End If
Next i
End With
Range("D3:E1000").ClearContents
Range("D3").Resize(aNum, 2).Value = a
End Sub

tÔI muốn nó đúng với bất cứ Text nào . Ví dụ như hình bên dưới

1592133725942.png
 
Upvote 0
Đã test rất Kỷ và Thông báo 1 tin buồn. Code vẫn bị lổi khi tôi cố tinh nhập 1 text có tên là #NAME?
( Đó là 1 tên tôi tự gõ từ bàn phím chứ không phải là 1 công thức sai cú pháp trả về )


View attachment 239263


Mã:
Sub Codelocdem()
Dim a As Variant, aNum As Long
Dim i As Long
a = Range("B3:C5000").Value
With CreateObject("Scripting.dictionary")
.CompareMode = vbTextCompare ' BO DONG NAY de phan biet chu hoa chu thuong
For i = 1 To UBound(a)
    If a(i, 1) <> "" Then
        If Not .Exists(a(i, 1)) Then
                aNum = aNum + 1
                .Add (a(i, 1)), aNum
                a(aNum, 1) = a(i, 1)
                a(aNum, 2) = 1
        Else
               a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) + 1
        End If
    End If
Next i
End With
Range("D3:E1000").ClearContents
Range("D3").Resize(aNum, 2).Value = a
End Sub

tÔI muốn nó đúng với bất cứ Text nào . Ví dụ như hình bên dưới

View attachment 239266
Bạn nhập tên như vậy nhưng excel nó tự động chuyển thành sang dạng lỗi.Bạn nhập vào với định dạng text là được.Mà đây là code viết cho bạn không việc gì phải thông báo tin buồn.Nếu muốn sửa thì thêm câu lệnh kiểm tra là được.
 
Upvote 0
...
tÔI muốn nó đúng với bất cứ Text nào . ...
Nó thực sự đúng với bất cứ "Text" nào.
Báo "tin buồn" cho bạn là bạn làm việc với Excel bao lâu nay mà không biết cách phân biệt thế nào là một "Text".
Về học lại Excel, cách gõ text, và mặc định trước khi đua đòi cốt kiếc VBA.
 
Upvote 0
Đã test rất Kỷ và Thông báo 1 tin buồn. Code vẫn bị lổi khi tôi cố tinh nhập 1 text có tên là #NAME?
( Đó là 1 tên tôi tự gõ từ bàn phím chứ không phải là 1 công thức sai cú pháp trả về )


View attachment 239263


Mã:
Sub Codelocdem()
Dim a As Variant, aNum As Long
Dim i As Long
a = Range("B3:C5000").Value
With CreateObject("Scripting.dictionary")
.CompareMode = vbTextCompare ' BO DONG NAY de phan biet chu hoa chu thuong
For i = 1 To UBound(a)
    If a(i, 1) <> "" Then
        If Not .Exists(a(i, 1)) Then
                aNum = aNum + 1
                .Add (a(i, 1)), aNum
                a(aNum, 1) = a(i, 1)
                a(aNum, 2) = 1
        Else
               a(.Item(a(i, 1)), 2) = a(.Item(a(i, 1)), 2) + 1
        End If
    End If
Next i
End With
Range("D3:E1000").ClearContents
Range("D3").Resize(aNum, 2).Value = a
End Sub

tÔI muốn nó đúng với bất cứ Text nào . Ví dụ như hình bên dưới

View attachment 239266
Mình có đọc bài của bạn. Mình thấy cái cách bạn hỏi, phản hồi với các anh chị thật chán bạn ạ. Mình ở tư thế đi nhờ sự trợ giúp mà bạn ăn nói chả có đầu có đũa gì cả.
 
Upvote 0
Mình có đọc bài của bạn. Mình thấy cái cách bạn hỏi, phản hồi với các anh chị thật chán bạn ạ. Mình ở tư thế đi nhờ sự trợ giúp mà bạn ăn nói chả có đầu có đũa gì cả.
Ủa bạn chưa biết hả.
Người ta không có "nhờ". Thực sự ra là người ta tạo cơ hội cho các thành viên khác trên GPE "tích đức". Và vì vậy, người ta có quyền trịch thượng và các người khác muốn tu công tích đức (tôi không có nói lái nhé) có bổn phận phải chìu chuộng.

Ở đây ai cũng biết danh thớt này.
 
Upvote 0
Nó thực sự đúng với bất cứ "Text" nào.
Báo "tin buồn" cho bạn là bạn làm việc với Excel bao lâu nay mà không biết cách phân biệt thế nào là một "Text".
Về học lại Excel, cách gõ text, và mặc định trước khi đua đòi cốt kiếc VBA.
Trong C++ bất cứ ký tự nào nhập được trong từ Inphut bàn phím được tạm gọi là Text. bác nên đi học lại đi. Phát biểu trật lất mà đòi dạy đời người ta
Bài đã được tự động gộp:

Mình có đọc bài của bạn. Mình thấy cái cách bạn hỏi, phản hồi với các anh chị thật chán bạn ạ. Mình ở tư thế đi nhờ sự trợ giúp mà bạn ăn nói chả có đầu có đũa gì cả.
[/QUOTE
Không liên quan đến bạn. Bạn lượn đi cho khác cho nước trong cái
Bài đã được tự động gộp:

Mình có đọc bài của bạn. Mình thấy cái cách bạn hỏi, phản hồi với các anh chị thật chán bạn ạ. Mình ở tư thế đi nhờ sự trợ giúp mà bạn ăn nói chả có đầu có đũa gì cả.
Next đi chổ khác dùm cái. Không biết đầu đuôi mà phán như đúng rồi
 
Upvote 0
Trong C++ bất cứ ký tự nào nhập được trong từ Inphut bàn phím được tạm gọi là Text. bác nên đi học lại đi. Phát biểu trật lất mà đòi dạy đời người ta
Bài đã được tự động gộp:


Bài đã được tự động gộp:


Next đi chổ khác dùm cái. Không biết đầu đuôi mà phán như đúng rồi
hi. Cách bạn ăn nói biết bạn là người thế nào rồi, ra xã hội mà có thái độ này chả ai chơi với đâu bạn ạ. Học là người khó lắm, có nhiều người gần hết nửa đời vẫn phải học lại từ đầu bài học làm người.
 
Upvote 0
Ủa bạn chưa biết hả.
Người ta không có "nhờ". Thực sự ra là người ta tạo cơ hội cho các thành viên khác trên GPE "tích đức". Và vì vậy, người ta có quyền trịch thượng và các người khác muốn tu công tích đức (tôi không có nói lái nhé) có bổn phận phải chìu chuộng.

Ở đây ai cũng biết danh thớt này.
Báo "tin buồn" cho bạn là bạn làm việc với Excel bao lâu nay mà không biết cách phân biệt thế nào là một "Text".
Đọc bài #32 đi.
Trong C++ ...
Trớt hướt.
"Quả báo"!
 
Lần chỉnh sửa cuối:
Upvote 0
Trong C++ bất cứ ký tự nào nhập được trong từ Inphut bàn phím được tạm gọi là Text. bác nên đi học lại đi. Phát biểu trật lất mà đòi dạy đời người ta
Rừng nào cọp nấy. Ở với Excel thì nói theo ngữ cảnh Excel. Dốt Excel còn bày đặt đem cái khác ra loè thiên hạ.

Riêng về Xê cọng cọng cũng học bài sai bét.
Xê cọng cọng là ngôn ngữ hướng đối tượng. Muốn chương trình nhận một cái gì từ "input" (có thể à bàn phím, có thể là file...) thì nên qua đối tượng đọc input.
Điển hình, đối tượng std::cin có đủ các hàm chồng cho toán tử >> để biết mình cần trả về cái gì.
 
Upvote 0
hi. Cách bạn ăn nói biết bạn là người thế nào rồi, ra xã hội mà có thái độ này chả ai chơi với đâu bạn ạ. Học là người khó lắm, có nhiều người gần hết nửa đời vẫn phải học lại từ đầu bài học làm người.
Cao thủ C++ này làm việc dự án tỷ đồng. Nhưng lại đi nhặt các code miễn phí trên mạng để sử dụng.
Diễn đàn giờ hiếm người như này lắm. Cần bảo tồn bạn à
 
Upvote 0
Cao thủ C++ này làm việc dự án tỷ đồng. Nhưng lại đi nhặt các code miễn phí trên mạng để sử dụng.
Diễn đàn giờ hiếm người như này lắm. Cần bảo tồn bạn à
Không tốn tiền bạc và cũng không tốn công, tốn sức mà lụm lúa thì quá thơm đi chứ.
 
Upvote 0
Không tốn tiền bạc và cũng không tốn công, tốn sức mà lụm lúa thì quá thơm đi chứ.
Tôi mách code cho tác giả bài #8. Thớt thực ra chỉ mót lúa.
Tuy nhiên, gặp lúa tốt thì mót cũng thơm.
Chỉ là có kẻ không biết phận, bày đặt khoác lác lòi cái dốt của mình ra.
 
Upvote 0
Thiệt ra cái vụ "lượm lúa", "lợi dụng", hay "ăn theo" chỉ là chuyện nhỏ. Chuyện tính cách cá nhân.

Ở diễn đàn này còn có hạng mặt dầy, không biết tự trọng, đi cóp py code của người khác này nơi khác về, đăng lên đây mà không báo nguồn, đánh lừa người khác như code là của chính mình.

Lại có thành phần hạ tiện hơn, đã cóp py code rồi còn xoá tên tác giả, nhét tên chữ ký của mình vào. Nếu không phải là hành động cướp giựt, ăn cắp thì tôi cũng chả biết phải gọi là gì.
 
Upvote 0
Web KT

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

Back
Top Bottom