Nhập xuất tồn kho (2 kho) (1 người xem)

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

Duong gia

Thành viên thường trực
Tham gia
15/1/07
Bài viết
352
Được thích
118
Chào các bạn mong các bạn trợ giúp, mình có 1 file gồm 3 sheets: - Sheet PHATSINH chứa các số liệu nhập - xuất kho - Sheet KHO A là để báo cáo nhập xuất tồn của kho A - Sheet KHO A là để báo cáo nhập xuất tồn của kho B Cả hai kho này đều dựa vào CSDL của sheet PHATSINH để lọc lấy số liệu. Mong các bạn giúp đỡ. Thanks +-+-+-+
 
Lần chỉnh sửa cuối:
Chào các bạn mong các bạn trợ giúp, mình có 1 file gồm 3 sheets:
- Sheet PHATSINH chứa các số liệu nhập - xuất kho
- Sheet KHO A là để báo cáo nhập xuất tồn của kho A
- Sheet KHO A là để báo cáo nhập xuất tồn của kho B
Cả hai kho này đều dựa vào CSDL của sheet PHATSINH để lọc lấy số liệu.
Mong các bạn giúp đỡ. Thanks +-+-+-+
1/ Cơ sở nào có số tồn đầu ngày 01/01
2/ Số TT sh Phátinh có nghĩa là gì
3/ Sh Phatsinh kg có dòng MaHH
4/ Phần đơn giá trong BC NXT là đơn giá BQ?
Bạn muốn dùng VBA hay Ct.
 
1/ Cơ sở nào có số tồn đầu ngày 01/01 2/ Số TT sh Phátinh có nghĩa là gì 3/ Sh Phatsinh kg có dòng MaHH 4/ Phần đơn giá trong BC NXT là đơn giá BQ? Bạn muốn dùng VBA hay Ct.
Cám ơn bác, 1/ Tồn đầu kỳ 01/01 là dựa vào báo cáo NXT cuối năm trước, mình copy sang 2/ Số tiền Phatsinh là giá vốn mình mua vào hoặc bán ra 3/ Mã HH là 156101 ... 4/ Chính xác. đơn giá trong BC NXT là giá BQ Mình rất thích dùng VBA, nhưng đối với BC NXT thì thích dùng CT hơn cho dễ hiểu. Thanks
 
Lần chỉnh sửa cuối:
Cám ơn bác, 1/ Tồn đầu kỳ 01/01 là dựa vào báo cáo NXT cuối năm trước, mình copy sang 2/ Số tiền Phatsinh là giá vốn mình mua vào hoặc bán ra 3/ Mã HH là 156101 ... 4/ Chính xác. đơn giá trong BC NXT là giá BQ Mình rất thích dùng VBA, nhưng đối với BC NXT thì thích dùng CT hơn cho dễ hiểu. Thanks
Bác ThuNghi chạy đâu mất rồi, giúp với. Chắc chạy rồi!
 
Lần chỉnh sửa cuối:
Cám ơn bác,
1/ Tồn đầu kỳ 01/01 là dựa vào báo cáo NXT cuối năm trước, mình copy sang
2/ Số tiền Phatsinh là giá vốn mình mua vào hoặc bán ra
3/ Mã HH là 156101 ...
4/ Chính xác. đơn giá trong BC NXT là giá BQ
Mình rất thích dùng VBA, nhưng đối với BC NXT thì thích dùng CT hơn cho dễ hiểu. Thanks
Thú thật dùng công cho file này thì dùng sumproduct hay là sumif có thêm cột phụ hay là sumifs với ex 2007, nhưng tất cả đều chạy chậm. Và lâu rồi nên cũng quên ct, dùng VBA mà lấy số tồn từ ngày -> ngày còn muốn mệt nữa.
Nếu OK VBA thì mình sẽ làm.
 
Thú thật dùng công cho file này thì dùng sumproduct hay là sumif có thêm cột phụ hay là sumifs với ex 2007, nhưng tất cả đều chạy chậm. Và lâu rồi nên cũng quên ct, dùng VBA mà lấy số tồn từ ngày -> ngày còn muốn mệt nữa. Nếu OK VBA thì mình sẽ làm.
Ok. Bác làm giúp. Thanks
 
Lần chỉnh sửa cuối:
Có tạo thêm 1 sh TonDau của 01/01/2011. Bạn xem file, có gì sẽ làm tiếp.
Cám ơn bác. Khi xuất chuyển hàng từ kho A --> kho B: VD N156101 C156101 với Slg là 5 chẳng hạn; cột KHO có ký hiệu là B/A và ngược lại xuất chuyển hàng từ kho B --> kho A cột KHO có ký hiệu là B/A thì làm sao hả bác, giúp với. Nhìn rừng code thấy sợ quá!
 
Lần chỉnh sửa cuối:
Cám ơn bác. Khi xuất chuyển hàng từ kho A --> kho B: VD N156101 C156101 với Slg là 5 chẳng hạn; cột KHO có ký hiệu là B/A và ngược lại xuất chuyển hàng từ kho B --> kho A cột KHO có ký hiệu là B/A thì làm sao hả bác, giúp với. Nhìn rừng code thấy sợ quá!
Chuyện nhỏ mà, trước mắt làm 2 phiếu, PN và PX và nghiên cứu code đã.
Gợi ý:
1/ Phiểu chuyển kho: PC
2/ Mã Kho: A/B hay B/A
Duyệt qua nếu thấy SoCT=PC
Xem MaKho có ký tự "/"
Xem Kho nào xuất và kho nào nhập.
Cập nhật 2 lần là OK.
 
mình có file NXT Kho như file đính kèm, nhờ ACE giúp viết Code như yêu cầu ghi trong file
rất cần...mong giúp đỡ
 

File đính kèm

mình có file NXT Kho như file đính kèm, nhờ ACE giúp viết Code như yêu cầu ghi trong file
rất cần...mong giúp đỡ
Theo tôi bạn nên tổ chức file như sau:
1/ Sh Nhap như trên
2/ Sh Xuat và thêm 1 cột để ghi XH1, XH2...
Mà nếu 3 ký tự đầu của soCT xuat như là 71A hay 45A có nghĩa là XHn thì khỏi cần.
3/ Sh NXT là báo cáo tình hình NXT của từng XH ...
Bạn thiết kế lại như trên, tôi sẽ viết code.
 
mình có file NXT Kho như file đính kèm, nhờ ACE giúp viết Code như yêu cầu ghi trong file
rất cần...mong giúp đỡ
Thấy báo cáo của bạn cũng hơi lạ, chưa nắm hết, hình như tao BC NXT theo số PN và tên hàng.
Bạn xem qua file thử xem có OK. Hơi phức tạp chút.
 

File đính kèm

Chào ThuNghi mình đã dơn và xem file mẫu của bạn hướng dẫn, file chạy rất đúng ý và rất tốt cảm ơn bạn nhiều, mình sẽ nghiên cứu cách làm của bạn và phát triển thêm theo mục đích của công việc vì cách nhập-xuất hàng của Cty mình phức tạp lắm Sau này có gi thắc mắc, mình xin liên hệ với bạn để xin sự hướng dẫn nhé Chào tạm biệt........ Thank very much
 
Chào ThuNghi và ACE ....
mình có nghiên cứu Code của bạn trong file QuanLyKho_TN.xls và chèn thêm một số cột cho đúng theo mẫu theo dỏi NXT kho của Cty
Nhưng vì kiến thức VBA còn non kém nên cố gắng chỉnh lại Code trong file nhưng nó chạy tùm lum
Đành gửi file lên 4Rum nhờ ThuNghi và các ACE trên diễn đàn giúp đỡ
 
Tự động chèn Row trong file NXT Kho

Chào ThuNghi và ACE ....
mình có nghiên cứu Code của bạn trong file QuanLyKho_TN.xls và chèn thêm một số cột cho đúng theo mẫu theo dỏi NXT kho của Cty
Nhưng vì kiến thức VBA còn non kém nên cố gắng chỉnh lại Code trong file nhưng nó chạy tùm lum
Đành gửi file lên 4Rum nhờ ThuNghi và các ACE trên diễn đàn giúp đỡ
 

File đính kèm

Lần chỉnh sửa cuối:
Sao hôm nay mình không up file lên được ???

mình đã up lên được rồi
file cần giúp đỡ ở bài #15 phía trên đó
yêu cầu co8 ghi trong sheet "NXT"

xin ACE giúp cho nhé.....
 
Lần chỉnh sửa cuối:
gởi bạn

bạn thử xem fiel này được không
 
Chào bạn hophoang...
Mình chưa thấy file nào cả...
where???
 
Chào ThuNghi và ACE ....
mình có nghiên cứu Code của bạn trong file QuanLyKho_TN.xls và chèn thêm một số cột cho đúng theo mẫu theo dỏi NXT kho của Cty
Nhưng vì kiến thức VBA còn non kém nên cố gắng chỉnh lại Code trong file nhưng nó chạy tùm lum
Đành gửi file lên 4Rum nhờ ThuNghi và các ACE trên diễn đàn giúp đỡ
Bạn thêm khoảng 10 cột nên code sẽ chạy sai thôi.
Sao lúc đầu kg nói là Mahh mà lại dùng tên HH. Vậy với Mahh 8720400042968 sau là duy nhất có tên là Henri Wintermans Corona De Luxe 2 20x10x2 hay mahh trên có những tên khác.
Tóm lại là sẽ làm NXT theo MaHH và theo SoCTN?
Để tôi sẽ làm lại.
File này dùng Font gì lạ quá "Alice0 Lao" là của lào?
 
Lần chỉnh sửa cuối:
Mỗi mặt hàng là 1 mã, không thể trùng tên được
Vâng NXT sẽ dựa theo Số Chứng từ 70, mã hảng hoặc tên hàng cũng vậy

tôi nghĩ là đơn vị tính bằng font Lào nên không cần thiết gửi font đó lên 4R đó thôi, nếu bạn thấy cần tôi sẽ up cho
GC: như lúc đầu, NXT chủ yếu là tìm tên hàng của 70 dựa vào số CT của 70 mà lấy số lượng của 71A, 71B, 80E, 40C, 45A để trừ
À, tôi đang ở Lào nên phải dùng font Lào...
Nhờ bạn giúp nhé...dạo này Xếp đang cho làm báo cáo nên cần gấp..phiền bạn nhé

Tên Việt mình: Hứa Ngọc Minh (Vông-su-li-nha là tên Lào)
 
Lần chỉnh sửa cuối:
Mỗi mặt hàng là 1 mã, không thể trùng tên được
Vâng NXT sẽ dựa theo Số Chứng từ 70, mã hảng hoặc tên hàng cũng vậy

tôi nghĩ là đơn vị tính bằng font Lào nên không cần thiết gửi font đó lên 4R đó thôi, nếu bạn thấy cần tôi sẽ up cho
GC: như lúc đầu, NXT chủ yếu là tìm tên hàng của 70 dựa vào số CT của 70 mà lấy số lượng của 71A, 71B, 80E, 40C, 45A để trừ
À, tôi đang ở Lào nên phải dùng font Lào...
Nhờ bạn giúp nhé...dạo này Xếp đang cho làm báo cáo nên cần gấp..phiền bạn nhé

Tên Việt mình: Hứa Ngọc Minh (Vông-su-li-nha là tên Lào)
Cám ơn bạn.
Font thì cũng không cần.
Lưu ý như sau:
1/ Bạn đổi cấu trúc sh
2/ Sh XH1 và XH2 không cùng cấu trúc.
3/ Dòng dầu có dữ liệu kỳ trước là 2 giờ là 6
4/ Sh NXT cũng đổi từ 9 sang 6
Do mình viết code chỉ giải quyết vấn đề trước mắt nên chưa tổng quát lắm về dòng đầu có dữ liệu, mỗi lần đổi thì sửa hơi cực.
BC NXT này theo dõi phức tạp quá.
Bạn xem qua file, nhớ lần sau thì đừng đổi cấu trúc, thứ tự cột nhé.
 

File đính kèm

Vâng, cách BC NXT của Hải quan ở Lào này là khấu trừ theo CT nhập (70) chứ không như ở Việt Nam ta FIFO thì đơn giản hơn nhiều
Mình đã thử nhập DL thực vào trên hàng nghìn dòng (cả NH, XH1 và XH2), Code chạy thật trơn tru, nhanh và đơn giản hơn mình làm bằng công thức nhiều
Thật cảm ơn ThuNghi rất nhiều về sự giúp đỡ này...Công việc BC NXT Kho của mình rút ngắn thời gian hơn... thật hữu ích...
Nhưng mình còn một vấn đề là khi nhập chỉ hơn nghìn dòng mà lúc save file ngốn dung lượng đến 23.8 Mb luôn, đó là mới 6 tháng đầu năm, nếu 1 năm cũng khoảng 50 Mb. Xin hỏi ThuNghi có cách nào giảm bớt dung lượng không?
 
Vâng, cách BC NXT của Hải quan ở Lào này là khấu trừ theo CT nhập (70) chứ không như ở Việt Nam ta FIFO thì đơn giản hơn nhiều
Mình đã thử nhập DL thực vào trên hàng nghìn dòng (cả NH, XH1 và XH2), Code chạy thật trơn tru, nhanh và đơn giản hơn mình làm bằng công thức nhiều
Thật cảm ơn ThuNghi rất nhiều về sự giúp đỡ này...Công việc BC NXT Kho của mình rút ngắn thời gian hơn... thật hữu ích...
Nhưng mình còn một vấn đề là khi nhập chỉ hơn nghìn dòng mà lúc save file ngốn dung lượng đến 23.8 Mb luôn, đó là mới 6 tháng đầu năm, nếu 1 năm cũng khoảng 50 Mb. Xin hỏi ThuNghi có cách nào giảm bớt dung lượng không?
File nặng do phần format màu mè nên hơi nặng. Dòng nhập tô màu vàng và dùng Conditional Format.
A/ Tôi sửa lại code như sau:
1/ Xóa dữ liệu sh NXT từ dòng 6
2/ Xóa tất cả format từ dòng 7
3/ Copy format của dòng 6 xuống dòng cuối sh NXT
Cũng giảm 1 số K đáng kể.
B/ Nếu chuyển sang Excel 2007 thì file sẽ giảm dung lượng hơn nữa.
Tôi gởi thử 2 file khoảng 5.000 rows, bạn xem thử.
 

File đính kèm

mình đã thử file mới của ThuNghi, Code chạy rất tốt
Mình đang sử dụng Office 2003, có lẽ phải cài 2007 theo ThuNghi hướng dẫn, nhưng phải cài kép với 2003, vì Cty không cho dùng 2007
lý do máy có PM Kế toán Thái, chỉ report được với Excel 2003 mà thôi
Để mình thử xem...Cảm ơn ThuNghi nhiều nha...
 
Thêm một điểm nữa là: trong sheet "NXT", sau khi nhấn nút "Tao NXT" kết quả cho: tại cột B --> yêu cầu ngày-tháng xếp từ trên xuống theo thứ tự nhỏ --> lớn và năm ... 2008, 2009, 2010, 2011...
Một lần nữa nhờ ThuNghi chỉnh giúp code...
còn các điểm khác thì OK...thank...
 
Thêm một điểm nữa là: trong sheet "NXT", sau khi nhấn nút "Tao NXT" kết quả cho: tại cột B --> yêu cầu ngày-tháng xếp từ trên xuống theo thứ tự nhỏ --> lớn và năm ... 2008, 2009, 2010, 2011...
Một lần nữa nhờ ThuNghi chỉnh giúp code...
còn các điểm khác thì OK...thank...
Hiện tại sh NXT trên đang sỏt theo TT sau
1/ SoCTN
2/ MaHH
3/ NgayN
Ex 2003 chỉ sort theo 3 tiêu thức, nếu cần thì sort 1 lần nữa, nhưng nếu sỏt theo ngayN thì cầu trúc Sh NXT sẽ khác. Chưa hiểu lắm vấn đề này.
Bạn cho 1 vd sh NXT mà sort theo ý bạn.
 
Nhập xuất tồn kho 2 kho

Mình gửi file đả thêm phấn dữ liệu vào để ThuNghi sử dụng điều chỉnh
Yêu cầu là:
Trong sheet "NXT" : từ cột A --> cột P vẫn giữ thứ tự sort theo y nguyên như từ cột A --> cột P của sheet "NH" (nghĩa là mang sang toàn bộ y nguyên như "NH")
còn số hàng chèn thêm vào tùy thuộc "XH1", "XH2" tương ứng như ThuNghi đã làm là đúng ý rồi
nói chung mình cần cho từ cột A --> cột P của "NXT" xếp thứ tự từ trên xuống như bên "NH" (như trong file đính kèm)....
 
Lần chỉnh sửa cuối:
mình không up file đính kèm lên được
ThuNghi có thể cho địa chỉ E-mail để mình gửi file trực tiếp cho bạn
E-mail mình là: Vongsouligna@hotmail.com
cảm ơn.....
ảnh đính kèm:
QLK_Sheet-NH.JPGQLK_Sheet-NXT.JPG
 
Lần chỉnh sửa cuối:
mình không up file đính kèm lên được
ThuNghi có thể cho địa chỉ E-mail để mình gửi file trực tiếp cho bạn
E-mail mình là: Vongsouligna@hotmail.com
cảm ơn.....
ảnh đính kèm:
View attachment 67255View attachment 67256
Bạn mở code và sửa lại phần sort thử xem.
PHP:
'sort
  With myRng
    .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Key2:=.Cells(1, 4 _
        ), Order2:=xlAscending, Key3:=.Cells(1, 2), Order3:=xlAscending, Header _
        :=xlYes
    End With
Sửa thành
PHP:
'sort
  With myRng
    .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 1 _
        ), Order2:=xlAscending, Key3:=.Cells(1, 4), Order3:=xlAscending, Header _
        :=xlYes
    End With
Cells(1,2): ngay
Cells(1,1): SoCT
Cells(1,4): MaHH
 
Tôi đã thay đoạn code theo ThuNghi chỉ dẫn, toàn bộ mặt hàng đều theo thứ tự đúng như yêu cầu, chỉ còn mục hàng đứng đầu ở Sheet “NH” có tên hàng: Bordeaux La Cuvee Stephanie 888 12x75cl (Hinh1), trong “XH1” có xuất (Hinh2), nhưng trong “NXT” nó lại nằm ở hàng 13 nên cột SLT bị âm, đúng ra nó phải được chèn vào hàng thứ 7 (Hinh3)
Vậy tôi phải chỉnh thêm thế nào để giải quyết vấn đề trên
File ảnh đính kèm
 

File đính kèm

  • Hinh1.JPG
    Hinh1.JPG
    135.9 KB · Đọc: 6
  • Hinh2.JPG
    Hinh2.JPG
    129.3 KB · Đọc: 8
Chào ThuNghi...
Tôi có gửi file vào mail của bạn rồi đấy
và đây cũng là địa chỉ file đó:
http://www.mediafire.com/?uxk6ss8bdd993fd
Tôi sửa code lại 1 chút về format và sort theo ngày.
Còn bản thân sh Nh là chỉ sort theo ngày và soCT
Còn nếu sh NXT sorttheo TT của sh NH thì phải thêm 1 bước gán cột phụ nhưng thấy kg cần lắm.
Nếu cần tôi sẽ edit code.
PHP:
Sub TaoBC()
Dim endR&, i&, s&, k&
Dim ArrNh(), ArrXh1(), ArrXh2(), ArrData()
Dim myRng As Range, SlTon As Double, GTTon As Double, LakTon As Double
With Sheets("NH")
  endR = .Cells(65000, 1).End(3).Row
  ArrNh = .Range("A5:P" & endR).Value
End With
With Sheets("XH1")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh1 = .Range("A5:V" & endR).Value
End With
With Sheets("XH2")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh2 = .Range("A5:Z" & endR).Value
End With
ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37)
s = 0
For i = 1 To UBound(ArrNh)
  s = s + 1
  For k = 1 To UBound(ArrNh, 2)
    ArrData(s, k) = ArrNh(i, k)  'SoCTN va ngay
  Next k
Next i
''Lay tu XH1
For i = 1 To UBound(ArrXh1)
  s = s + 1
  For k = 1 To 3
    ArrData(s, k) = ArrXh1(i, k) 'SoCTN va ngay
  Next k
  For k = 4 To 9
    ArrData(s, k) = ArrXh1(i, k + 3) 'Tenhang + DVT ...
  Next k
  For k = 17 To 19
    ArrData(s, k) = ArrXh1(i, k - 13) 'SoCTX,NX,DX
  Next k
  ArrData(s, 20) = ArrXh1(i, 13) 'SLX
  ArrData(s, 21) = ArrXh1(i, 15) 'TGX
  For k = 22 To 23
    ArrData(s, k) = ArrXh1(i, k - 5)
  Next k
  ArrData(s, 24) = ArrXh1(i, 20)
  ArrData(s, 25) = ArrXh1(i, 22)
Next i
''Lay Tu XH2
For i = 1 To UBound(ArrXh2)
  s = s + 1
  For k = 1 To 3
    ArrData(s, k) = ArrXh2(i, k)  'SoCTN va ngay
  Next k
  For k = 4 To 9
    ArrData(s, k) = ArrXh2(i, k + 5) 'Tenhang + DVT...
  Next k
  For k = 26 To 28
    ArrData(s, k) = ArrXh2(i, k - 22) 'SoCTX,NX,DX
  Next k
  ArrData(s, 29) = ArrXh2(i, 15) 'SLX
  ArrData(s, 30) = ArrXh2(i, 20) 'TGX
  For k = 31 To 32
    ArrData(s, k) = ArrXh2(i, k - 10)
  Next k
Next i
'Gan vao
With Sheets("NXT")
  .[A6].Resize(1, 37).ClearContents 'Giu lai dong 6 CF
  .[A7].Resize(65000, 37).Clear 'Xoa tu dong 7
  '  'Format
  .Range("A6:AK6").Copy
  .[A7].Resize(s, 37).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
  .[A6].Resize(s, 37) = ArrData
  Set myRng = .[A6].Resize(s, 37)
   'sort
  With myRng
    .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 1 _
        ), Order2:=xlAscending, Key3:=.Cells(1, 4), Order3:=xlAscending, Header:=xlNo
    End With
    'set myRng = Nothing
  ReDim ArrData(1 To s + 1, 1 To 37)
  ArrData = .[A6].Resize(s + 1, 37).Value
End With
''Xy lý Ton
For i = 1 To UBound(ArrData) - 1
  If Len(ArrData(i, 11)) = 0 Then 'NN
    For k = 12 To 13
      ArrData(i, k) = ArrData(i - 1, k)
    Next k
  End If
  If Len(ArrData(i, 29)) > 0 Then 'NN
    ArrData(i, 33) = ArrData(i, 12) * ArrData(i, 29)
    ArrData(i, 34) = ArrData(i, 13) * ArrData(i, 29)
  End If
  SlTon = SlTon + ArrData(i, 10) - ArrData(i, 20) - ArrData(i, 29)
  GTTon = GTTon + ArrData(i, 14) - ArrData(i, 24) - ArrData(i, 33)
  LakTon = LakTon + ArrData(i, 16) - ArrData(i, 25) - ArrData(i, 34)
  If ArrData(i, 1) & ArrData(i, 4) <> ArrData(i + 1, 1) & ArrData(i + 1, 4) Then
    ArrData(i, 35) = SlTon
    ArrData(i, 36) = GTTon
    ArrData(i, 37) = LakTon
    SlTon = 0: GTTon = 0: LakTon = 0
  End If
Next i
'''Gan lai
With Sheets("NXT")
  .[A6].Resize(s, 37) = ArrData
End With
Application.CutCopyMode = False
Erase ArrNh(), ArrXh1(), ArrXh2(), ArrData()
End Sub
 

File đính kèm

Cảm ơn ThuNghi nhiều...
Code mới chạy đúng ý mình 99,99% rồi đó. Nhưng chỉ còn 1 điều cuối cùng nữa là:
trong Sh "NXT" để ý: từ E6:E18 là những mặt hàng trong CT 70-000241 nên tôi cần nó xếp theo thứ tự chữ cái ABC nghĩa là :
trước hết phải là : Bordeaux La Cuvee Stephanie 888 12x75cl
rồi đến Chateau Noaillac Medoc 2004 6x75cl
rồi đến Cognac De Luze V.S With 2 Glasses 6x70cl
rồi đến Cuvee St Andrews 2006 VPD de L'Agenais 12x75cl
rồi đến Franc Rubis 12x75cl
rồi đến Mademoisell Jeanne Vin Mousseux Blanc de Blancs 12x75cl
rồi đến Talent Blanc de Blancs 6x75cl
cuối cùng là Vin Mousseux Sire de Beaupre Demi-Sec 6x75cl

Và các CT 70-000473, 70-000730.... cũng vậy những mặt hàng trong mỗi CT cần phải xếp theo thứ tự chữ cái ABC...cả
nhờ ThuNghi giúp mình thêm lần nữa rất cảm ơn....
 
Cảm ơn ThuNghi nhiều...
Code mới chạy đúng ý mình 99,99% rồi đó. Nhưng chỉ còn 1 điều cuối cùng nữa là:
trong Sh "NXT" để ý: từ E6:E18 là những mặt hàng trong CT 70-000241 nên tôi cần nó xếp theo thứ tự chữ cái ABC nghĩa là :
trước hết phải là : Bordeaux La Cuvee Stephanie 888 12x75cl
rồi đến Chateau Noaillac Medoc 2004 6x75cl
rồi đến Cognac De Luze V.S With 2 Glasses 6x70cl
rồi đến Cuvee St Andrews 2006 VPD de L'Agenais 12x75cl
rồi đến Franc Rubis 12x75cl
rồi đến Mademoisell Jeanne Vin Mousseux Blanc de Blancs 12x75cl
rồi đến Talent Blanc de Blancs 6x75cl
cuối cùng là Vin Mousseux Sire de Beaupre Demi-Sec 6x75cl

Và các CT 70-000473, 70-000730.... cũng vậy những mặt hàng trong mỗi CT cần phải xếp theo thứ tự chữ cái ABC...cả
nhờ ThuNghi giúp mình thêm lần nữa rất cảm ơn....
Làm thêm 1 sort nữa theo cột 38=cột 5 và cột 4, sau đó bỏ cột 38.
PHP:
Sub TaoBC()
Dim endR&, i&, s&, k&
Dim ArrNh(), ArrXh1(), ArrXh2(), ArrData()
Dim myRng As Range, SlTon As Double, GTTon As Double, LakTon As Double
With Sheets("NH")
  endR = .Cells(65000, 1).End(3).Row
  ArrNh = .Range("A5:P" & endR).Value
End With
With Sheets("XH1")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh1 = .Range("A5:V" & endR).Value
End With
With Sheets("XH2")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh2 = .Range("A5:Z" & endR).Value
End With
ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37)
s = 0
For i = 1 To UBound(ArrNh)
  s = s + 1
  For k = 1 To UBound(ArrNh, 2)
    ArrData(s, k) = ArrNh(i, k)  'SoCTN va ngay
  Next k
Next i
''Lay tu XH1'
For i = 1 To UBound(ArrXh1)
  s = s + 1
  For k = 1 To 3
     ArrData(s, k) = ArrXh1(i, k) 'SoCTN va ngay'
  Next k
  For k = 4 To 9
     ArrData(s, k) = ArrXh1(i, k + 3) 'Tenhang + DVT ...'
  Next k
  For k = 17 To 19
     ArrData(s, k) = ArrXh1(i, k - 13) 'SoCTX,NX,DX'
  Next k
   ArrData(s, 20) = ArrXh1(i, 13) 'SLX'
   ArrData(s, 21) = ArrXh1(i, 15) 'TGX'
  For k = 22 To 23
    ArrData(s, k) = ArrXh1(i, k - 5)
  Next k
  ArrData(s, 24) = ArrXh1(i, 20)
  ArrData(s, 25) = ArrXh1(i, 22)
Next i
 ''Lay Tu XH2'
For i = 1 To UBound(ArrXh2)
  s = s + 1
  For k = 1 To 3
     ArrData(s, k) = ArrXh2(i, k)  'SoCTN va ngay'
  Next k
  For k = 4 To 9
     ArrData(s, k) = ArrXh2(i, k + 5) 'Tenhang + DVT...'
  Next k
  For k = 26 To 28
    ArrData(s, k) = ArrXh2(i, k - 22) 'SoCTX,NX,DX
  Next k
   ArrData(s, 29) = ArrXh2(i, 15) 'SLX'
   ArrData(s, 30) = ArrXh2(i, 20) 'TGX'
  For k = 31 To 32
    ArrData(s, k) = ArrXh2(i, k - 10)
  Next k
Next i
 'Gan vao'
With Sheets("NXT")
   .[A6].Resize(1, 38).ClearContents 'Giu lai dong 6 CF'
   .[A7].Resize(65000, 38).Clear 'Xoa tu dong 7'
   '  'Format'
  .Range("A6:AK6").Copy
  .[A7].Resize(s, 37).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
  .[A6].Resize(s, 37) = ArrData
  Set myRng = .[A6].Resize(s, 37)
    'sort'
  With myRng
    .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 1 _
        ), Order2:=xlAscending, Key3:=.Cells(1, 4), Order3:=xlAscending, Header:=xlNo
    End With
  Set myRng = Nothing
  ReDim ArrData(1 To s + 1, 1 To 38)
  ArrData = .[A6].Resize(s + 1, 38).Value
End With
 ''Xy lý Ton'
For i = 1 To UBound(ArrData) - 1
  ArrData(i, 38) = ArrData(i, 5) & "-" & ArrData(i, 4)
  If Len(ArrData(i, 11)) = 0 Then 'NN
    For k = 12 To 13
      ArrData(i, k) = ArrData(i - 1, k)
    Next k
  End If
  If Len(ArrData(i, 29)) > 0 Then 'NN
    ArrData(i, 33) = ArrData(i, 12) * ArrData(i, 29)
    ArrData(i, 34) = ArrData(i, 13) * ArrData(i, 29)
  End If
  SlTon = SlTon + ArrData(i, 10) - ArrData(i, 20) - ArrData(i, 29)
  GTTon = GTTon + ArrData(i, 14) - ArrData(i, 24) - ArrData(i, 33)
  LakTon = LakTon + ArrData(i, 16) - ArrData(i, 25) - ArrData(i, 34)
  If ArrData(i, 1) & ArrData(i, 4) <> ArrData(i + 1, 1) & ArrData(i + 1, 4) Then
    ArrData(i, 35) = SlTon
    ArrData(i, 36) = GTTon
    ArrData(i, 37) = LakTon
    SlTon = 0: GTTon = 0: LakTon = 0
  End If
Next i
'''Gan lai
With Sheets("NXT")
  .[A6].Resize(s, 38) = ArrData
   Set myRng = .[A6].Resize(s, 38)
   'sort
  With myRng
    .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 1 _
        ), Order2:=xlAscending, Key3:=.Cells(1, 38), Order3:=xlAscending, Header:=xlNo
  End With
  myRng.Offset(, 37).Resize(, 1).ClearContents
  Set myRng = Nothing
End With
Application.CutCopyMode = False
Erase ArrNh(), ArrXh1(), ArrXh2(), ArrData()
End Sub
 
Thưa ThuNghi...
Tôi đã chép code mới ThuNghi vừa gửi cho và thay vào code cũ, thử chạy kết quả đạt được rất như ý
với file này mình chắc rằng kết quả công việc sẽ nhanh và chính xác hơn cách làm bằng công thức trước đây của mình
Thật cảm ơn ThuNghi...xin chào tạm biệt...hẹn gặp lại...
 
Thưa ThuNghi...
Tôi đã chép code mới ThuNghi vừa gửi cho và thay vào code cũ, thử chạy kết quả đạt được rất như ý
với file này mình chắc rằng kết quả công việc sẽ nhanh và chính xác hơn cách làm bằng công thức trước đây của mình
Thật cảm ơn ThuNghi...xin chào tạm biệt...hẹn gặp lại...
Bạn từ từ nghiên cứu code, tôi se cố gáng hướng dẫn từng phần cho bạn hiểu để nếu có vấn đề cần thay đổi thì mình hiểu và làm. Nhất là phải hiểu để biết code ra kết quả có OK.
Cám ơn bạn đã chịu khó.
 
Nếu khi nào bạn rảnh, mình muốn nhờ bạn giải nghĩa phía sau mỗi hàng code để mình hiểu và ứng dụng cho code khác, vì mình còn một file cũng tương tự, nhưng các cột trong NXT của file này có tăng thêm một số cột, vì mình không có học VBA, chỉ tự học trên diễn đàn GPE Việt Nam này thôi, nên kiến thức còn non kém, nhưng mình sẽ cố gắng tự tìm tòi trên cơ sở được sự giúp đỡ của ACE GPE này. Hiện nay mình đang nghiên cứu code của bạn vì mình rất tin tưởng vào code cho công việc của mình. Cả đêm hôm qua mình mày mò tìm hiểu cũng tường tỏ hiểu được phần nào của code. Hôm nay mình tính thử viết code cho file mới xem, mong rằng ACE diễn đàn sẽ ủng hộ về tinh thần và kiến thức chia sẽ, mình rất cảm ơn các bạn nhất là bạn ThuNghi vừa qua rất tích cực giúp đỡ mình, một lần nữa xin cảm ơn bạn và tất cả ACE ... mình sẽ cố gắng thêm nhiều hơn để có dịp tham gia với GPE.....
 
ThuNghi ơi... mình không hiểu đoạn code này:
endR = .Cells(65000, 1).End(3).Row có phải là lấy DL đến ô cuối là dòng 65000? sao trong With Sheets("XH1"), With Sheets("XH2") đều cò dòng code này. còn End(3).Row nghĩa là thế nào?

ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37) theo mình đoán: đưa mảng DL "NH", "XH1", "XH2" vào từ cột thứ nhất đến cột 37 (vì bên NXT có 16 cộtNH + 9 cộtXH1 + 9 cộtXH2 + 3 cộtTon=37 cột) hiểu như vậy có đúng không

xin ACE đừng cười mình, vì mình không có học VBA thông cảm nha....hi...hi.... (còn nhiều cái chưa hiểu lắm...)
 
Nếu khi nào bạn rảnh, mình muốn nhờ bạn giải nghĩa phía sau mỗi hàng code để mình hiểu và ứng dụng cho code khác, vì mình còn một file cũng tương tự, nhưng các cột trong NXT của file này có tăng thêm một số cột, vì mình không có học VBA, chỉ tự học trên diễn đàn GPE Việt Nam này thôi, nên kiến thức còn non kém, nhưng mình sẽ cố gắng tự tìm tòi trên cơ sở được sự giúp đỡ của ACE GPE này. Hiện nay mình đang nghiên cứu code của bạn vì mình rất tin tưởng vào code cho công việc của mình. Cả đêm hôm qua mình mày mò tìm hiểu cũng tường tỏ hiểu được phần nào của code. Hôm nay mình tính thử viết code cho file mới xem, mong rằng ACE diễn đàn sẽ ủng hộ về tinh thần và kiến thức chia sẽ, mình rất cảm ơn các bạn nhất là bạn ThuNghi vừa qua rất tích cực giúp đỡ mình, một lần nữa xin cảm ơn bạn và tất cả ACE ... mình sẽ cố gắng thêm nhiều hơn để có dịp tham gia với GPE.....
Bạn có thể cụ thể phần nào bạn chưa hiểu, biết được bạn hiểu tới đâu thì giải thích sẽ đơn giản hơn.
PHP:
Sub TaoBC()
Dim endR&, i&, s&, k&
Dim ArrNh(), ArrXh1(), ArrXh2(), ArrData()
Dim myRng As Range, SlTon As Double, GTTon As Double, LakTon As Double
Phần đầu là khai báo biến, trong đó co phần khai báo 4 Array gồm 3 Arr dữ liệu và 1 Arr kết quả là ArrData
PHP:
With Sheets("NH")
  endR = .Cells(65000, 1).End(3).Row
  ArrNh = .Range("A5:P" & endR).Value
End With
With Sheets("XH1")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh1 = .Range("A5:V" & endR).Value
End With
With Sheets("XH2")
  endR = .Cells(65000, 1).End(3).Row
  ArrXh2 = .Range("A5:Z" & endR).Value
End With
Phần này là lấy dữ liệu các sh và các Arr.
PHP:
ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37)
s = 0
Gán lại ArrData gồm có số dòng là tổng số dòng của 3 Arr và có số cột là 37, Sh NXT có 37 cột cần lấy.
Phần tiếp là đưa từng phần của 3 Arr trên vào ArrData.
 
À quên : ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37)
tại sao không là : ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh2), 1 To 37)
Nếu thay bằng code hàng thứ hai thì có sao không, vbì mình thử chỉnh lại như dòng 2 thì KQ hình như vẫn y như cũ....?
 
À quên : ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh1), 1 To 37)
tại sao không là : ReDim ArrData(1 To UBound(ArrNh) + UBound(ArrXh1) + UBound(ArrXh2), 1 To 37)
Nếu thay bằng code hàng thứ hai thì có sao không, vbì mình thử chỉnh lại như dòng 2 thì KQ hình như vẫn y như cũ....?
Sorry, dòng của bạn mới chính xác, may lúc khai báo là ArrXH1 có số dòng > ArrXH2. Không thì nó báo lỗi thiếu dòng.
 

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

Back
Top Bottom