Nhập xuất tồn kho (2 kho)

Liên hệ QC
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ũ....?
 
Web KT

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

Back
Top Bottom