Cám ơn Anh nhiều ạ! em đã xem file thấy code của anh lấy tất cả dữ liệu trong file đang đóng về file đang mở rất ổn. Nhưng giờ e muốn lấy một phần dữ liệu theo phạm vi mong muốn của sheet, sheet 2trong file sheetdong_1 sang sheetmo_1(giữ nguyên màu sắc và định dạng) và sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi lại ạ!
Cám ơn Anh nhiều
Mong tin anh
Cám ơn Anh nhiều ạ! em đã xem file thấy code của anh lấy tất cả dữ liệu trong file đang đóng về file đang mở rất ổn. Nhưng giờ e muốn lấy một phần dữ liệu theo phạm vi mong muốn của sheet, sheet 2trong file sheetdong_1 sang sheetmo_1(giữ nguyên màu sắc và định dạng) và sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi lại ạ!
Cám ơn Anh nhiều
Mong tin anh
Cám ơn Anh nhiều ạ! em đã xem file thấy code của anh lấy tất cả dữ liệu trong file đang đóng về file đang mở rất ổn. Nhưng giờ e muốn lấy một phần dữ liệu theo phạm vi mong muốn của sheet, sheet 2trong file sheetdong_1 sang sheetmo_1(giữ nguyên màu sắc và định dạng) và sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi lại ạ!
Cám ơn Anh nhiều
Mong tin anh
Tôi đã nói ở một bài nào đó tôi không phải tuýp người tinh anh như người ta, nên không có khả năng đoán ý người khác, Do vậy ở bài này: bạn viết "....lấy một phần dữ liệu theo phạm vi mong muốn..." tôi hiểu là lấy dữ liệu ở 1 vùng nào đó, theo điều kiện cho trước (điều này VBA hoàn toàn có thể làm được). Nhưng đến đoạn "...sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi ...." Thì tôi thực sự căng não ra để tìm ý bạn muốn gì. 2 file bạn gửi gồm :file sheetdong_1 gồm những sheet có tô màu vàng vàng, ở 1 số cột (không đều nhau về số dòng); file sheetmo_1 gồm 1 sheet trong đó là nội dung của Sheet2/file sheetdong_1 được dán liên tiếp nhau.
Vậy thì "...sắp xếp theo trình tự lần lượt theo hàng..." ở đây là gì?. Chẳng phải là bản thân dữ liệu nguồn đã được sắp xếp theo hàng rồi còn gì?
Tôi gửi lại file SheetMo_1 để bạn tham khảo code (ở Modul 1) trong đó tôi đã nêu các trường hợp cần lấy dữ liệu và code có diễn giải từng dòng code. bạn ngâm cứu để thực hành cho quen nhé. Cũng là 1 lần tự mình viết code -sau quen rồi -khỏi phải đi hỏi, đúng không bạn?
Chúc thành công.
Tôi đã nói ở một bài nào đó tôi không phải tuýp người tinh anh như người ta, nên không có khả năng đoán ý người khác, Do vậy ở bài này: bạn viết "....lấy một phần dữ liệu theo phạm vi mong muốn..." tôi hiểu là lấy dữ liệu ở 1 vùng nào đó, theo điều kiện cho trước (điều này VBA hoàn toàn có thể làm được). Nhưng đến đoạn "...sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi ...." Thì tôi thực sự căng não ra để tìm ý bạn muốn gì. 2 file bạn gửi gồm :file sheetdong_1 gồm những sheet có tô màu vàng vàng, ở 1 số cột (không đều nhau về số dòng); file sheetmo_1 gồm 1 sheet trong đó là nội dung của Sheet2/file sheetdong_1 được dán liên tiếp nhau.
Vậy thì "...sắp xếp theo trình tự lần lượt theo hàng..." ở đây là gì?. Chẳng phải là bản thân dữ liệu nguồn đã được sắp xếp theo hàng rồi còn gì?
Tôi gửi lại file SheetMo_1 để bạn tham khảo code (ở Modul 1) trong đó tôi đã nêu các trường hợp cần lấy dữ liệu và code có diễn giải từng dòng code. bạn ngâm cứu để thực hành cho quen nhé. Cũng là 1 lần tự mình viết code -sau quen rồi -khỏi phải đi hỏi, đúng không bạn?
Chúc thành công.
Tôi đã nói ở một bài nào đó tôi không phải tuýp người tinh anh như người ta, nên không có khả năng đoán ý người khác, Do vậy ở bài này: bạn viết "....lấy một phần dữ liệu theo phạm vi mong muốn..." tôi hiểu là lấy dữ liệu ở 1 vùng nào đó, theo điều kiện cho trước (điều này VBA hoàn toàn có thể làm được). Nhưng đến đoạn "...sắp xếp theo trình tự lần lượt theo hàng. Nội dung mong muốn Anh xem trong hai file em gửi ...." Thì tôi thực sự căng não ra để tìm ý bạn muốn gì. 2 file bạn gửi gồm :file sheetdong_1 gồm những sheet có tô màu vàng vàng, ở 1 số cột (không đều nhau về số dòng); file sheetmo_1 gồm 1 sheet trong đó là nội dung của Sheet2/file sheetdong_1 được dán liên tiếp nhau.
Vậy thì "...sắp xếp theo trình tự lần lượt theo hàng..." ở đây là gì?. Chẳng phải là bản thân dữ liệu nguồn đã được sắp xếp theo hàng rồi còn gì?
Tôi gửi lại file SheetMo_1 để bạn tham khảo code (ở Modul 1) trong đó tôi đã nêu các trường hợp cần lấy dữ liệu và code có diễn giải từng dòng code. bạn ngâm cứu để thực hành cho quen nhé. Cũng là 1 lần tự mình viết code -sau quen rồi -khỏi phải đi hỏi, đúng không bạn?
Chúc thành công.
Dim NWs As Worksheet, WbMoi As Workbook, Ws As Worksheet
Dim file As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'For Each file In CreateObject("Scripting.FileSystemObject").GetFolder("C:\Users\Admin\Downloads\").Files( đường dẫn đến file chứa dữ liệu cần lấy.)
' If file.Name Like "sheetdong_*.xlsm" Then (tên file cần lấy dữ liệu)
' Set WbMoi = Workbooks.Open(file)
' For Each Ws In WbMoi.Sheets
I.1/====== ----Nêu là lây theo ðiêu kiên (co thê 1, 3 ... ðk
' If Ws.Name = "Ten Sheet muon lây du liêu" Then( tên sheet trong file cần lấy dữ liệu)
' Arr=Ten sh muôn lay dý lieu.range(" Vùng cân lây dý liêu"). value 'Gán vùng cân lây du liêu vào mang( tên sheet muốn lấy dữ liệu trường hợp tên sheet ở đây là b1 hoặc b2 thì ghi như nào ak?
' Redim KQ(1 to ubound(arr),1 to Ubound(arr,2) ' khai bao kich thuoc mang ket qua
' For i = 1 to Ubound(arr) ' duyet tung dong cua mang
' If Arr(i,côt cân so sanh)= "dieu kien ðê lay dý lieu" then ' so sanh du lieu voiDieu kien neu thoa man thi( cột cần so sánh ở đây được hiểu như nào ak? có phải là cột chứa dữ liệu trong sheet cần lấy hay là sao ak? cái này em gà quá.
' t=t+1
' For j = 1 To UBound(Arr, 2)
' KQ(t, j) = Arr(i, j) 'lay du lieu ðua vao mang kêt qua
' Next j
' End If
' Next i
'II/=======NÊU là Copy 1 vùng cua sheet nguon=========='
Dim NWs As Worksheet, WbMoi As Workbook, Ws As Worksheet
Dim file As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'For Each file In CreateObject("Scripting.FileSystemObject").GetFolder("C:\Users\Admin\Downloads\").Files( đường dẫn đến file chứa dữ liệu cần lấy.)
' If file.Name Like "sheetdong_*.xlsm" Then (tên file cần lấy dữ liệu)
' Set WbMoi = Workbooks.Open(file)
' For Each Ws In WbMoi.Sheets
I.1/====== ----Nêu là lây theo ðiêu kiên (co thê 1, 3 ... ðk
' If Ws.Name = "Ten Sheet muon lây du liêu" Then( tên sheet trong file cần lấy dữ liệu)
' Arr=Ten sh muôn lay dý lieu.range(" Vùng cân lây dý liêu"). value 'Gán vùng cân lây du liêu vào mang( tên sheet muốn lấy dữ liệu trường hợp tên sheet ở đây là b1 hoặc b2 thì ghi như nào ak?
' Redim KQ(1 to ubound(arr),1 to Ubound(arr,2) ' khai bao kich thuoc mang ket qua
' For i = 1 to Ubound(arr) ' duyet tung dong cua mang
' If Arr(i,côt cân so sanh)= "dieu kien ðê lay dý lieu" then ' so sanh du lieu voiDieu kien neu thoa man thi( cột cần so sánh ở đây được hiểu như nào ak? có phải là cột chứa dữ liệu trong sheet cần lấy hay là sao ak? cái này em gà quá.
' t=t+1
' For j = 1 To UBound(Arr, 2)
' KQ(t, j) = Arr(i, j) 'lay du lieu ðua vao mang kêt qua
' Next j
' End If
' Next i
'II/=======NÊU là Copy 1 vùng cua sheet nguon=========='
Mong Anh HUONG chỉ bảo thêm giúp cho, có mấy chỗ trong code của anh mà em không hiểu gì ak. cái phần em bôi màu xanh cho chữ trong code đó. Mong được Anh hướng dẫn chỉ dạy thêm cho.
Trân trọng/
I.1/====== ----Nêu là lây theo ðiêu kiên (co thê 1, 3 ... ðk
' If Ws.Name = "Ten Sheet muon lây du liêu" Then( tên sheet trong file cần lấy dữ liệu)
1/***' Arr=Ten sh muôn lay dý lieu.range(" Vùng cân lây dý liêu"). value 'Gán vùng cân lây du liêu vào mang( tên sheet muốn lấy dữ liệu trường hợp tên sheet ở đây là b1 hoặc b2 thì ghi như nào ak?
' Redim KQ(1 to ubound(arr),1 to Ubound(arr,2) ' khai bao kich thuoc mang ket qua
' For i = 1 to Ubound(arr) ' duyet tung dong cua mang
2/****' If Arr(i,côt cân so sanh)= "dieu kien ðê lay dý lieu" then ' so sanh du lieu voiDieu kien neu thoa man thi( cột cần so sánh ở đây được hiểu như nào ak? có phải là cột chứa dữ liệu trong sheet cần lấy hay là sao ak? cái này em gà quá.
Mong Anh HUONG chỉ bảo thêm giúp cho, có mấy chỗ trong code của anh mà em không hiểu gì ak. cái phần em bôi màu xanh cho chữ trong code đó. Mong được Anh hướng dẫn chỉ dạy thêm cho.
Trân trọng/
Tôi tạm dịch nôm na thế này nhé:
Dòng code : If Ws.Name = "Ten Sheet muon lây du liêu" Then '( tên sheet trong file cần lấy dữ liệu) <=> Khi duyệt qua từng sheet của file cần lấy dữ liệu thấy tên sheet thỏa (trùng ) với tên sheets cần lấy dữ liệu thì
1/*** Arr=Tên sheet muốn lấy dữ liệu . Range(Vùng cần lấy dữ liệu)
<=>Arr=Ws.Range("B5:Z200") ===> tức là ta gán vùng B5:Z200 của sheet vừa tìm thấy là mảng Arr "...trường hợp tên sheet ở đây là b1 hoặc b2 thì..." với b1 và b2 là tên sheet trong file cần lấy dữ liệu( hay nói cách khác là cần lấy dữ liệu trong 2 sheet có tên là b1 và b2 của file muốn lấy) Thì code sẽ là
Mã:
If Ws.name="B1" and Ws.name="B2" then
Arr=Ws.Range("B5:Z200")
......
2/*** Dòng code: For i = 1 to Ubound(arr) ' duyet tung dong cua mang If Arr(i,côt cân so sanh)= "dieu kien để lay dữ lieu" then
<=> duyệt qua từng dòng của mảng nếu thấy phần tử thứ i của cột cần so sánh trùng vói điều kiện để lấy dữ liệu thì làm gì đó...
Ví dụ: ta đã có mảng Arr=Sheets("b1").range("B5:Z200") trong đó cột 1 của mảng= cột B của sheet (có trường là ngày tháng), Điều kiện cần lấy dữ liệu là chọn ra các bản ghi có ngày tháng >= 1/2/2022 và <=28/20/2022. (tu=B1=1/2/2022; den=B2=28/2/2022)
Vậy code sẽ là:
Mã:
tu=Sh.[B1]: den=Sh.[B2]
For i = 1 to Ubound(arr)
if Arr(i,1)>= tu and Arr(i,1)=< den then
t=t+1
'...lấy dữ liệu gán vào mảng kết quả
KQ(t,1)=Arr(i,1)
KQ(t,2)=Arr(i,2)
.........
Tôi tạm dịch nôm na thế này nhé:
Dòng code : If Ws.Name = "Ten Sheet muon lây du liêu" Then '( tên sheet trong file cần lấy dữ liệu) <=> Khi duyệt qua từng sheet của file cần lấy dữ liệu thấy tên sheet thỏa (trùng ) với tên sheets cần lấy dữ liệu thì
1/*** Arr=Tên sheet muốn lấy dữ liệu . Range(Vùng cần lấy dữ liệu)
<=>Arr=Ws.Range("B5:Z200") ===> tức là ta gán vùng B5:Z200 của sheet vừa tìm thấy là mảng Arr "...trường hợp tên sheet ở đây là b1 hoặc b2 thì..." với b1 và b2 là tên sheet trong file cần lấy dữ liệu( hay nói cách khác là cần lấy dữ liệu trong 2 sheet có tên là b1 và b2 của file muốn lấy) Thì code sẽ là
Mã:
If Ws.name="B1" and Ws.name="B2" then
Arr=Ws.Range("B5:Z200")
......
2/*** Dòng code: For i = 1 to Ubound(arr) ' duyet tung dong cua mang If Arr(i,côt cân so sanh)= "dieu kien để lay dữ lieu" then
<=> duyệt qua từng dòng của mảng nếu thấy phần tử thứ i của cột cần so sánh trùng vói điều kiện để lấy dữ liệu thì làm gì đó...
Ví dụ: ta đã có mảng Arr=Sheets("b1").range("B5:Z200") trong đó cột 1 của mảng= cột B của sheet (có trường là ngày tháng), Điều kiện cần lấy dữ liệu là chọn ra các bản ghi có ngày tháng >= 1/2/2022 và <=28/20/2022. (tu=B1=1/2/2022; den=B2=28/2/2022)
Vậy code sẽ là:
Mã:
tu=Sh.[B1]: den=Sh.[B2]
For i = 1 to Ubound(arr)
if Arr(i,1)>= tu and Arr(i,1)=< den then
t=t+1
'...lấy dữ liệu gán vào mảng kết quả
KQ(t,1)=Arr(i,1)
KQ(t,2)=Arr(i,2)
.........
vấn đề chính ở đây là em chỉ muốn lấy một vài sheet trong file nguon sang file dich mà thôi chứ không muốn lấy tất cả như code mà anh đã viết gửi em có tên là copy dữ liệu nhiều sheet ssang sheet khác. ở code đó thì nó lại lấy tất cả các sheet có trong file nguồn anh ak
Mong nhận được sự quan tâm giúp đỡ từ Anh
vấn đề chính ở đây là em chỉ muốn lấy một vài sheet trong file nguon sang file dich mà thôi chứ không muốn lấy tất cả như code mà anh đã viết gửi em có tên là copy dữ liệu nhiều sheet ssang sheet khác. ở code đó thì nó lại lấy tất cả các sheet có trong file nguồn anh ak
Mong nhận được sự quan tâm giúp đỡ từ Anh
"e" là gì vậy bạn? Bạn không thể viết đầy đủ đại từ nhân xưng của tiếng mẹ đẻ à? Viết tắt như vậy nhiều người sẽ nghĩ là bạn thiếu tôn trọng người khác và thiếu trân trọng chính bản thân mình đấy.
Còn về code để lấy dữ liệu của nguyên 1 sh hay chỉ lấy một số dòng, và một số cột (thỏa mãn theo điều kiện nào đó) của chỉ 1 sh hay nhiều sh trong 1 workbook có nhiều sh, hoặc trong nhiều Workbook (nhiều file), hay gộp nhiều file vào 1 Sheet đều được mà. tất nhiên là nhanh chậm tùy thuộc vào dữ liệu có chuẩn hay không, có nhiều dữ liệu hay không.
Bạn tìm trên diễn đàn này có rất nhiều bài về gộp Sh. gộp file ... bằng nhiều giải pháp (Pivot table, Power Bi, ADO,....) để lựa chọn nhé.