Cần viết Code để xuất chỉ số dòng của giá trị là Nguyễn Văn Điều ra ô E4 khi xài Dic (1 người xem)

  • Thread starter Thread starter hung2412
  • Ngày gửi Ngày gửi

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

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
934
Được thích
240
Giới tính
Nam
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một bảng tính như vầy:

ESCA53g.png


Dọc theo cột B là cột Họ và tên. Tôi xài Dictionary để nạp các ô trên cột B đó, Code như sau:
[GPECODE=vb]Sub Dong_cua_Dic()
Dim Dic As Object
Dim i As Long
Dim Tam
Set Dic = CreateObject("Scripting.Dictionary")
For i = 4 To [B65536].End(xlUp).Row
Tam = Cells(i, 2).Value
If Not Dic.exists(Tam) Then
Dic.Add Tam, i
End If
Next
End Sub[/GPECODE]
Để xuất chỉ số dòng của giá trị là Nguyễn Văn Điều ra ô E4 thì phải viết tiếp Code trên như thế nào? (Như ví dụ trên thì
chỉ số dòng của giá trị là Nguyễn Văn Điều7)
Kết quả mong muốn như hình dưới đây:

ZhhrPdW.png


Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.


 

File đính kèm

Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có một bảng tính như vầy:

ESCA53g.png


Dọc theo cột B là cột Họ và tên. Tôi xài Dictionary để nạp các ô trên cột B đó, Code như sau:
[GPECODE=vb]Sub Dong_cua_Dic()
Dim Dic As Object
Dim i As Long
Dim Tam
Set Dic = CreateObject("Scripting.Dictionary")
For i = 4 To [B65536].End(xlUp).Row
Tam = Cells(i, 2).Value
If Not Dic.exists(Tam) Then
Dic.Add Tam, i
End If
Next
End Sub[/GPECODE]
Để xuất chỉ số dòng của giá trị là Nguyễn Văn Điều ra ô E4 thì phải viết tiếp Code trên như thế nào? (Như ví dụ trên thì
chỉ số dòng của giá trị là Nguyễn Văn Điều7)
Kết quả mong muốn như hình dưới đây:

ZhhrPdW.png


Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.



Thêm Cells(i,5)=i trên next thử xem
 
Upvote 0
Dictionary là công cụ có mục đích chính là để tra tri. Mấy cái code "tìm trị duy nhất" chỉ là ứng dụng phụ.
Dùng dictionary mà chả biết mục đích này thì giống như mua một chiếc xe hàng về, đem cái thùng sau đuôi nó đi trồng cải.

Cách tra:
trị = dicObject.item(key)

Nếu dòng được chứa ở item thì code là:

dòng = dicObject.Item("Nguyễn Văn Điều")

làm cách nào ghi được chuỗi "Nguyễn Văn Điều" vào code VBA? chịu khó đi tìm các thớt nói về cách ghi Unicode.

Lưu ý: (lưu ý này giành cho các bạn khác, không phải cho chủ thớt, bởi vì cái ý tưởng này từ đầu đã điên rồ!)
Vì dictionary chỉ chứa key có trị duy nhất, cho nên cách này không thể dùng khi tên "Nguyễn Văn Điều" xuất hiện nhiều lần trong danh sách. Muốn miễn cưỡng làm thì phải có kỹ thuật ghép key (giải pháp dở ẹt) hoặc nạp item dạng phức tạp (mảng, chẳng hạn)
 
Upvote 0
Dictionary là công cụ có mục đích chính là để tra tri. Mấy cái code "tìm trị duy nhất" chỉ là ứng dụng phụ.
Dùng dictionary mà chả biết mục đích này thì giống như mua một chiếc xe hàng về, đem cái thùng sau đuôi nó đi trồng cải.

Cách tra:
trị = dicObject.item(key)

Nếu dòng được chứa ở item thì code là:

dòng = dicObject.Item("Nguyễn Văn Điều")

làm cách nào ghi được chuỗi "Nguyễn Văn Điều" vào code VBA? chịu khó đi tìm các thớt nói về cách ghi Unicode.

Lưu ý: (lưu ý này giành cho các bạn khác, không phải cho chủ thớt, bởi vì cái ý tưởng này từ đầu đã điên rồ!)
Vì dictionary chỉ chứa key có trị duy nhất, cho nên cách này không thể dùng khi tên "Nguyễn Văn Điều" xuất hiện nhiều lần trong danh sách. Muốn miễn cưỡng làm thì phải có kỹ thuật ghép key (giải pháp dở ẹt) hoặc nạp item dạng phức tạp (mảng, chẳng hạn)
OK, cảm ơn bạn. Chắc là vầy:
[GPECODE=vb]Sub Dong_cua_Dic()
Dim Dic As Object
Dim i As Long
Dim Tam
Set Dic = CreateObject("Scripting.Dictionary")
For i = 4 To [B65536].End(xlUp).Row
Tam = Cells(i, 2).Value
If Not Dic.exists(Tam) Then
Dic.Add Tam, i
End If
Next
[E4] = Dic.Item("Nguy" & ChrW$(7877) & "n V" & ChrW$(259) & "n " & ChrW$(272) & "i" & ChrW$(7873) & "u") 'Chỉ số dòng
[E6] = Range([B1], [B65536])(Dic.Item("Nguy" & ChrW$(7877) & "n V" & ChrW$(259) & "n " & ChrW$(272) & "i" & ChrW$(7873) & "u"))
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Mô fật; Đừng có lấy rìu để giết gà đi bạn!
 
Upvote 0

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

Back
Top Bottom