quyenpv
Thu nhặt kiến thức
- Tham gia
- 5/1/13
- Bài viết
- 719
- Được thích
- 97
- Giới tính
- Nam
- Nghề nghiệp
- Decode cuộc đời!
Hiện em đang dùng 2 Sheet "TEMP" và "Input_TBi" để lấy thông tin vật tư sau khi import vào từ phiếu xuất kho.
Em xin mô tả chi tiết cái em đang làm như sau ạ:
1. Sheet "Input_TBi" chứa thông tin mã vật tư, tên vật tư có sẵn (Cái này có thể thêm mã mới khi cần bổ sung)
2. Sheet "TEMP" em dùng để import các phiếu xuất kho lấy thông tin vào tạm tại Sheet này
Đối với 1 vật tư có thể xuất hiện nhiều lần trong 1 phiếu hoặc trong nhiều phiếu thì sẽ tương ứng với mã vật tư và lần xuất, đơn giá, thông tin phiếu xuất tại Sheet "Input_TB"
* Tại Sheet TEMP
*Tại Sheet Input_TB
Em đang dùng Name động
Sau đó tại Sheet "Input_TBi" lấy theo mã vật tư bằng công thức Index như sau
Từ cột H17:S17 em dùng công thức để lấy khối lượng
Từ cột T17:AE17 em dùng công thức để lấy đơn giá
Từ cột AH17:AS17 em dùng công thức để lấy thông tin phiếu xuất kho
Mong muốn:
Do số dòng nhiều và thay đổi, số lượng công thức kéo trải dài dẫn đến việc cập nhật số liệu hay bị treo và đứng máy. Em nhờ anh chị code chuyển giúp em từ công thức sang code vba để giảm bớt và tránh treo máy khi đang làm với ạ
Cám ơn anh chị nhiều!
Em xin mô tả chi tiết cái em đang làm như sau ạ:
1. Sheet "Input_TBi" chứa thông tin mã vật tư, tên vật tư có sẵn (Cái này có thể thêm mã mới khi cần bổ sung)
2. Sheet "TEMP" em dùng để import các phiếu xuất kho lấy thông tin vào tạm tại Sheet này
Đối với 1 vật tư có thể xuất hiện nhiều lần trong 1 phiếu hoặc trong nhiều phiếu thì sẽ tương ứng với mã vật tư và lần xuất, đơn giá, thông tin phiếu xuất tại Sheet "Input_TB"
* Tại Sheet TEMP
*Tại Sheet Input_TB
Em đang dùng Name động
Mã:
Data=OFFSET(TEMP!$B$4;;;COUNTA(TEMP!$B$4:$B$1048576);9)
Loc=IF(OFFSET(DATA;;;;1)=Input_TBi!$C280;ROW(INDIRECT("1:" & ROWS(DATA)));"")
Sau đó tại Sheet "Input_TBi" lấy theo mã vật tư bằng công thức Index như sau
Từ cột H17:S17 em dùng công thức để lấy khối lượng
Mã:
=IFERROR(@INDEX(DATA;SMALL(LOC;COLUMN(A1));5);0)
Mã:
=IFERROR(@INDEX(DATA;SMALL(LOC;COLUMN(A1));7);0)
Mã:
=IFERROR(INDEX($AX$1:$AX$50;MATCH(@INDEX(DATA;SMALL(LOC;COLUMN(A1));9);$AY$1:$AY$50;0));"")
Mong muốn:
Do số dòng nhiều và thay đổi, số lượng công thức kéo trải dài dẫn đến việc cập nhật số liệu hay bị treo và đứng máy. Em nhờ anh chị code chuyển giúp em từ công thức sang code vba để giảm bớt và tránh treo máy khi đang làm với ạ
Cám ơn anh chị nhiều!
File đính kèm
Lần chỉnh sửa cuối: