Cần giúp đỡ ạ. Tự động chuyển dữ liệu từ Sheet này sang Sheet khác. (1 người xem)

Liên hệ QC

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

Hoàng Minh Trung 1409

Thành viên mới
Tham gia
27/3/22
Bài viết
3
Được thích
0
Em chào mọi người ạ. Em mới đi làm và đang làm bảng thống kê như sau: có Sheet công nợ và Sheet Đại lý, có cách nào để Sheet Đại lý TỰ ĐỘNG lấy dữ liệu tương ứng của Sheet công nợ sang không ạ (ngày tháng,số xe, số thu xuất,đơn giá, thành tiền .v.v... và một đại lý sẽ lấy nhiều chuyến, một chuyến có thể lấy nhiều loại hàng), ở đây ví dụ đang lấy dữ liệu của đại lý Hải Anh ạ (chỉ cần ô ghi chú trong Sheet Công nợ ghi ĐL Hải Anh thì các dữ liệu của dòng đó sẽ tự chuyển sang ô tương ứng trong Sheet ĐL Hải Anh)
Em xin cảm ơn mọi người ạ.
Công nợ.jpgĐại lý.jpg
 

File đính kèm

Em chào mọi người ạ. Em mới đi làm và đang làm bảng thống kê như sau: có Sheet công nợ và Sheet Đại lý, có cách nào để Sheet Đại lý TỰ ĐỘNG lấy dữ liệu tương ứng của Sheet công nợ sang không ạ (ngày tháng,số xe, số thu xuất,đơn giá, thành tiền .v.v... và một đại lý sẽ lấy nhiều chuyến, một chuyến có thể lấy nhiều loại hàng), ở đây ví dụ đang lấy dữ liệu của đại lý Hải Anh ạ (chỉ cần ô ghi chú trong Sheet Công nợ ghi ĐL Hải Anh thì các dữ liệu của dòng đó sẽ tự chuyển sang ô tương ứng trong Sheet ĐL Hải Anh)
Em xin cảm ơn mọi người ạ.
View attachment 273635View attachment 273636
Trước tiên xin có đôi điều cùng bạn:
Sheet bạn ghi "công nợ tháng 3" được hiểu đó là sheet để nhập dữ liệu ban đầu cho nên theo mình nên:
1) Thêm cột mã đại lý trước cột tên đại lý (Cái lợi của việc đặt mã là rất gọn và tiện khi dùng hàm hoặc code để kết chuyển dữ liệu hơn là dùng tên dễ xảy ra sai sót )
2) phần khách trả tiền chỉ nên thiết kế là: 01 cột ghi diễn giải tiền đặt trước hay tiền trả nợ; tiền mặt hay chuyển khoản ....; 01 cột ghi số tiền khách trả; 01 cột ghi kết chuyển công nợ để biết (Số dương là dư có; số âm là dư nợ)
Nếu bạn đồng ý phương án đó và nói rõ hơn những yêu cầu của mình, có thể tôi sẽ giúp được bạn
 
Trước tiên xin có đôi điều cùng bạn:
Sheet bạn ghi "công nợ tháng 3" được hiểu đó là sheet để nhập dữ liệu ban đầu cho nên theo mình nên:
1) Thêm cột mã đại lý trước cột tên đại lý (Cái lợi của việc đặt mã là rất gọn và tiện khi dùng hàm hoặc code để kết chuyển dữ liệu hơn là dùng tên dễ xảy ra sai sót )
2) phần khách trả tiền chỉ nên thiết kế là: 01 cột ghi diễn giải tiền đặt trước hay tiền trả nợ; tiền mặt hay chuyển khoản ....; 01 cột ghi số tiền khách trả; 01 cột ghi kết chuyển công nợ để biết (Số dương là dư có; số âm là dư nợ)
Nếu bạn đồng ý phương án đó và nói rõ hơn những yêu cầu của mình, có thể tôi sẽ giúp được bạn
vâng em cảm ơn ạ.bản của em đã có bảng đó rồi ạ. Và em đang có tìm hiểu 1 chút thì học được đoạn code như này.
Vấn đề là ở dòng thứ 5 -> Nó sẽ lấy tên khách hàng (KH) ở trong 1 ô định trước của Bảng kê chi tiết để lọc ra tên Khách hàng, nhưng em muốn nó lọc theo kiểu bắt đầu với chữ cái. Ví dụ như : ĐL Hải Anh thì sẽ ra cả ĐL Hải Anh (TTT) lần 1 và ĐL Hải Anh (TTT) lần 2 ạ. Chứ để như này thì nó chỉ lọc ĐL Hải Anh và bỏ qua những cái khác. Em cảm ơn trước!

Sub Bang_ke()
Dim I As Long, K As Long, Dcuoi As Long, KH As String
Dim Rng_N As Range
Dim Rng_D As Range
KH = Sheet4.Range("I2").Value
Dcuoi = Sheet3.Range("A" & Rows.Count).End(xlUp).Row
Set Rng_N = Sheet3.Range("A3:M" & Dcuoi)
Set Rng_D = Sheet4.Range("A7:M" & Dcuoi + 6)
Sheet4.Range("A7:M10000").Clear
K = 0
For I = 1 To Rng_N.Rows.Count
If KH = Rng_N(I, 13) Then
K = K + 1
Rng_D(K, 1) = Rng_N(I, 1)
Rng_D(K, 2) = Rng_N(I, 2)
Rng_D(K, 3) = Rng_N(I, 3)
Rng_D(K, 4) = Rng_N(I, 4)
Rng_D(K, 5) = Rng_N(I, 5)
Rng_D(K, 6) = Rng_N(I, 6)
Rng_D(K, 7) = Rng_N(I, 7)
Rng_D(K, 8) = Rng_N(I, 8)
Rng_D(K, 9) = Rng_N(I, 9)
Rng_D(K, 10) = Rng_N(I, 10)
Rng_D(K, 11) = Rng_N(I, 11)
Rng_D(K, 12) = Rng_N(I, 12)
Rng_D(K, 13) = Rng_N(I, 13)

End If
Next
End Sub
 

File đính kèm

vâng em cảm ơn ạ.bản của em đã có bảng đó rồi ạ. Và em đang có tìm hiểu 1 chút thì học được đoạn code như này.
Vấn đề là ở dòng thứ 5 -> Nó sẽ lấy tên khách hàng (KH) ở trong 1 ô định trước của Bảng kê chi tiết để lọc ra tên Khách hàng, nhưng em muốn nó lọc theo kiểu bắt đầu với chữ cái. Ví dụ như : ĐL Hải Anh thì sẽ ra cả ĐL Hải Anh (TTT) lần 1 và ĐL Hải Anh (TTT) lần 2 ạ. Chứ để như này thì nó chỉ lọc ĐL Hải Anh và bỏ qua những cái khác. Em cảm ơn trước!

Sub Bang_ke()
Dim I As Long, K As Long, Dcuoi As Long, KH As String
Dim Rng_N As Range
Dim Rng_D As Range
KH = Sheet4.Range("I2").Value
Dcuoi = Sheet3.Range("A" & Rows.Count).End(xlUp).Row
Set Rng_N = Sheet3.Range("A3:M" & Dcuoi)
Set Rng_D = Sheet4.Range("A7:M" & Dcuoi + 6)
Sheet4.Range("A7:M10000").Clear
K = 0
For I = 1 To Rng_N.Rows.Count
If KH = Rng_N(I, 13) Then
K = K + 1
Rng_D(K, 1) = Rng_N(I, 1)
Rng_D(K, 2) = Rng_N(I, 2)
Rng_D(K, 3) = Rng_N(I, 3)
Rng_D(K, 4) = Rng_N(I, 4)
Rng_D(K, 5) = Rng_N(I, 5)
Rng_D(K, 6) = Rng_N(I, 6)
Rng_D(K, 7) = Rng_N(I, 7)
Rng_D(K, 8) = Rng_N(I, 8)
Rng_D(K, 9) = Rng_N(I, 9)
Rng_D(K, 10) = Rng_N(I, 10)
Rng_D(K, 11) = Rng_N(I, 11)
Rng_D(K, 12) = Rng_N(I, 12)
Rng_D(K, 13) = Rng_N(I, 13)

End If
Next
End Sub
Dữ liệu cột M của Sh ChiTietBanHang tại sao lại có những ô trống?
Khi lấy dữ liệu thì những dòng này thế nào bỏ qua hay sao?
Nên có 1 Sh để ghi Danh mục KH (có tên KH và mã khách hàng) sẽ rất tiện khi tính toán thống kê.
Tên khách hàng của Cột M Sh ChiTietBanHang có vẻ không đồng nhất với tên KH trong Sh CongNoDaiLy.
Bạn xem file và làm theo hướng dẫn. Click chọn I2 xong sẽ có kết quả.
Bài này hình như làm được bằng ADO (nhưng tôi thì không thạo ADO nên chào thua)
 

File đính kèm

Dữ liệu cột M của Sh ChiTietBanHang tại sao lại có những ô trống?
Khi lấy dữ liệu thì những dòng này thế nào bỏ qua hay sao?
Nên có 1 Sh để ghi Danh mục KH (có tên KH và mã khách hàng) sẽ rất tiện khi tính toán thống kê.
Tên khách hàng của Cột M Sh ChiTietBanHang có vẻ không đồng nhất với tên KH trong Sh CongNoDaiLy.
Bạn xem file và làm theo hướng dẫn. Click chọn I2 xong sẽ có kết quả.
Bài này hình như làm được bằng ADO (nhưng tôi thì không thạo ADO nên chào thua)
vâng em cảm ơn nhiều ạ.
1. Trống thì em bỏ qua ạ, tại là trả tiền luôn không ghi nợ ai cả.
2. Có 2 SH danh sách khách hàng Lẻ & đại lý thôi ạ, tại bên em chưa dùng đến mã khách hàng bao giờ.
3. Tại chưa hết tháng 3 nên chưa chốt công nợ và danh sách nên nó vẫn đang là tháng 2 ạ, a thông cảm vì bất tiện này.
4. Em xem trên YTB rồi học lỏm được chút đó nên cũng không rõ nguồn code từ đâu haha :sweatdrop:
Bài đã được tự động gộp:

Dữ liệu cột M của Sh ChiTietBanHang tại sao lại có những ô trống?
Khi lấy dữ liệu thì những dòng này thế nào bỏ qua hay sao?
Nên có 1 Sh để ghi Danh mục KH (có tên KH và mã khách hàng) sẽ rất tiện khi tính toán thống kê.
Tên khách hàng của Cột M Sh ChiTietBanHang có vẻ không đồng nhất với tên KH trong Sh CongNoDaiLy.
Bạn xem file và làm theo hướng dẫn. Click chọn I2 xong sẽ có kết quả.
Bài này hình như làm được bằng ADO (nhưng tôi thì không thạo ADO nên chào thua)
Em hơi đi đường tắt xíu, vừa biết đến VBA hôm qua giờ nhìn có đoạn code này của a, a có thể nói qua chức năng dòng lệnh đó để em tiện học về nó rồi làm theo và áp dụng được không ạ (em bỏ đoạn code tháng năm vì file này chỉ có nội dung của tháng 3 nên cho vào là bị thừa công năng)
.....
Dim KQ()
.....
ReDim KQ(1 To UBound(Arr), 1 To UBound(Arr, 2))
For I = 1 To UBound(Arr)
If IsDate(Arr(I, 1)) Then
If UCase(Arr(I, 13)) Like ("*" & KH & "*") Then
K = K + 1
For j = 1 To UBound(Arr, 2)
KQ(K, j) = Arr(I, j)
Next j

End If
End If
Next
Sheet4.Name = KH
Sheet4.[A7].Resize(K, UBound(Arr, 2)) = KQ
 
Lần chỉnh sửa cuối:
vâng em cảm ơn nhiều ạ.
Em hơi đi đường tắt xíu, vừa biết đến VBA hôm qua giờ nhìn có đoạn code này của a, a có thể nói qua chức năng dòng lệnh đó để em tiện học về nó rồi làm theo và áp dụng được không ạ (em bỏ đoạn code tháng năm vì file này chỉ có nội dung của tháng 3 nên cho vào là bị thừa công năng)
.....
Dim KQ()
.....
1/ReDim KQ(1 To UBound(Arr), 1 To UBound(Arr, 2))
2/For I = 1 To UBound(Arr)
3/ If IsDate(Arr(I, 1)) Then
4/ If UCase(Arr(I, 13)) Like ("*" & KH & "*") Then
5/ K = K + 1
6/ For j = 1 To UBound(Arr, 2)
7/ KQ(K, j) = Arr(I, j)
8/ Next j

End If
End If
Next
9/Sheet4.Name = KH
10/Sheet4.[A7].Resize(K, UBound(Arr, 2)) = KQ
1/"... bỏ đoạn code tháng năm vì file này chỉ có nội dung của tháng 3 nên cho vào là bị thừa công năng" . Dòng lệnh mà bạn bỏ thực ra không nhiều và không ảnh hưởng tới kết quả (đó là đối với dữ liệu bài này)- nhưng nếu dữ liệu có cả ngày tháng của 2,3 tháng hay cả năm hay cả nhiều năm thì nó sẽ rất hữu ích nếu chỉ lấy dữ liệu của một khoảng thời gian nào đó.
2/Tôi không được học cơ bản nên chỉ có thể giải thíc nôm na thế này:
1: khai báo kích thước của mảng kết quả.
2: duyệt qua từng dòng của mảng nguồn (mảng cần lấy dữ liệu) i=1,2,3 = dòng đầu tiên, dong kế tiếp của mảng nguồn
3:Dùng Hàm IsDate để kiểm tra xem phần tử thứ i cột 1 của mảng nguồn (tức là (Arr(i,1)) có phải là dữ liệu kiểu ngày tháng không.
4:nếu là ngày tháng thì Chuyển phần tử (arr(i,13) =Dòng i cột M ấy thành chữ Hoa (Ucase(Arr(i,13)); toán tử Like là toán tử so sánh. tức là so sánh Mn=Arr(i,13)Chữ HOA với TEN DL có các ký tự đại diện ở đầu và ở cuối (Như kiểu ĐL HẢI ANH (TT lần 1) thì cái (TT lần 1 ấy) là *)
5: nếu trùng(thỏa) thì lấy dòng đó và số thứ tự của dòng đó trong mảng kQ(kết quả) là k.
6: duyệt từng phần tử của dòng được chọn gán vào mảng kết quả KQ(k,j)=Arr(i,j)
7,8: tiếp tục vòng lặp với i, j lần lược là 2,3,4,5 ....
9/Đổi tên Sheet4 : Sh4 lúc này có tên là giá trị ô J2 (ô điều kiện lọc)
10/ gán mảng KQ xuống Sh vừa đặt tên
Dòng 9 và 10 có thể hoán đổi vị trí cho nhau.
P/S: Như đã đặt vấn đề là bài này hình như có thể giải bằng ADO. Nhưng tôi không thạo nên bạn nào có thể giải nó bằng ADO thì đưa uo lên để tôi và những bạn khác được học tập thêm.
Giải thích nôm na theo ý hiểu của bản thân Anh chị nào xem qua đừng cười nhé, và nếu có sai thì đính chính để tôi được mở rộng tầm mắt. Trân trọng cảm ơn!
 
Lần chỉnh sửa cuối:
1/"... bỏ đoạn code tháng năm vì file này chỉ có nội dung của tháng 3 nên cho vào là bị thừa công năng" . Dòng lệnh mà bạn bỏ thực ra không nhiều và không ảnh hưởng tới kết quả (đó là đối với dữ liệu bài này)- nhưng nếu dữ liệu có cả ngày tháng của 2,3 tháng hay cả năm hay cả nhiều năm thì nó sẽ rất hữu ích nếu chỉ lấy dữ liệu của một khoảng thời gian nào đó.
2/Tôi không được học cơ bản nên chỉ có thể giải thíc nôm na thế này:
1: khai báo kích thước của mảng kết quả.
2: duyệt qua từng dòng của mảng nguồn (mảng cần lấy dữ liệu) i=1,2,3 = dòng đầu tiên, dong kế tiếp của mảng nguồn
3:Dùng Hàm IsDate để kiểm tra xem phần tử thứ i cột 1 của mảng nguồn (tức là (Arr(i,1)) có phải là dữ liệu kiểu ngày tháng không.
4:nếu là ngày tháng thì Chuyển phần tử (arr(i,13) =Dòng i cột M ấy thành chữ Hoa (Ucase(Arr(i,13)); toán tử Like là toán tử so sánh. tức là so sánh Mn=Arr(i,13)Chữ HOA với TEN DL có các ký tự đại diện ở đầu và ở cuối (Như kiểu ĐL HẢI ANH (TT lần 1) thì cái (TT lần 1 ấy) là *)
5: nếu trùng(thỏa) thì lấy dòng đó và số thứ tự của dòng đó trong mảng kQ(kết quả) là k.
6: duyệt từng phần tử của dòng được chọn gán vào mảng kết quả KQ(k,j)=Arr(i,j)
7,8: tiếp tục vòng lặp với i, j lần lược là 2,3,4,5 ....
9/Đổi tên Sheet4 : Sh4 lúc này có tên là giá trị ô J2 (ô điều kiện lọc)
10/ gán mảng KQ xuống Sh vừa đặt tên
Dòng 9 và 10 có thể hoán đổi vị trí cho nhau.
P/S: Như đã đặt vấn đề là bài này hình như có thể giải bằng ADO. Nhưng tôi không thạo nên bạn nào có thể giải nó bằng ADO thì đưa uo lên để tôi và những bạn khác được học tập thêm.
Giải thích nôm na theo ý hiểu của bản thân Anh chị nào xem qua đừng cười nhé, và nếu có sai thì đính chính để tôi được mở rộng tầm mắt. Trân trọng cảm ơn!
ADO thì kết quả cũng y như duyệt qua mảng dữ liệu để lấy dòng thỏa điều kiện thôi.
 
ADO thì kết quả cũng y như duyệt qua mảng dữ liệu để lấy dòng thỏa điều kiện thôi.
Đọc code của Anh SA_DQ thấy code dùng ADO ngắn, chạy nhanh, kết quả chính xác mà chẳng hiểu gì. Chính vì vậy Nên tôi muốn Anh chị ai biết thì giải bài này bằng ADO, nếu có thể chú thích từng dòng code để tôi hoặc các bạn học tập thêm.
 
Đọc code của Anh SA_DQ thấy code dùng ADO ngắn, chạy nhanh, kết quả chính xác mà chẳng hiểu gì. Chính vì vậy Nên tôi muốn Anh chị ai biết thì giải bài này bằng ADO, nếu có thể chú thích từng dòng code để tôi hoặc các bạn học tập thêm.
Truy vấn ADO SQL. Không biết kết quả có như thớt yêu cầu không?
 

File đính kèm

Web KT

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

Back
Top Bottom