Trích rút dữ liệu từ một sheet ra nhiều sheet và ngược lại (2 người xem)

Liên hệ QC

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

ndtdlhagiang

Thành viên mới
Tham gia
5/11/06
Bài viết
45
Được thích
11
Mình tìm mãi không thấy có chủ đề nào phù hợp nên mới tạo thêm chủ đề này.
yêu cầu đặt ra là trích rút dữ liệu từ một sheet tonghop ra cscs sheet khác, và làm ngược lại tức là tổng hợp dữ liệu từ các sheet mới được trích rút ra ( sau khi đã sửa số liệu) vào sheet tonghop. yêu cầu mình có nói trong file đính kèm, các bạn xem có cách nào tối ưu cho bài toán này không. xin cảm ơn.
 

File đính kèm

Hãy kiểm xem Bài 1 đúng chưa, nha?

PHP:
Option Explicit
Sub Bai01()
 Dim lRow As Long, Rw1 As Long, Rw2 As Long
 Dim Rng As Range, kRng As Range
 Dim GPE_ As String:                Dim SoLan As Integer
 
 Sheet1.Select
 With Sheet1.Range("A1:A" & [a65432].End(xlUp).Row)
   Set Rng = .Find(What:="END/", LookIn:=xlValues)
   If Not Rng Is Nothing Then
      GPE_ = Rng.Address:           Rw1 = Rng.Offset(1).Row
      Do
         Rw1 = Rng.Offset(1).Row:         SoLan = 1 + SoLan
         Set Rng = .FindNext(Rng)
         Rw2 = Rng.Offset(-1).Row
         If Rw1 < Rw2 Then _
            Range(Cells(Rw1, "A"), Cells(Rw2, "N")).Copy _
               Destination:=Sheets(Chr(SoLan + 64)).[a65432].End(xlUp).Offset(1)
         Rw1 = Rw2 + 2
      Loop While Not Rng Is Nothing And Rng.Address <> GPE_
   End If
 End With
End Sub
 
Cám ơn bạn đã giúp mình, nhưng vẫn chưa đúng bạn ạ, dữ liệu chuyễn sang sheet A và B thì đúng rồi, nhưng dữ liệu vào các sheet C D E F G H I thì vẫn chưa đúng. hình như bạn chưa quan tâm đến hết các điều kiện mình đặt ra, Dữ liệu ở sheet C chỉ là một phần dữ liệu mà có giá trị ở ô C là chữ L mà thôi, Bạk xem lại kỹ các điều kiện cho mình nhé. Code trên của bạn mới chỉ chia được dữ liệu giữa các hàng EnD/ ra các sheet tương ứng lần lượt theo thứ tự mà thôi.
 
Lần chỉnh sửa cuối:
Đánh vật hơn buổi với bài I của bạn & đây:

PHP:
Option Explicit:           Option Base 1
Sub Bai01()
 On Error Resume Next
 Dim lRow As Long, Rw1 As Long, Rw2 As Long, Num1 As Long, Num2 As Long
 Dim Rng As Range, RngC As Range, Clls As Range
 ReDim mRng(4) As Range:                  Dim GPE_ As String, StrC As String
 Dim SoLan As Byte, Wz As Byte
 
 Sheet1.Select
 With Sheet1.Range("A1:A" & [a65432].End(xlUp).Row)
   Set Rng = .Find(What:="END/", LookIn:=xlValues)
   If Not Rng Is Nothing Then
      GPE_ = Rng.Address:                 Rw1 = Rng.Offset(1).Row
      Do
         Rw1 = Rng.Offset(1).Row:         SoLan = 1 + SoLan
         Set Rng = .FindNext(Rng)
         Rw2 = Rng.Offset(-1).Row
         If Rw1 < Rw2 Then
            Select Case SoLan
            Case Is < 3
               Range(Cells(Rw1, "A"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[a1]
            Case 3
               Set RngC = Range("C" & Rw1 & ":C" & Rw2)
               For Each Clls In RngC
                  For Wz = 1 To 4
                     StrC = Choose(Wz, "L", "T", "TS", "SX")
                     If Wz = 3 Then
                        If Clls = "S" Or Clls = StrC Then
                           If mRng(3) Is Nothing Then
                              Set mRng(3) = Clls.Offset(, -2).Resize(, 13)
                           Else
                              Set mRng(3) = Union(mRng(3), Clls.Offset(, -2).Resize(, 13))
                           End If
                        End If
                     Else
                        If Clls = StrC Then
                           If mRng(Wz) Is Nothing Then
                              Set mRng(Wz) = Clls.Offset(, -2).Resize(, 13)
                           Else
                              Set mRng(Wz) = Union(mRng(Wz), Clls.Offset(, -2).Resize(, 13))
                           End If
                        End If
                     End If
                  Next Wz
               Next Clls
               For Wz = 1 To 4
                  If Not mRng(Wz) Is Nothing Then
                     mRng(Wz).Copy Destination:=Sheets(Chr(Wz + 66)).[a1]
                     Set mRng(Wz) = Nothing
                  End If
               Next Wz
            Case 4
               Range(Cells(Rw1, "C"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[O1]
4
            Case 5
               Set RngC = Range("C" & Rw1 & ":C" & Rw2)
               For Each Clls In RngC
                  For Wz = 1 To 3
                     Num1 = Choose(Wz, 0, 40, 80)
                     Num2 = Choose(Wz, 40, 80, 120)
                     If Abs(Clls) >= Num1 And Abs(Clls) < Num2 Then
                        If mRng(Wz) Is Nothing Then
                           Set mRng(Wz) = Clls.Offset(, -2).Resize(, 13)
                        Else
                           Set mRng(Wz) = Union(mRng(Wz), Clls.Offset(, -2).Resize(, 13))
                        End If
                     End If
                  Next Wz
               Next Clls
               For Wz = 1 To 3
                  If Not mRng(Wz) Is Nothing Then
                     mRng(Wz).Copy Destination:=Sheets(Chr(Wz + 70)).[a1]
                     Set mRng(Wz) = Nothing
                  End If
               Next Wz
            Case 6, 7
               Range(Cells(Rw1, "A"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 68)).[a1]
            End Select
         End If
         Rw1 = Rw2 + 2
      Loop While Not Rng Is Nothing And Rng.Address <> GPE_
   End If
 End With
9
End Sub
 

File đính kèm

Cám ơn bạn đã tận tình giải cho mình, nhưng vẫn còn một lỗi. ở sheet D giá trị ở cột O đến cột Z được copy theo từng dòng khi và chỉ khi giá trị ở cột A bằng giá trị của cột A sheet tonghop và giá trị ở cột B bằng giá trị của cột B sheet tonghop. nhờ bạn sửa lại dùm mình, mình muốn thêm một điều kiện là tất cả các sheet con đều được bắt đầu bằng dòng thứ 2. như vậy là bài 1 đã gần được giải quyết rồi đấy, còn bài 2 thì sao nhỉ? bạn cố gắng giúp mình nhé.
 
Còn một lỗi. ở sheet D giá trị ở cột O đến cột Z được copy theo từng dòng khi và chỉ khi giá trị ở cột A bằng giá trị của cột A sheet tonghop và giá trị ở cột B bằng giá trị của cột B sheet tonghop.
Như vậy ở cột 'A' & 'B' của Sheets("D") có dữ liệu & = với cột 'A' hay 'B' trong Sheets("TongHop") mới chép hay sao? Chỗ này cần rành mạch thêm;

Trong bài bạn viết: DL (Dữ liệu) của sheet D từ cột O đến cột Z được copy từ vùng DL bắt đầu từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm ( ở đây là từ c35:N36 của sheet tonghop), phần dữ liệu này được copy theo từng dòng phù hợp với giá trị ghi tại cột A và cột B . Cũng như trên, bạn cần nêu rõ phù hợp là NTN?
(Hay ai hiểu phần này, xin diễn dịch giùm cái!)

mình muốn thêm một điều kiện là tất cả các sheet con đều được bắt đầu bằng dòng thứ 2. như vậy là bài 1 đã gần được giải quyết rồi đấy
Bạn tự sửa các câu lệnh tương ứng đi: Xem câu nào có mệnh đề Destínation:= thì sửa lại phần cuối; (Thường là [A1] =>> [A2]; còn [O1]==>> [O2] , vậy thôi
 
Cám ơn bạn đã chỉ dẫn cho mình, bạn có thể giải thích cho mình từng câu lệnh được không..
Còn dữ liệu ở sheet D gồm 2 phần, phần đầu từ cột A đến cột N chắc bạn đã rõ rồi. phần sau từ cột O đến cột Z sẽ được copy từ vùng DL bắt đầu từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm theo từng hàng tương ứng với điều kiện giá trị cột 'A' & 'B' của Sheets("D") có dữ liệu & = với cột 'A' và 'B' trong Sheets("TongHop") mới chép.
nghĩa là nếu ở sheets("D") có Aj=1, Bj=2 mà dữ liệu ở sheets("tonghop") (phần từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm) có Ai = 1, Bi=2 thì copy dữ liệu từ Ci:Ni dán vào Oj:Zj của sheets("D").
đó chính là điều kiện mình muốn!
 
Cách chỉnh để hết lỗi sẽ như sau

Tại dòng trống mà mình vừa đánh số 4, bạn thêm câu lệnh (gồm 2 hàng), như sau
Mã:
4             Range(Cells(Rw1, "A"), Cells(Rw2, "B")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[AD2]

Tại dòng trống mà mình vừa thêm số 9 sẽ là các dòng lệnh sau:
Mã:
Sheets("D").Select
 Rw2 = [b65500].End(xlUp).Row
 For Rw1 = Rw2 To 2 Step -1
   If Cells(Rw1, 1) <> Cells(Rw1, 30) Or Cells(Rw1, 2) <> Cells(Rw1, 31) Then
      If mRng(4) Is Nothing Then
         Set mRng(4) = Cells(Rw1, "O").Resize(, 26)
      Else
         Set mRng(4) = Union(mRng(4), Cells(Rw1, "O").Resize(, 26))
      End If
   End If
 Next Rw1
 If Not mRng(4) Is Nothing Then mRng(4).Delete
 Range("AB2:AE" & Rw2).Clear
Chú ý: Mình đã sửa các câu lệnh để bắt đầu chép từ dòng thứ 2 rồi. (chỉ trong các dòng lệnh trong bài này!)
 
bạn có thể giải thích cho mình từng câu lệnh được không..!

Giải thích sơ lược các dòng lệnh, như sau:

Tìm trong toàn bộ cột 'A' của 'TongHop' trị "END/"
Nếu tìm thấy:
* Gán vô biến Rw1 dòng kế tiếp của ô tìm thấy
* Và tìm tiếp
+ Số lần tìm thấy trị chuỗi này được ghi nhận bằng biến SoLan
+ Tìm thấy lần kế tiếp thì trị trong biến Rw1 sẽ trao cho Rw2 & tự nó nhận trị mới tìm thấy. (Để xác định vùng các ô trong cột 'A' nằm giữa 2 trị 'END/'
(+) Lần tìm thấy thứ nhất, nhì, sáu & bảy dữ liệu được Copy đến các sheets tương ứng theo yêu cầu;
(+) Lần tìm thấy lần 3 ta phải xét đến 4 vùng dữ liệu, tương ứng với trị trên cột 'C' là 'L', 'T', 'TS' & 'SX' .
Bốn vùng này được gộp vô theo từng biến mảng mRng(i=1-4) nhờ phương thức Union()
Sau đó được copy vô các sheets tương ứng theo yêu cầu
(+) Lần tìm thấy lần 5 sẽ như lần tìm thấy kế trước, nhưng chỉ chia làm 3 vùng; Ở đây chúng ta dùng hàm ABS(Nums) để tiện trong chia vùng. Sau đó cũng được copy đến các sheets tương ứng theo yêu cầu

Trong các lần tìm thấy này, bạn còn chưa rõ chổ nào, mình sẽ giải thích thêm. Nhưng rất mong bạn sẽ không phải hỏi tiếp.
:-=--=0:-=
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tại dòng trống mà mình vừa thêm số 9 sẽ là các dòng lệnh sau:
Mã:
Sheets("D").Select
 Rw2 = [b65500].End(xlUp).Row
 For Rw1 = Rw2 To 2 Step -1
   If Cells(Rw1, 1) <> Cells(Rw1, 30) Or Cells(Rw1, 2) <> Cells(Rw1, 31) Then
      If mRng(4) Is Nothing Then
         Set mRng(4) = Cells(Rw1, "O").Resize(, 26)
      Else
         Set mRng(4) = Union(mRng(4), Cells(Rw1, "O").Resize(, 26))
      End If
   End If
 Next Rw1
 If Not mRng(4) Is Nothing Then mRng(4).Delete
 Range("AB2:AE" & Rw2).Clear
quote]

Mình đã thêm các đoạn code của bạ tại dòng 4 và dòng 9 đồng thời cũng đã sửa code theo gợi ý của bạn. tuy nhiên kết quả tại sheets("D") vẫn chưa đạt như mong muốn, ở sheets("D")Aj=1, Bj=2 ( ở đây j chạy từ 2 tới 65500 ) mà dữ liệu ở sheets("tonghop")Ai = 1, Bi=2 (ở đây i chạy từ phần từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm) thì copy dữ liệu từ Ci:Ni dán vào Oj:Zj của sheets("D"), còn nếu không có dữ liệu nào có Ai Bi nào thảo mãn thì phần dữ liệu của Oj:Zj sẽ là trắng. Theo code của bạn thì lại không được kết quả như vậy, bạn xem lại hộ mình với. cảm ơn bạn trước nghe.
 
Lần chỉnh sửa cuối:
Chắc cán bạn đang bận phải không, mình đợi mãi mà không có ai trả lời. mình cũng đã thử làm rồi mà mãi vẫn không được
 
Tuy nhiên kết quả tại sheets("D") vẫn chưa đạt như mong muốn, ở sheets("D") có Aj=1, Bj=2 ( ở đây j chạy từ 2 tới 65500 ) mà dữ liệu ở sheets("tonghop") có Ai = 1, Bi=2 (ở đây i chạy từ phần từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm) thì copy dữ liệu từ Ci:Ni dán vào Oj:Zj của sheets("D"), còn nếu không có dữ liệu nào có Ai Bi nào thảo mãn thì phần dữ liệu của Oj:Zj sẽ là trắng. Theo code của bạn thì lại không được kết quả như vậy, bạn xem lại hộ mình với. cảm ơn bạn
Ngôn ngữ bất đồng!

1*/
Dữ liệu của sheet D từ cột O đến cột Z được copy từ vùng dữ liệu bắt đầu từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm ( ở đây là từ c35:N36 của sheet tonghop), phần dữ liệu này được copy theo từng dòng phù hợp với giá trị ghi tại cột A và cột B


2*/ phần sau từ cột O đến cột Z sẽ được copy từ vùng DL bắt đầu từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm theo từng hàng tương ứng với điều kiện giá trị cột 'A' & 'B' của Sheets("D") có dữ liệu & = với cột 'A' và 'B' trong Sheets("TongHop") mới chép.
nghĩa là nếu ở sheets("D") có Aj=1, Bj=2 mà dữ liệu ở sheets("tonghop") (phần từ dưới hàng END/ thứ tư Đến Trên Hàng END/ thứ năm) có Ai = 1, Bi=2 thì copy dữ liệu từ Ci:Ni dán vào Oj:Zj của sheets("D").
đó chính là điều kiện mình muốn!


3*/ (như trích dẫn bên trên)

Vẫn chưa hiểu nhau chổ này
Hay là vầy đi:
Bạn chịu khó tạo lại dữ liệu giúp cái; Nhưng chỉ là:
Tại sheets("TongHop") chỉ từ dòng END/ thứ tư đến thứ 5;
Nhưng số liệu phải mang đủ tính đặt trưng; phải có những dữ liệu không chép (màu đỏ) & dữ liệu thỏa điều kiện chép (màu xanh)
Hay bạn nói sang tiếng Anh đi, sẽ nhiều người trên diễn đàn tham gia với chúng ta hơn!
Chúc vui nha!
 
Chắc tại mình diến đạt khó hiểu quá, theo gợi ý của bạn mình tạo lại dữ liệu rồi, bạn xem hộ mình nhé. ở cột O sheets("tonghop") mình có đánh số thứ tự những hàng sẽ được chuyển sang sheets("D"). bạn xem thêm cả sheets("yeucau") nữa nhé. cám ơn bạn rất nhiều, tại máy tính ở nhà bị hỏng nên nhận được bài của bạn trên điện thoại mình đến cơ quan luôn. mình vừa đi làm đêm về, nên nếu có đánh sai thì bạn chịu khó đọc và thông cảm cho mình nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào bạn! dữ liệu mình tạo lại như thế đã rõ nghĩa chưa, có cần phải bổ xung gì nữa không? bạn đang bận nên chưa xem hộ mình đúng không?
 
Thêm 1 lần nữa sẽ xong!

PHP:
Option Explicit:           Option Base 1
Sub Bai01()
 On Error Resume Next
 Dim lRow As Long, Rw1 As Long, Rw2 As Long, Num1 As Long, Num2 As Long
 Dim Rng As Range, RngC As Range, Clls As Range
 ReDim mRng(4) As Range:                  Dim GPE_ As String, StrC As String
 Dim SoLan As Byte, Wz As Byte
 
 Sheet1.Select
 With Sheet1.Range([A1], [a65432].End(xlUp))
   Set Rng = .Find(What:="END/", LookIn:=xlValues)
   If Not Rng Is Nothing Then
      GPE_ = Rng.Address:                 Rw1 = Rng.Offset(1).Row
      Do
         Rw1 = Rng.Offset(1).Row:         SoLan = 1 + SoLan
         Set Rng = .FindNext(Rng)
         Rw2 = Rng.Offset(-1).Row
         If Rw1 < Rw2 Then
            Select Case SoLan
            Case Is < 3
               Range(Cells(Rw1, "A"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[a2]
            Case 3
               Set RngC = Range("C" & Rw1 & ":C" & Rw2)
               For Each Clls In RngC
                  For Wz = 1 To 4
                     StrC = Choose(Wz, "L", "T", "TS", "SX")
                     If Wz = 3 Then
                        If Clls = "S" Or Clls = StrC Then
                           If mRng(3) Is Nothing Then
                              Set mRng(3) = Clls.Offset(, -2).Resize(, 13)
                           Else
                              Set mRng(3) = Union(mRng(3), Clls.Offset(, -2).Resize(, 13))
                           End If
                        End If
                     Else
                        If Clls = StrC Then
                           If mRng(Wz) Is Nothing Then
                              Set mRng(Wz) = Clls.Offset(, -2).Resize(, 13)
                           Else
                            Set mRng(Wz) = Union(mRng(Wz), Clls.Offset(, -2).Resize(, 13))
                           End If
                        End If
                     End If
                  Next Wz
               Next Clls
               For Wz = 1 To 4
                  If Not mRng(Wz) Is Nothing Then
                     mRng(Wz).Copy Destination:=Sheets(Chr(Wz + 66)).[a2]
                     Set mRng(Wz) = Nothing
                  End If
               Next Wz
            Case 4
               Range(Cells(Rw1, "C"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[O2]
                  
               Range(Cells(Rw1, "A"), Cells(Rw2, "B")).Copy _
                  Destination:=Sheets(Chr(SoLan + 64)).[AB2]
               
            Case 5
               Set RngC = Range("C" & Rw1 & ":C" & Rw2)
               For Each Clls In RngC
                  For Wz = 1 To 3
                     Num1 = Choose(Wz, 0, 40, 80)
                     Num2 = Choose(Wz, 40, 80, 120)
                     If Abs(Clls) >= Num1 And Abs(Clls) < Num2 Then
                        If mRng(Wz) Is Nothing Then
                           Set mRng(Wz) = Clls.Offset(, -2).Resize(, 13)
                        Else
                           Set mRng(Wz) = Union(mRng(Wz), Clls.Offset(, -2).Resize(, 13))
                        End If
                     End If
                  Next Wz
               Next Clls
               For Wz = 1 To 3
                  If Not mRng(Wz) Is Nothing Then
                     mRng(Wz).Copy Destination:=Sheets(Chr(Wz + 70)).[a2]
                     Set mRng(Wz) = Nothing
                  End If
               Next Wz
            Case 6, 7
               Range(Cells(Rw1, "A"), Cells(Rw2, "N")).Copy _
                  Destination:=Sheets(Chr(SoLan + 68)).[a2]
            End Select
         End If
         Rw1 = Rw2 + 2
      Loop While Not Rng Is Nothing And Rng.Address <> GPE_
   End If
 End With
 
 Sheets("D").Select:                      Set Rng = Nothing
 Rw1 = [a65432].End(xlUp).Row:            Rw2 = [Ab65500].End(xlUp).Row
 ReDim DaCo(Rw2) As Boolean
 For Num1 = 2 To Rw1
   For Num2 = 2 To Rw2
      If Cells(Num1, 1) = Cells(Num2, "AB") And Cells(Num1, 2) = Cells(Num2, "AC") _
         And Not DaCo(Num2) Then
         DaCo(Num2) = True
         If Rng Is Nothing Then
            Set Rng = Cells(Num2, "O")
         Else
            Set Rng = Union(Rng, Cells(Num2, "o"))
         End If
      End If
   Next Num2
 Next Num1
 For Num2 = 2 To Rw2
   If Intersect(Cells(Num2, "O"), Rng) Is Nothing Then _
      Cells(Num2, "o").Resize(, 16).Clear
 Next Num2
 Range([AB2], Cells(Rw2, "AD")).Clear
 Sheet1.Select
End Sub
 

File đính kèm

Có lễ bạn bận gì đó nên chưa xem xét kỹ, theo yêu cầu thì dữ liệu từ O2:Z2 phải là dữ liệu từ C74:N74 sheets("tonghop") copy sang. còn dữ liệu từ O5:Z5 phải là trắng vì không có Aj = 5 và Bj=6. .... bạn vui lòng xem lại hộ mình nhé. cám ơn rất nhiều.
 
Theo yêu cầu thì dữ liệu từ O2:Z2 phải là dữ liệu từ C74:N74 sheets("tonghop") copy sang. còn dữ liệu từ O5:Z5 phải là trắng vì không có Aj = 5 và Bj=6. .... bạn vui lòng xem lại hộ mình nhé. cám ơn rất nhiều.
Hiện tại dữ liệu trong TongHop đã vậy;
Bạn hãy đưa dữ liệu mong muốn lên sheets 'D' đi, sẽ tiết kiệm thời gian của bạn & mọi người hơn; Một khi chưa hiểu nhau bằng lời, thì đây là phương cách tốt nhất!@$@!^%
 
Đây là bài 1 mình làm theo gợi ý của các bạn và đã làm được rồi, kết quả đã như mình mong muốn. mình gửi lên để các bạn xem thử, có còn tối ưu được nữa không.
 

File đính kèm

Xem bài Tachgop của bạn ndtdlhagiang

Đây là bài 1 mình làm theo gợi ý của các bạn và đã làm được rồi, kết quả đã như mình mong muốn. mình gửi lên để các bạn xem thử, có còn tối ưu được nữa không.

Bạn ndtdlhagiang thân mến!
Tình cờ xem qua bài Tachgop cúa bạn tôi thấy rất hay và thiết thực. Rất cám ơn bạn.
Tôi cũng đang gặp vấn đề khó giải quyết cũng có những vấn đề tương tự như bài trên. Tôi gửi file đính kèm nhờ bạn giúp vì tôi chỉ biết qua loa về VBA chưa thể làm được và chưa biết bắt đầu từ đâu.
Rất mong sự giúp đỡ của bạn và chân thành cám ơn bạn.
taxi51​
 
Các Anh chị trên Diễn đàn GPE kính mến!
Tôi có một yêu cầu mong các Anh, Chị giúp đỡ. Đó là tôi muốn sau khi xuất hoặc nhập hàng xong sẽ ghi lại vào các sheet theo dõi tương ứng để đến khi tổng họp hàng đã nhận xuất tồng kho theo tháng cho tiện. Tôi đã được Các Anh chị giúp đõ phần nhập xuất thực phẩm theo chiều ngang rồi, nhưng nay xếp yếu cầu làm theo chiều dọc để dẽ xem. Đành phải chiều, nhưng lay hoay không làm được. Kiến thức VBA của tôi quá tệ (không biết tý gì cả). Mong các Anh chị giúp đỡ tôi với. Trân trong cảm ơn!

Bởi vì tệp cũ làm có nhiều số liệu và công thức nên nặng mạng không cho tải lên. Flie đính kèm tôi làm ví dụ. mong các Anh chị thông cảm!
Tôi dùng Win XP offce 2003.
 

File đính kèm

Web KT

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

Back
Top Bottom