Trợ giúp tạo addin để lookup từ data có sẵn

Liên hệ QC

kloud7

Thành viên mới
Tham gia
7/4/11
Bài viết
22
Được thích
1
Em muốn tạo một add in một lệnh tùy ý với mục đích tìm kiếm và trả về giá trị tham chiếu từ data có sẵn (khởi động ẩn cùng excel) như file gửi kèm, nhờ các cao nhân hướng dẫn giúp em ạ. Em cảm ơn!!!!!
 

File đính kèm

  • Trợ Giúp.xlsx
    10.5 KB · Đọc: 11
Tại sao có vlookup mà bạn không làm?
Ý mình là file database mình không mở lên, chỉ cần gõ code =VV(gõ mã) trên file đang dùng là nó trả cho mình giá trị lấy từ file data đó. Như bình thường thì mình phải bật file data đó lên rồi copy paste thủ công bạn ạ.
 
Upvote 0
Ý mình là file database mình không mở lên, chỉ cần gõ code =VV(gõ mã) trên file đang dùng là nó trả cho mình giá trị lấy từ file data đó. Như bình thường thì mình phải bật file data đó lên rồi copy paste thủ công bạn ạ.
Sửa đường dẫn, tên file và vùng data trong code.
 

File đính kèm

  • SQL_kloud7.xlsm
    19.3 KB · Đọc: 12
Upvote 0
Ý mình là file database mình không mở lên, chỉ cần gõ code =VV(gõ mã) trên file đang dùng là nó trả cho mình giá trị lấy từ file data đó. Như bình thường thì mình phải bật file data đó lên rồi copy paste thủ công bạn ạ.
Mình thấy vlookup từ file đang đóng vẫn không có vấn đề gì cả không hiểu sao bạn không làm
Dùng code mà bạn không rành thì sửa còn mệt hơn, và nếu dữ liệu không chuẩn CSDL thì code bằng ADO có thể đôi khi trả kết quả có vấn đề
 
Upvote 0
Sửa đường dẫn, tên file và vùng data trong code.
Em cảm ơn bác, em đã sửa tên file, đường dẫn và thực hành mà chưa được như sau ạ:

- Lệnh chạy rồi nhưng trả về giá trị 0 thôi bác
- Khi em copy lệnh đó paste sang ô excel khác thì đối tượng cần tìm là mã SD20, SD25 (gõ tay) ... bị nhảy thành SD22, SF34, SG ...

Em gửi cả 2 file (file thao tác làm việc và file data dữ liệu), bác xem giúp em với.

Em xin cảm ơn ạ!
Bài đã được tự động gộp:

Mình thấy vlookup từ file đang đóng vẫn không có vấn đề gì cả không hiểu sao bạn không làm
Dùng code mà bạn không rành thì sửa còn mệt hơn, và nếu dữ liệu không chuẩn CSDL thì code bằng ADO có thể đôi khi trả kết quả có vấn đề
Tại em lười, file làm việc khi e nhập liệu cũng cả ngàn dòng nữa nên ngồi edit lệnh vlookup hoặc copy-paste chay lâu quá, e muốn tạo lệnh riêng để rút ngắn thời gian bác ạ.

Kiểu code này e search trên nhiều diễn đàn rồi mà lại phức tạp hơn mong muốn của em nên chẳng biết edit thế nào nên mới lên đây hỏi thêm các bác trợ giúp!!
 

File đính kèm

  • DATABASE.xlsx
    10.2 KB · Đọc: 6
  • SQL_kloud7 (thực hành).xlsm
    18.9 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Tại em lười, file làm việc khi e nhập liệu cũng cả ngàn dòng nữa nên ngồi edit lệnh vlookup hoặc copy-paste chay lâu quá, e muốn tạo lệnh riêng để rút ngắn thời gian bác ạ.

Kiểu code này e search trên nhiều diễn đàn rồi mà lại phức tạp hơn mong muốn của em nên chẳng biết edit thế nào nên mới lên đây hỏi thêm các bác trợ giúp!!
Vẫn là hướng dùng Vlookup nhưng mình nêu một ý tưởng khác tùy bạn. Nếu dữ liệu data như bạn nói khoảng 1000 dòng, thì bạn có thể nhờ code khi mở file thì lấy dữ liệu từ file đóng đó vào một sheet trên file đang sử dụng (hoặc có thể bấm nút chạy code lấy dữ liệu). Còn các sheet kia thì cứ để công thức vlookup theo dữ liệu vừa lấy về. Có vẻ trực quan hơn
 
Upvote 0
Em cảm ơn bác, em đã sửa tên file, đường dẫn và thực hành mà chưa được như sau ạ:

- Lệnh chạy rồi nhưng trả về giá trị 0 thôi bác
- Khi em copy lệnh đó paste sang ô excel khác thì đối tượng cần tìm là mã SD20, SD25 (gõ tay) ... bị nhảy thành SD22, SF34, SG ...

Em gửi cả 2 file (file thao tác làm việc và file data dữ liệu), bác xem giúp em với.

Em xin cảm ơn ạ!
Đâu có lỗi lầm gì đâu bạn. Bạn xem công thức tôi gõ tại G4 và H4: một theo chuỗi "SD20", một theo tham chiếu địa chỉ ô.
Tôi đã đổi đường dẫn trên máy tôi, bạn sửa lại đường dẫn rồi thử lại xem sao.
 

File đính kèm

  • SQL_kloud7 (thực hành).xlsm
    18.8 KB · Đọc: 15
Upvote 0
Đâu có lỗi lầm gì đâu bạn. Bạn xem công thức tôi gõ tại G4 và H4: một theo chuỗi "SD20", một theo tham chiếu địa chỉ ô.
Tôi đã đổi đường dẫn trên máy tôi, bạn sửa lại đường dẫn rồi thử lại xem sao.
Sr bác, em quên là phải khóa chuỗi. Em đã thực hành và ad vào addin thành công rồi, nhưng em có thắc mắc là khi gõ lệnh có/không có "@" thì nó ra cái như hình ảnh em gửi kèm (nhảy thêm 1 ô xuống bên dưới và có đường bao ô màu xanh - em cũng k biết mô tả kiểu gì), có cách nào không cần gõ "=@" được không bác.

Em xin cảm ơn ạ!
 

File đính kèm

  • 1.png
    1.png
    368.9 KB · Đọc: 18
  • 2.png
    2.png
    334.2 KB · Đọc: 18
Upvote 0
Vẫn là hướng dùng Vlookup nhưng mình nêu một ý tưởng khác tùy bạn. Nếu dữ liệu data như bạn nói khoảng 1000 dòng, thì bạn có thể nhờ code khi mở file thì lấy dữ liệu từ file đóng đó vào một sheet trên file đang sử dụng (hoặc có thể bấm nút chạy code lấy dữ liệu). Còn các sheet kia thì cứ để công thức vlookup theo dữ liệu vừa lấy về. Có vẻ trực quan hơn
Em cảm ơn bác! Do đặc thù công việc của em nên mỗi dự án tên hạng mục nó 1 kiểu (tên thì lại do người khác đặt T_T) mà bản chất nó vẫn là một hạng mục nên em phải gán mã thủ công ở cột phụ sau đó tìm kiếm và lấy giá trị cần tham chiếu từ data dữ liệu nên việc chạy tự động bấm nút như bác tư vấn lại không phù hợp, dạng auto này em nghĩ sẽ phù hợp với bên làm sản xuất hơn. Chưa kể, nhiều lúc cần lấy dữ liệu của một mã bất kỳ trong lúc làm việc mà phải vlookup từ 1 file chưa bật lên thì oải lắm ạ!
 
Upvote 0
nhiều lúc cần lấy dữ liệu của một mã bất kỳ trong lúc làm việc mà phải vlookup từ 1 file chưa bật lên thì oải lắm ạ!
Từ bài #7 bạn không đồng ý nên mình có nói tới việc vlookup từ file đóng nữa đâu. Mà mình đang nói là mỗi lần mở file lên thì tự động chạy code lấy dữ liệu từ file đóng đó vào một sheet data trên file đích. Công việc ở sheet kia là chỉ cần vlookup từ cái sheet vừa lấy dữ liệu đó thôi.
Mình nói cho rõ ý thêm thôi, xin dừng ở đây nhé!
 
Upvote 0
Sr bác, em quên là phải khóa chuỗi. Em đã thực hành và ad vào addin thành công rồi, nhưng em có thắc mắc là khi gõ lệnh có/không có "@" thì nó ra cái như hình ảnh em gửi kèm (nhảy thêm 1 ô xuống bên dưới và có đường bao ô màu xanh - em cũng k biết mô tả kiểu gì), có cách nào không cần gõ "=@" được không bác.

Em xin cảm ơn ạ!
Tại sao trong công thức lại có @ bạn?
 
Upvote 0
Bạn dùng hàm sau thay cho cái hàm cũ cùng tên:
Rich (BB code):
Function QueryByADODB(strSQL As String, strFullName As String)
Dim rs As Object, ADOcn As Object, arrTemp
    Set ADOcn = CreateObject("ADODB.Connection")
    ADOcn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No"""
    Set rs = ADOcn.Execute(strSQL)
    arrTemp = rs.GetRows
    ReDim arrRsl(1 To UBound(arrTemp, 2) + 2, 1 To UBound(arrTemp, 1) + 1)
        QueryByADODB = arrTemp(0, 0)
    Set rs = Nothing
End Function
 
Upvote 0
Bạn dùng hàm sau thay cho cái hàm cũ cùng tên:
Rich (BB code):
Function QueryByADODB(strSQL As String, strFullName As String)
Dim rs As Object, ADOcn As Object, arrTemp
    Set ADOcn = CreateObject("ADODB.Connection")
    ADOcn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No"""
    Set rs = ADOcn.Execute(strSQL)
    arrTemp = rs.GetRows
    ReDim arrRsl(1 To UBound(arrTemp, 2) + 2, 1 To UBound(arrTemp, 1) + 1)
        QueryByADODB = arrTemp(0, 0)
    Set rs = Nothing
End Function
Em xin chân thành cảm ơn bác @Maika8008, code bác cho em đã sử dụng được như mong muốn, trong quá trình sử dụng có phát sinh gì thêm em xin lại được xin bác trợ giúp ạ!!!!!
 
Upvote 0
Từ bài #7 bạn không đồng ý nên mình có nói tới việc vlookup từ file đóng nữa đâu. Mà mình đang nói là mỗi lần mở file lên thì tự động chạy code lấy dữ liệu từ file đóng đó vào một sheet data trên file đích. Công việc ở sheet kia là chỉ cần vlookup từ cái sheet vừa lấy dữ liệu đó thôi.
Mình nói cho rõ ý thêm thôi, xin dừng ở đây nhé!
Tôi vừa toan đánh cược với bạn 200,000: nếu thớt đổi ý theo bạn thì tôi thua. Nhưng bạn dừng ở đây thì thật đúng lức rồi.

Người hỏi ở đây (GPE) có hai đặc tính:
1. họ không xin ý kiến, chỉ xin giúp thực hiện ý định của mình. Và cách duy nhất để là người giúp cứ thực hiện. Khi người hỏi nhận ra ý định của mình không đưa đến mục tiêu cuối cùng thì họ mới chịu thay đổi. Nói cách khác, họ phải thực hiện xong ý định ban đầu rồi mới chịu nhìn xem ý định ấy nó thiếu sót hoặc điên rồ thế nào.
2. họ xin code từ a đến z cứ nằng nặc giữ ý định thiết kế tùm lum của mình. Thay vì tư duy theo lối thoả thuận giữa bên A và bên B: làm thế nào để ra kết quả tốt nhất; thì họ tư duy theo A chủ B tớ: B có bổn phận chìu theo mọi yêu cầu của A, không thắc mắc.
 
Upvote 0
Tôi vừa toan đánh cược với bạn 200,000: nếu thớt đổi ý theo bạn thì tôi thua. Nhưng bạn dừng ở đây thì thật đúng lức rồi.

Người hỏi ở đây (GPE) có hai đặc tính:
1. họ không xin ý kiến, chỉ xin giúp thực hiện ý định của mình. Và cách duy nhất để là người giúp cứ thực hiện. Khi người hỏi nhận ra ý định của mình không đưa đến mục tiêu cuối cùng thì họ mới chịu thay đổi. Nói cách khác, họ phải thực hiện xong ý định ban đầu rồi mới chịu nhìn xem ý định ấy nó thiếu sót hoặc điên rồ thế nào.
2. họ xin code từ a đến z cứ nằng nặc giữ ý định thiết kế tùm lum của mình. Thay vì tư duy theo lối thoả thuận giữa bên A và bên B: làm thế nào để ra kết quả tốt nhất; thì họ tư duy theo A chủ B tớ: B có bổn phận chìu theo mọi yêu cầu của A, không thắc mắc.
Vâng bác, họ là người hỏi thì họ có quyền yêu cầu code theo mong muốn của họ. Mình chỉ góp ý nếu thấy chấp nhận được thì giúp đỡ thôi. Em thì cẩn thận thích kiểu mắt thấy tai nghe mới làm, chứ lấy trực tiếp từ recordset mà em thấy ADO có khi trường dữ liiệu lẫn lộn số với chữ nó trả về rỗng. Nên em mới khuyên vậy thôi. Tùy bạn ấy mà bác
 
Upvote 0
Tôi vừa toan đánh cược với bạn 200,000: nếu thớt đổi ý theo bạn thì tôi thua. Nhưng bạn dừng ở đây thì thật đúng lức rồi.

Người hỏi ở đây (GPE) có hai đặc tính:
1. họ không xin ý kiến, chỉ xin giúp thực hiện ý định của mình. Và cách duy nhất để là người giúp cứ thực hiện. Khi người hỏi nhận ra ý định của mình không đưa đến mục tiêu cuối cùng thì họ mới chịu thay đổi. Nói cách khác, họ phải thực hiện xong ý định ban đầu rồi mới chịu nhìn xem ý định ấy nó thiếu sót hoặc điên rồ thế nào.
2. họ xin code từ a đến z cứ nằng nặc giữ ý định thiết kế tùm lum của mình. Thay vì tư duy theo lối thoả thuận giữa bên A và bên B: làm thế nào để ra kết quả tốt nhất; thì họ tư duy theo A chủ B tớ: B có bổn phận chìu theo mọi yêu cầu của A, không thắc mắc.
Cảm ơn hai bác @VetMini@Nhattanktnn đã theo dõi và có ý kiến. Cá nhân em thì cũng đã hết sức cân nhắc trước khi lên nhờ trợ giúp là làm sao phải đưa ra nội dung nó đơn giản, dễ hiểu, dễ thực hiện và chính xác với mục đích của mình. Bác @Nhattanktnn tư vấn cũng có cái lý của bác ấy, nhưng theo đánh giá của em là sẽ phức tạp và cầu toàn hơn yêu cầu ban đầu của em. Như thế thì đầu bài đưa ra ban đầu nếu đúng như tính chất công việc em làm nó phải dài dòng, loằng ngoằng hơn nữa, trong khi em lại chỉ muốn giải quyết 1 khâu nhỏ, tiết kiệm khá nhiều thời gian, công sức lv cũng là tốt với em lắm rồi.
 
Upvote 0
Từ bài #7 bạn không đồng ý nên mình có nói tới việc vlookup từ file đóng nữa đâu. Mà mình đang nói là mỗi lần mở file lên thì tự động chạy code lấy dữ liệu từ file đóng đó vào một sheet data trên file đích. Công việc ở sheet kia là chỉ cần vlookup từ cái sheet vừa lấy dữ liệu đó thôi.
Mình nói cho rõ ý thêm thôi, xin dừng ở đây nhé!
bác ơi em cũng vlookup từ file nguồn như bác nhưng phải bật cùng lúc file nguồn và file tham chiếu, giờ em muốn dùng vlookup từ file nguồn đó nhưng ko cần bật nó lên thì làm thế nào vậy bác
 
Upvote 0
bác ơi em cũng vlookup từ file nguồn như bác nhưng phải bật cùng lúc file nguồn và file tham chiếu, giờ em muốn dùng vlookup từ file nguồn đó nhưng ko cần bật nó lên thì làm thế nào vậy bác
Không cần bật bằng tay thì phải nhờ VBA làm thay. Vậy đó.
 
Upvote 0
Web KT
Back
Top Bottom