Code Function kết hợp giữa VLOOKUP và vùng dữ liệu không đầy đủ.

Liên hệ QC

tuanhuycntt

Thành viên chính thức
Tham gia
5/7/15
Bài viết
65
Được thích
5
Hiện em có 1 bài như trong file đính kèm. (đây chỉ là bài mô tả lại file dữ liệu của e)
E vẫn chưa nghĩ ra được code FUNCTION nào để kết hợp giữa hàm VLOOKUP tham chiếu tên SP (màu vàng) và tự điền vào vùng dữ liệu số dãy (màu xanh) trong Sheet1 khi trong Sheet DATA chỉ có trị số [dãy đầu] và [dãy cuối].

Các anh chị GPE gợi ý giúp em code với ạ.

Em xin cảm ơn
 

File đính kèm

  • BC.xlsx
    10.5 KB · Đọc: 10
Lần chỉnh sửa cuối:
Sorry các bác :D tại e viết vội quá nên cuống. E sửa lại rồi ạ. Cũng hơi khó để diễn tả ý các bác thông cảm giúp ạ
 
Upvote 0
Hiện em có 1 bài như trong file đính kèm. (đây chỉ là bài mô tả lại file dữ liệu của e)
E vẫn chưa nghĩ ra được code FUNCTION nào để kết hợp giữa hàm VLOOKUP tham chiếu tên SP (màu vàng) và tự điền vào vùng dữ liệu "số dãy" khi trong Sheet DATA chỉ có trị số [dãy đầu] và [dãy cuối].

Các anh chị GPE gợi ý giúp em code với ạ.

Em xin cảm ơn
Bạn xem file.
Viết câu văn ngắn gọn mà đầy đủ quả là không dễ.
Đừng chen tiếng Tây trong "từ ngữ giao tiếp" tiếng Việt, tôi gởi bài rồi mới đọc thấy bài này, nếu thấy trước tôi sẽ không tham gia trả lời đâu.
 

File đính kèm

  • BC (2).xlsm
    18.8 KB · Đọc: 17
Upvote 0
Bạn xem file.
Viết câu văn ngắn gọn mà đầy đủ quả là không dễ.

Đừng chen tiếng Tây trong "từ ngữ giao tiếp" tiếng Việt, tôi gởi bài rồi mới đọc thấy bài này, nếu thấy trước tôi sẽ không tham gia trả lời đâu.
Quả thực là code ngắn và hiệu quả thì khó thật, nhưng công nhận code bác bá đạo quá, rất dễ hiểu. :D. Còn đoạn function em chưa hiểu lắm công dụng của row($1:1). Bác giải thích giúp e với ạ. Đúng là nhờ code Row($1:1) mà giải quyết được đúng việc e cần :D

Ps: Vì Range bên sheet DATA cố định nên e bỏ luôn khai báo trong public function cho đỡ rối code. :)
 
Lần chỉnh sửa cuối:
Upvote 0
Quả thực là code ngắn và hiệu quả thì khó thật, nhưng công nhận code bác bá đạo quá, rất dễ hiểu. :D. Còn đoạn function em chưa hiểu lắm công dụng của row($1:1). Bác giải thích giúp e với ạ. Đúng là nhờ code Row($1:1) mà giải quyết được đúng việc e cần :D

Ps: Vì Range bên sheet DATA cố định nên e bỏ luôn khai báo trong public function cho đỡ rối code. :)
Bạn đọc hiểu VBA là tốt rồi.
Có điều không phải:
code ngắn và hiệu quả thì khó thật
Mà tôi muốn nói bạn viết câu văn nêu yêu cầu và kết quả muốn có (quá luộm thuộm)chứ không phải là chuyện viết code, Có thể người khác viết code ngắn gọn hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Em có Viết code này, theo em nghĩ thì nó đã OK rồi, tuy nhiên sao nó báo lỗi ReF , thầy @Ba Tê xem giúp em nhé
Mã:
Function GPE2(Rng As Range, SP As String, Num As Long)
    Dim frng As Range
    Set frng = Rng.Resize(, 1).Find(SP, , xlValues, xlWhole, , , True)(, 2)
    GPE2 = IIf(frng > Num Or frng(, 2) < Num, Space(0), frng + Num - 1)
    Set frng = Nothing
End Function
 
Upvote 0
Em có Viết code này, theo em nghĩ thì nó đã OK rồi, tuy nhiên sao nó báo lỗi ReF , thầy @Ba Tê xem giúp em nhé
Mã:
Function GPE2(Rng As Range, SP As String, Num As Long)
    Dim frng As Range
    Set frng = Rng.Resize(, 1).Find(SP, , xlValues, xlWhole, , , True)(, 2)
    GPE2 = IIf(frng > Num Or frng(, 2) < Num, Space(0), frng + Num - 1)
    Set frng = Nothing
End Function

Thì cố suy nghĩ và thử nghiệm hết 100 giả thuyết thử xem

... hãy thử tưởng tượng nếu 1 cái gì đó ta không biết, ta sẽ đưa ra cho nó 1 đóng giả thuyết về tác dụng của nó ( giả sử số giả thuyết là 100) bạn thử nghiệm hết 100 giả thuyết đó thì khi phát hiện ra quy luật của nó thì cảm giác vui ko tả được, ...
(http://www.giaiphapexcel.com/diendan/threads/các-câu-lệnh-vba-đơn-giản.97524/page-2)
 
Upvote 0
dạ cám ơn thầy đã góp ý, nhưng thầy trích dẫn chưa hết nội dung ạ
Nếu đã tự học thì hãy xác định sẵn trong đầu là hãy chuẩn bị 1 ý chí sắt đá, nếu con đường được người khác dọn thì khi đi bạn sẽ không có được cái cảm giác thỏa mãn, hãy thử tưởng tượng nếu 1 cái gì đó ta không biết, ta sẽ đưa ra cho nó 1 đóng giả thuyết về tác dụng của nó ( giả sử số giả thuyết là 100) bạn thử nghiệm hết 100 giả thuyết đó thì khi phát hiện ra quy luật của nó thì cảm giác vui ko tả được, nếu tự học hãy xem thầy Nguyễn Anh Tuấn là một tấm gương mà học tập nhé. thắc mắc cái gì thì lên mạng search, search được cái gì thì quăng vô VBE chạy, chạy lỗi dò hoài không hiểu, quăng lên GPE (đây là phương pháp học từ ngọn tới gốc , cực kì thích hợp cho người mới học VBA, còn pp học từ gốc đến ngọn thì trong diễn đàn theo mình biết có anh Nguyễn Duy Tuân)
 
Upvote 0
Code trên do đặt tên trùng với địa chỉ nên lỗi.
Mã:
Function Tlookup(Rng As Range, SP As String, Num As Long)
    Dim frng As Range
    Set frng = Rng.Resize(, 1).Find(SP, , xlValues, xlWhole, , , True)(, 2)
    Tlookup = IIf(Num < 1 Or frng(, 2) + 1 < frng + Num, Space(0), frng + Num - 1)
    Set frng = Nothing
End Function
 

File đính kèm

  • BC (2).xlsm
    22.1 KB · Đọc: 14
Upvote 0
Đôi ba thì nói là đôi ba. Nói thành con số 100 là do cái tật khoác lác.
 
Upvote 0
Web KT
Back
Top Bottom