Chuyển hàm vlookup thành code (2 người xem)

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

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

komono

Thành viên hoạt động
Tham gia
3/10/13
Bài viết
104
Được thích
3
rất mong các anh chị giúp giùm để em út dc học hỏi -\\/.
 

File đính kèm

rất mong các anh chị giúp giùm để em út dc học hỏi -\\/.
Nó là thế này:
[GPECODE=vb]Sub Test()
Dim Cll As Range
For Each Cll In Sheet1.[A2:A1000].SpecialCells(2)
Cll.Offset(, 1) = WorksheetFunction.VLookup(Cll, Sheet1.[I11:J15], 2, 0)
Cll.Offset(, 2) = WorksheetFunction.VLookup(Cll, Sheet2.[C10:D14], 2, 0)
Next
End Sub[/GPECODE]
 
Upvote 0
Chuyển ham thành code là như thế nào? Bạn muốn dùng lập trình thấy dùng hàm vlookup.
Vậy tác động trả kết quả được thực hiện như thế nào? Thêm một nút bấm để "yêu cầu" trả kết quả?

Nếu liên quan đến việc lập trình sao bạn lại đăng bài trong chuyên mục công thức và hàm?
 
Upvote 0
chỉ cách sử dụng luôn dc ko anh
vì chép code xong nó báo ?name
làm vô file giùm em luôn đi anh
 
Upvote 0
chỉ cách sử dụng luôn dc ko anh
vì chép code xong nó báo ?name
làm vô file giùm em luôn đi anh
Báo lỗi #NAME? ---> Có nghĩa là bạn có ý định dùng code như 1 hàm tự tạo, gõ trên bảng tính để ra kết quả?
Vậy sao không dùng VLOOKUP luôn? Đằng nào thì cũng là gõ =gì gì đó(....)
Khó hiểu thật
 
Upvote 0
dạ tại em muốn học vậy thôi mà
 
Upvote 0
dạ tại em muốn học vậy thôi mà

Học gì thì cũng cho ví dụ có tính ứng dụng chứ. Ai lại rảnh đi viết 1 code để.. chơi chơi mà chẳng ứng dụng được gì chứ
Người ta chỉ viết code VBA khi:
- Không tìm thấy hàm có sẵn nào đáp ứng được nhu cầu cá nhân
- Sợ rằng với dữ liệu lớn (vài chục ngàn dòng) thì file sẽ chậm nếu dùng hàm có sẵn
- vân vân...
===> Vậy trường hợp cùa bạn là cái nào? Điều gì khiến bạn nghĩ đến phải dùng code VBA?
 
Lần chỉnh sửa cuối:
Upvote 0
công thức đó em cần đến 10.000 dòng
em đang tìm hiểu học code từ con số 0 nên chưa biết gì hết
học mấy cái dể trước để biết thế nào là code
rất mong dc học hỏi
 
Upvote 0
chỉ cách sử dụng luôn dc ko anh
vì chép code xong nó báo ?name
làm vô file giùm em luôn đi anh
Code trên là Sub chứ có phải là Function đâu mà báo lỗi #NAME nhỉ? Bạn chỉ cần copy code trên và dán vào Module, sau đó F5 là nó chạy chứ có phải gõ gì lên sheet đâu.
Nếu sử dụng hàm thì nên dùng hàm VLOOKUP luôn cho khỏe, còn nếu không muốn có công thức trên sheet thì sử dụng Sub như trên. Nhưng dù sao thì cái này cũng thuộc về box Lập trình với Excel chứ nhỉ?!
 
Upvote 0
công thức đó em cần đến 10.000 dòng
Vậy thì dùng VBA là đúng. Bài toán này đã có trên diễn đàn từ lâu rồi

em đang tìm hiểu học code từ con số 0 nên chưa biết gì hết
học mấy cái dể trước để biết thế nào là code
rất mong dc học hỏi
Bài toán này nếu viết cho đàng hoàng thì không phải là dễ nha (nếu không nói là KHÓ)
Vậy:
- Nếu bạn chỉ muốn HỌC thì mời vào đây học từ đầu:
http://www.giaiphapexcel.com/forum/showthread.php?6354-Giới-thiệu-Cơ-bản-về-vòng-lặp-For-next
- Nếu bạn chỉ muốn GIẢI QUYẾT BÀI TOÁN (không cần học) thì đó lại là chuyện khác ---> Đưa file thật của bạn lên đây sẽ có người "xử" giúp
Vậy đi nha
 
Upvote 0
vậy viêrt thêm lệnh gì để mỗi lần nhập vào cột a nó tự chạy code trên
 
Upvote 0
Bạn tham khảo macro sau

Bạn xem file !!??:=\+ :=\+ :=\+ )(&&@@ )(&&@@ )(&&@@/-*+/
 

File đính kèm

Upvote 0
Em có File này giống bạn hỏi komono.
Nhờ các anh chị viết giùm em Code với. File của em chạy khoảng 40000 dòng.
 
Upvote 0
Em gửi lại File nhờ anh chị viết giúp code.

40K dòng thì dùng cái này đi

Biến công thức Vlookup thành giá trị hết, chỉ để dòng đầu bảng (2) và dòng cuối là còn công thức (phục vụ việc copy kéo tiếp hay kéo lại công thức) , sẽ làm nhẹ file, tính toán nhanh

(lưu ý vì biến thành giá trị, nên khi thay đổi nguồn dữ liệu thì phải kéo tính toán lại, vì khi này công giá trị không động nữa)


PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rG As Range
        Set rG = Intersect(Target, [K2:L65000])
        
        If Not rG Is Nothing Then
            On Error GoTo 1111
            Application.EnableEvents = False
            Application.ScreenUpdating = False
            
            Call ChuyenGiaTri(rG)
            
1111:       Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
End Sub
 

File đính kèm

Upvote 0
40K dòng thì dùng cái này đi

Biến công thức Vlookup thành giá trị hết, chỉ để dòng đầu bảng (2) và dòng cuối là còn công thức (phục vụ việc copy kéo tiếp hay kéo lại công thức) , sẽ làm nhẹ file, tính toán nhanh

(lưu ý vì biến thành giá trị, nên khi thay đổi nguồn dữ liệu thì phải kéo tính toán lại, vì khi này công giá trị không động nữa)


PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rG As Range
        Set rG = Intersect(Target, [K2:L65000])
        
        If Not rG Is Nothing Then
            On Error GoTo 1111
            Application.EnableEvents = False
            Application.ScreenUpdating = False
            
            Call ChuyenGiaTri(rG)
            
1111:       Application.EnableEvents = True
            Application.ScreenUpdating = True
        End If
End Sub
[/QUOTE
Dữ lieu trong cột CUtting Lot là dữ lieu động anh ah. Nên nếu chuyển thành giá trị sẽ bị sai khi update số lieu.
Anh viet lai giup e voi
 
Upvote 0
Dữ lieu trong cột CUtting Lot là dữ lieu động anh ah. Nên nếu chuyển thành giá trị sẽ bị sai khi update số lieu.
Anh viet lai giup e voi
Khi nào thì Update số liệu?
Nếu muốn" update dữ liệu khi bấm vào "cái gì đó" thì xem file này.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh giải thích giúp e đoạn code đó được không,e mới tập nên chưa hiểu.
 
Upvote 0
Muốn update dùng cái này

Luôn động hóa, kể cả thay ở she et nguồn coatcut coatroll hay
Chỉ dữ lại 2 dòng công thức đầu và cuối

Xem kỹ code ở module, ở các module sheetcode

Vẫn file cũ của bạn nhé (vì cho nhẹ nhàng dung lượng), bạn tự bổ sung dữ liệu
 

File đính kèm

Upvote 0
Muốn update dùng cái này

Luôn động hóa, kể cả thay ở she et nguồn coatcut coatroll hay
Chỉ dữ lại 2 dòng công thức đầu và cuối

Xem kỹ code ở module, ở các module sheetcode

Vẫn file cũ của bạn nhé (vì cho nhẹ nhàng dung lượng), bạn tự bổ sung dữ liệu

Khi em chèn thêm cột trong sheet page 1 công thức và code sẽ bị sai phải không ah
 
Upvote 0
Xem file data mới của bạn thì dữ liệu nhiều quá, thế thì chỉ có áp dụng SQL là tốt nhất (nếu bạn biết về SQL thì có thể hiểu và sửa đơn giản)

hãy dùng file chương trình chia sẻ: Chia sẻ file tổng hợp dữ liệu bằng ADO

với chuỗi lệnh SQL là

PHP:
SELECT DISTINCT   PC.ID, PC.CUTTING_LOT01, PC.COATING_LOT,    R.ROLL_NO FROM
(SELECT  DISTINCT P.ID, P.CUTTING_LOT01, C.COATING_LOT FROM [Page1$A1:H65536] AS P 
LEFT JOIN [Coatcut$A1:D65536] as C 
ON  P.CUTTING_LOT01= C.CUTTING_LOT 
WHERE  P.CUTTING_LOT01<>NULL) AS PC
LEFT JOIN [CoatRoll$A1:D65536] AS R
ON  PC.COATING_LOT=R.COATING_LOT

Trong đó bổ sung thêm cột ID vào cột A của sheet page1 chính là thứ tự 1, 2, 3,4....
 
Upvote 0
Em chưa biết về SQL => sẽ tìm hiểu thêm. có gì em nhờ anh giúp đỡ ah. thanks anh nhiều.
 
Upvote 0
Xem file data mới của bạn thì dữ liệu nhiều quá, thế thì chỉ có áp dụng SQL là tốt nhất (nếu bạn biết về SQL thì có thể hiểu và sửa đơn giản)

hãy dùng file chương trình chia sẻ: Chia sẻ file tổng hợp dữ liệu bằng ADO

với chuỗi lệnh SQL là

PHP:
SELECT DISTINCT   PC.ID, PC.CUTTING_LOT01, PC.COATING_LOT,    R.ROLL_NO FROM
(SELECT  DISTINCT P.ID, P.CUTTING_LOT01, C.COATING_LOT FROM [Page1$A1:H65536] AS P 
LEFT JOIN [Coatcut$A1:D65536] as C 
ON  P.CUTTING_LOT01= C.CUTTING_LOT 
WHERE  P.CUTTING_LOT01<>NULL) AS PC
LEFT JOIN [CoatRoll$A1:D65536] AS R
ON  PC.COATING_LOT=R.COATING_LOT

Trong đó bổ sung thêm cột ID vào cột A của sheet page1 chính là thứ tự 1, 2, 3,4....

Anh có thể làm giúp em với không. Em làm mãi mà toàn báo lỗi thôi ah.
 
Upvote 0
Em chạy báo lỗi như thế này ah.
 
Lần chỉnh sửa cuối:
Upvote 0
bạn phải làm theo từng bước này

- file áp dụng là file bạn gửi lên hôm qua ở http://www.megafileupload.com đó

- Bổ sung vào page1
tại ô A1 là chữ: ID
các ô tiếp theo là :1, 2 , 3..... vv thứ tự bạn nhập được đúng không ?
Save file data đó lại, đóng luôn file rùi bấm chạy chương trình (Form)... tiếp tục các bước dưới
- chạy thì phải để mặc định 2 cái chọn trên
In other...file
Having header....

- copy SQL trên vào

- Bấm RUN, sẽ xuất hiện họp chọn file, chọn file data đó của ban

Là có kết quả ở file mới như ý
 
Upvote 0
bạn phải làm theo từng bước này

- file áp dụng là file bạn gửi lên hôm qua ở http://www.megafileupload.com đó

- Bổ sung vào page1
tại ô A1 là chữ: ID
các ô tiếp theo là :1, 2 , 3..... vv thứ tự bạn nhập được đúng không ?
Save file data đó lại, đóng luôn file rùi bấm chạy chương trình (Form)... tiếp tục các bước dưới
- chạy thì phải để mặc định 2 cái chọn trên
In other...file
Having header....

- copy SQL trên vào

- Bấm RUN, sẽ xuất hiện họp chọn file, chọn file data đó của ban

Là có kết quả ở file mới như ý
Em làm được rồi. nhưng lại tạo dữ liệu ra 1 file mới.
Có cách nào để chuyển dữ liệu đến vùng mà mình đặt sẵn không anh.
Nếu như sheet CoatCut, CoatRol ở File khác thì có lấy được dữ liệu không ah.
 
Lần chỉnh sửa cuối:
Upvote 0
Em làm được rồi. nhưng lại tạo dữ liệu ra 1 file mới.
Có cách nào để chuyển dữ liệu đến vùng mà mình đặt sẵn không anh.
Nếu như sheet CoatCut, CoatRol ở File khác thì có lấy được dữ liệu không ah.

vùng đặt sẵn thì bạn đọc ở hướng dẫn bài này
- Mục Select Cell Fill Result : Cho phép anh đặt kết quả lọc tại ô được chỉ định của Workbook hiện hành, nếu bỏ qua nó sẽ bắt đầu từ A2 của Worbook mới.

Được ở file khác cũng được, vấn đề bạn thay đổi SQL hợp lý, thì bạn thấy nó đặt ở file mới, liên quan file cũ của bạn đâu. SQL thì cũng theo bài trên nó ở đây http://www.w3schools.com/sql/default.asp
 
Upvote 0
vùng đặt sẵn thì bạn đọc ở hướng dẫn bài này


Được ở file khác cũng được, vấn đề bạn thay đổi SQL hợp lý, thì bạn thấy nó đặt ở file mới, liên quan file cũ của bạn đâu. SQL thì cũng theo bài trên nó ở đây http://www.w3schools.com/sql/default.asp

Em chọn vùng để đặt giữ liệu tronng Select Cell Fill Resul. Nhưng không được anh ah toàn bị lỗi thôi
 
Upvote 0
Em chọn vùng để đặt giữ liệu tronng Select Cell Fill Resul. Nhưng không được anh ah toàn bị lỗi thôi

Lỗi thế nào,
Có phải đặt tại file đó không, khi đó không phải gom dữ liệu từ file khác rui mà ở chính workbook đó thì đọc lại ngay câu đầu của bài #6 ở bài hướng dẫn link đó ở hướng dẫn bài này

bạn đọc kỹ đi, hãy đọc và thực hiện đã.
 
Upvote 0
Upvote 0

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

Back
Top Bottom