Lấy dữ liệu tổng hợp khi dữ liệu thay đổi

Liên hệ QC

satthuvae

Thành viên thường trực
Tham gia
12/3/09
Bài viết
381
Được thích
52
Em chào Anh/Chị
Em có sheet 01 và sheet 03, dữ liệu của em ở sheet 01 là dữ liệu thay đổi ạ.
Em nhờ Anh/Chị xem có cách nào tự động lấy thông tin ở sheet 01 sang sheet 03 theo điều kiện ạ. Lý do vì sheet 01 của em thay đổi ạ, em không biết cách nào có thể tự động lấy dữ liệu sang sheet 03 không ạ.

Em gửi ví dụ cụ thể ạ
Số lượng cột L sheet 01 có thể thay đổi ạ, nếu có số lượng là 1 thì thông tin em cần lấy sang bên sheet 03 là 1 ạ, nếu 02 thì sang 03 là 2 lần ạ, tham chiếu ở đây là theo ô ở cột C ạ,

Thông tin sheet 01 ạ
GPE
STTHọ và tênMã số thuếLoạiSố CMND,
Hộ chiếu
Ủy quyền
(tích dấu "x")
Thu nhập
chịu thuế
Số NPT
HTKK tự động
1Trần Thị Ngân80008480019933CMND168268362197,445,1912
2Mai Thị Hòa80018148234420CMND168303681210,267,9482
3Nguyễn Thị Huê80088010696479Thẻ CCCD035187004382174,153,3951

Em muốn nhờ Anh/Chị có nút tự động lấy sang thông tin ở sheet 03 ạ
GPE
GPE
STTHọ và tênMã số thuế
1Trần Thị Ngân80008480019933
2Trần Thị Ngân80008480019933
3Mai Thị Hòa80018148234420
4Mai Thị Hòa80018148234420
5Nguyễn Thị Huê80088010696479

Em xin cám ơn Anh/Chị nhiều ạ
Em gửi File đính kèm, Nhờ Anh/Chị giúp em ạ
 

File đính kèm

  • Tự động lấy dữ liệu theo điều kiện.xlsb
    92 KB · Đọc: 16
Em chào Anh/Chị
Em có sheet 01 và sheet 03, dữ liệu của em ở sheet 01 là dữ liệu thay đổi ạ.
Em nhờ Anh/Chị xem có cách nào tự động lấy thông tin ở sheet 01 sang sheet 03 theo điều kiện ạ. Lý do vì sheet 01 của em thay đổi ạ, em không biết cách nào có thể tự động lấy dữ liệu sang sheet 03 không ạ.
Em gửi File đính kèm, Nhờ Anh/Chị giúp em ạ
Trong khi chờ đợi các giải pháp khác. hãy thử tham khảo đoạn code sau:
Mã:
Option Explicit

Sub Them()
Dim i&, j&, Lr&, t&
Dim Arr(), KQ()
Dim Ws As Worksheet, Sh As Worksheet
Set Ws = Sheets("01")
Lr = Ws.Cells(Rows.Count, 2).End(xlUp).Row - 1
Arr = Ws.Range("A4:L" & Lr).Value
ReDim KQ(1 To UBound(Arr), 1 To 3)
For i = 1 To UBound(Arr)
    If Arr(i, 12) <> Empty And IsNumeric(Arr(i, 12)) Then
        For j = 1 To Arr(i, 12)
            t = t + 1: KQ(t, 1) = t
            KQ(t, 2) = Arr(i, 2)
            KQ(t, 3) = Arr(i, 3)
        Next j
    End If
Next i
If t Then
    Set Sh = Sheets("03")
        Sh.Range("A3").Resize(100000, 3).ClearContents
        Sh.Range("A3").Resize(t, 3) = KQ
End If
MsgBox "Xong"
End Sub
 

File đính kèm

  • Tự động lấy dữ liệu theo điều kiện.xlsb
    75.7 KB · Đọc: 8
Upvote 0
Trong khi chờ đợi các giải pháp khác. hãy thử tham khảo đoạn code sau:
Mã:
Option Explicit

Sub Them()
Dim i&, j&, Lr&, t&
Dim Arr(), KQ()
Dim Ws As Worksheet, Sh As Worksheet
Set Ws = Sheets("01")
Lr = Ws.Cells(Rows.Count, 2).End(xlUp).Row - 1
Arr = Ws.Range("A4:L" & Lr).Value
ReDim KQ(1 To UBound(Arr), 1 To 3)
For i = 1 To UBound(Arr)
    If Arr(i, 12) <> Empty And IsNumeric(Arr(i, 12)) Then
        For j = 1 To Arr(i, 12)
            t = t + 1: KQ(t, 1) = t
            KQ(t, 2) = Arr(i, 2)
            KQ(t, 3) = Arr(i, 3)
        Next j
    End If
Next i
If t Then
    Set Sh = Sheets("03")
        Sh.Range("A3").Resize(100000, 3).ClearContents
        Sh.Range("A3").Resize(t, 3) = KQ
End If
MsgBox "Xong"
End Sub
Em cám ơn Anh ạ.
Anh ơi vì em file sheet "01" dữ liệu thay đổi liên tục, em lại sử dụng marco ở sheet 01, nên hình như bị chồng chéo không chạy được dữ liệu khi e copy code của Anh ạ.
Nhờ Anh xem giúp em với ạ, báo lỗi như vậy ạ. Em không biết lỗi ở đâu ạ, Em gửi file nhờ Anh xem giúp em.
Em cám ơn Anh ạ

1690248620397.png
 

File đính kèm

  • Tự động lấy dữ liệu.xlsb
    570.7 KB · Đọc: 2
Upvote 0
Em cám ơn Anh ạ.
Anh ơi vì em file sheet "01" dữ liệu thay đổi liên tục, em lại sử dụng marco ở sheet 01, nên hình như bị chồng chéo không chạy được dữ liệu khi e copy code của Anh ạ.
Nhờ Anh xem giúp em với ạ, báo lỗi như vậy ạ. Em không biết lỗi ở đâu ạ, Em gửi file nhờ Anh xem giúp em.
Em cám ơn Anh ạ

View attachment 293080
Xem file.
Trong phạm vi hiểu biết nông cạn của tôi, tôi nhận thấy:
1/Bạn đã sửa lại code, tuy nhiên lại sửa sai: dòng ....Cells(d, 12).End(xlUp).Rows....
mà đúng phải là .......Cells(d, 2).End(xlUp).Row.....
2/Và hình như là 1 chỗ nào đó thiếu End if thì phải.
* Tôi đã sửa lại cả 1/ và 2/ tuy nhiên cũng chưa test kỹ được.
3/Tôi mạn phép tác giả code Sub Tach_01_02
3.1/ Thêm Application.EnableEvents = False và Application.EnableEvents = True ) ở đầu và cuối Sub để khi chạy sub này sẽ không kích hoạt Sub sự kiện thay đổi Cột L/Sheets("01")
3.2/Trong file bạn để Ô 2001/Sheets("01")="Tổng cộng". Như vậy nếu dữ liệu được lấy vào dArr1 nhiều hơn 2001 dòng (hay K1>2000) thì sao? Câu hỏi này dành cho bạn tìm hiểu và giải quyết. Hãy coi đây là 1 bài tập và quyết tâm phải vượt qua nhé.
3.3/Trong Sub Tach_01_02() Do file không có sheets("02") do vậy chạy sẽ báo lỗi (không tìm thấy Sheet). Tôi đã vô hiệu đoạn code báo lỗi này.
4/ Khuyên bạn: nếu dùng dic (trong Public Sub hoặc Sub) thì trước khi kết thúc Public Sub hoặc Sub nên set dic=nothing để giải phóng dic (tiết kiệm tài nguyên máy), trừ trường hợp dic ấy còn được dùng trong các Public Sub hoặc Sub khác.
Chúc bạn thành công.
 

File đính kèm

  • Tự động lấy dữ liệu.xlsb
    276.6 KB · Đọc: 5
Upvote 0
Xem file.
Trong phạm vi hiểu biết nông cạn của tôi, tôi nhận thấy:
1/Bạn đã sửa lại code, tuy nhiên lại sửa sai: dòng ....Cells(d, 12).End(xlUp).Rows....
mà đúng phải là .......Cells(d, 2).End(xlUp).Row.....
2/Và hình như là 1 chỗ nào đó thiếu End if thì phải.
* Tôi đã sửa lại cả 1/ và 2/ tuy nhiên cũng chưa test kỹ được.
3/Tôi mạn phép tác giả code Sub Tach_01_02
3.1/ Thêm Application.EnableEvents = False và Application.EnableEvents = True ) ở đầu và cuối Sub để khi chạy sub này sẽ không kích hoạt Sub sự kiện thay đổi Cột L/Sheets("01")
3.2/Trong file bạn để Ô 2001/Sheets("01")="Tổng cộng". Như vậy nếu dữ liệu được lấy vào dArr1 nhiều hơn 2001 dòng (hay K1>2000) thì sao? Câu hỏi này dành cho bạn tìm hiểu và giải quyết. Hãy coi đây là 1 bài tập và quyết tâm phải vượt qua nhé.
3.3/Trong Sub Tach_01_02() Do file không có sheets("02") do vậy chạy sẽ báo lỗi (không tìm thấy Sheet). Tôi đã vô hiệu đoạn code báo lỗi này.
4/ Khuyên bạn: nếu dùng dic (trong Public Sub hoặc Sub) thì trước khi kết thúc Public Sub hoặc Sub nên set dic=nothing để giải phóng dic (tiết kiệm tài nguyên máy), trừ trường hợp dic ấy còn được dùng trong các Public Sub hoặc Sub khác.
Chúc bạn thành công.
Dạ em cám ơn anh ạ
Do em không hiểu về cách vận hành, em nhờ Anh/Chị trên diễn đàn ạ.
Anh ơi, ví dụ thay đổi số lượng ở sheet 01 ấy ạ, e ấn nút vẫn không chạy sang sheet 03 ạ
Nhờ Anh xem lại giúp em với ạ. Em cám ơn ạ
1690260706076.png

1690260579466.png
 

File đính kèm

  • Tự động lấy dữ liệu (1).xlsb
    280 KB · Đọc: 1
Upvote 0
Dạ em cám ơn anh ạ
Do em không hiểu về cách vận hành, em nhờ Anh/Chị trên diễn đàn ạ.
Anh ơi, ví dụ thay đổi số lượng ở sheet 01 ấy ạ, e ấn nút vẫn không chạy sang sheet 03 ạ
Nhờ Anh xem lại giúp em với ạ. Em cám ơn ạ
View attachment 293091

View attachment 293090
Bạn chạy code Sub Tach_01_02() sau đó thử gõ số nào đó vào ô nào đó của cột L/Sheets(01) và xem điều gì ở sheets("03"), Thử lại với ô khác trên cột L, hoặc thay lại bằng số khác xem sao.
nếu không thấy kết quả thay đổi.
Đóng file/ mở lại và thử như các bước trên
 
Upvote 0
Bạn chạy code Sub Tach_01_02() sau đó thử gõ số nào đó vào ô nào đó của cột L/Sheets(01) và xem điều gì ở sheets("03"), Thử lại với ô khác trên cột L, hoặc thay lại bằng số khác xem sao.
nếu không thấy kết quả thay đổi.
Đóng file/ mở lại và thử như các bước trên
Anh ơi
Em làm mấy lần, ấn nút chạy ra số liệu sheet 01,2 rùi ạ. Em vẫn không thấy sheet 03 có dự liệu ạ.
Nhờ Anh xem lại giúp e với ạ.
Em cám ơn Anh ạ
 

File đính kèm

  • Tự động lấy dữ liệu (1).xlsb
    281.9 KB · Đọc: 3
Upvote 0
Anh ơi
Em làm mấy lần, ấn nút chạy ra số liệu sheet 01,2 rùi ạ. Em vẫn không thấy sheet 03 có dự liệu ạ.
Nhờ Anh xem lại giúp e với ạ.
Em cám ơn Anh ạ
Mình nghĩ nội dung mong muốn của bạn dùng công thức cũng được mà, vì dữ liệu có nhiều lắm đâu nhỉ ?
 
Upvote 0
Anh ơi
Em làm mấy lần, ấn nút chạy ra số liệu sheet 01,2 rùi ạ. Em vẫn không thấy sheet 03 có dự liệu ạ.
Nhờ Anh xem lại giúp e với ạ.
Em cám ơn Anh ạ
Xin lỗi tôi sai, do không test
bạn xem lại file và thử lại như cách tôi đã hướng dẫn.
 

File đính kèm

  • Tự động lấy dữ liệu.xlsb
    269.8 KB · Đọc: 8
Upvote 0
Xin lỗi tôi sai, do không test
bạn xem lại file và thử lại như cách tôi đã hướng dẫn.
Anh ơi
Em test lại sau khi đóng và ấn nút chạy ấy ạ
Sheet 03 không hiện số liệu ạ, nhờ anh xem lại giúp e ạ. Sheet 01 có thông tin tổng là 11 ạ.
Em nhờ Anh xem lại giúp em một lần nữa ạ.
Cám ơn anh nhiều
1690273613913.png
1690273664410.png
 

File đính kèm

  • Tự động lấy dữ liệu (2).xlsb
    276.8 KB · Đọc: 5
Upvote 0
Anh ơi
Em test lại sau khi đóng và ấn nút chạy ấy ạ
Sheet 03 không hiện số liệu ạ, nhờ anh xem lại giúp e ạ. Sheet 01 có thông tin tổng là 11 ạ.
Em nhờ Anh xem lại giúp em một lần nữa ạ.
Cám ơn anh nhiều
Cho hỏi bạn :
1/ "ấn nút" là ấn nút nào? ở sheet nào? Bởi vì file bạn gửi tôi chẳng có nút nào ở sh01 và sh03, còn ở sh TongHop có 2 nút và 2 nút ấy gán với 2 sub khác chứ không phải Sub Them.
2/ Các số của cột L/sheets("01") ấy là do bạn nhập tay vào hay do code cua Sub nào đó thêm vào?
3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?
Chân thành khuyên bạn: Nên tìm hiểu kỹ trước khi hỏi, phát biểu.
 
Upvote 0
Cho hỏi bạn :
1/ "ấn nút" là ấn nút nào? ở sheet nào? Bởi vì file bạn gửi tôi chẳng có nút nào ở sh01 và sh03, còn ở sh TongHop có 2 nút và 2 nút ấy gán với 2 sub khác chứ không phải Sub Them.
2/ Các số của cột L/sheets("01") ấy là do bạn nhập tay vào hay do code cua Sub nào đó thêm vào?
3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?
Chân thành khuyên bạn: Nên tìm hiểu kỹ trước khi hỏi, phát biểu.
Anh ơi em xin lỗi vì viết không rõ ạ
Ở sheet "tổng hợp" em ấn nút "Trả kết quả" chạy ra dữ liệu sheet 01 ạ, trong cột L ở sheet 01 ấy ạ, có danh sách 11 cá nhân ạ.
Ý của e là mỗi khi ấn lấy "trả kết quả" thì cột L ở sheet 01 có thể thay đổi ạ, khi thay đổi như vậy thì sang sheet 03 lấy tự động danh sách ạ.

1690276640928.png
1690276764344.png
Chạy ra kết quả đây anh ạ
Ý của e là sheet 03 sau khi ấn nút "trả kết quả" hiện theo sheet 01 về danh sách ạ, như e chụp ảnh và gửi anh ạ File đính kèm
1690276977080.png
Có gì em viết không rõ ý mong anh bỏ qua ạ.
Nhờ Anh xem lại giúp em 1 lần nữa ạ
Em cám ơn Anh ạ
 

File đính kèm

  • Tự động lấy dữ liệu (2).xlsb
    277.7 KB · Đọc: 3
Upvote 0
Anh ơi em xin lỗi vì viết không rõ ạ
Ở sheet "tổng hợp" em ấn nút "Trả kết quả" chạy ra dữ liệu sheet 01 ạ, trong cột L ở sheet 01 ấy ạ, có danh sách 11 cá nhân ạ.
Ý của e là mỗi khi ấn lấy "trả kết quả" thì cột L ở sheet 01 có thể thay đổi ạ, khi thay đổi như vậy thì sang sheet 03 lấy tự động danh sách ạ.

View attachment 293108
View attachment 293109
Chạy ra kết quả đây anh ạ
Ý của e là sheet 03 sau khi ấn nút "trả kết quả" hiện theo sheet 01 về danh sách ạ, như e chụp ảnh và gửi anh ạ File đính kèm
View attachment 293110
Có gì em viết không rõ ý mong anh bỏ qua ạ.
Nhờ Anh xem lại giúp em 1 lần nữa ạ
Em cám ơn Anh ạ
Vẫn câu hỏi cũ là bạn ấn nút nào và ở sheet nào?
 
Upvote 0
Em ấn nút marco "trả kết quả" ở sheet "tổng hợp" Anh ạ, em ấn nút này chạy ra kết quả ở sheet 01 anh ạ.
Em chụp ảnh ở cột L và M đó anh ạ có nút marco ạ.
Trước hết là 2 nút này được gán với 2 Sub và tôi đã nói ở bài trước là Sub Tach_01_02() tôi chỉ thêm 2 dòng Application.EnableEvents = False và Application.EnableEvents = True ) ở đầu và cuối Sub để khi chạy sub này sẽ không kích hoạt Sub sự kiện thay đổi Cột L/Sheets("01") và cũng không cố công tìm hiểu kết quả 2 sub này ra được gì, ổ đâu?
Trở lại vói vấn đề bạn nêu trên : tôi đã nhắc bạn là hẫy xem xét kỹ trước khi phát biểu rồi mà nhưng Các câu hỏi này ở bài #13 thì sao nhỉ:
"2/ Các số của cột L/sheets("01") ấy là do bạn nhập tay vào hay do code cua Sub nào đó thêm vào?
3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?
"
Bạn đã đọc đến nó chưa?
Nếu bạn đã đọc đến nó thì sao không trả lời?
Còn về ấn nút của sh TongHop thì nó chỉ ra dữ liệu của sheets("01") thôi và dĩ nhiên là Cột L của sheet này là do........ Câu hỏi 2 của tôi là muốn bạn xác nhận lại bởi vì code tôi viết ở sheet này là bắt sự kiện thay đổi ô nào đó của cột L này. Khi có sự thay đổi Sub Them được gọi và lúc này Sheets("03") sẽ có dữ liệu là kết quả của sub Them.
Bạn đã "3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?" chưa?. Nếu chưa thì thử 1 hoặc nhiều lần cho biết. Trên máy của tôi chạy êm, không lỗi gì, còn của bạn thì sao?
Bạn có UtraView không? tôi đã rất muốn liên hệ với bạn qua số zalo để khỏi phải trao đổi dài dòng trên diễn đàn xong không có số và nghĩ có thể bạn hoặc người khác cho rằng tôi có mưu đồ gì đó nên đành thôi.
 
Upvote 0
Mình đoán mò như ri hả...
 

File đính kèm

  • Tự động lấy dữ liệu theo điều kiện222.xlsb
    100.2 KB · Đọc: 17
Upvote 0
Trước hết là 2 nút này được gán với 2 Sub và tôi đã nói ở bài trước là Sub Tach_01_02() tôi chỉ thêm 2 dòng Application.EnableEvents = False và Application.EnableEvents = True ) ở đầu và cuối Sub để khi chạy sub này sẽ không kích hoạt Sub sự kiện thay đổi Cột L/Sheets("01") và cũng không cố công tìm hiểu kết quả 2 sub này ra được gì, ổ đâu?
Trở lại vói vấn đề bạn nêu trên : tôi đã nhắc bạn là hẫy xem xét kỹ trước khi phát biểu rồi mà nhưng Các câu hỏi này ở bài #13 thì sao nhỉ:
"2/ Các số của cột L/sheets("01") ấy là do bạn nhập tay vào hay do code cua Sub nào đó thêm vào?
3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?
"
Bạn đã đọc đến nó chưa?
Nếu bạn đã đọc đến nó thì sao không trả lời?
Còn về ấn nút của sh TongHop thì nó chỉ ra dữ liệu của sheets("01") thôi và dĩ nhiên là Cột L của sheet này là do........ Câu hỏi 2 của tôi là muốn bạn xác nhận lại bởi vì code tôi viết ở sheet này là bắt sự kiện thay đổi ô nào đó của cột L này. Khi có sự thay đổi Sub Them được gọi và lúc này Sheets("03") sẽ có dữ liệu là kết quả của sub Them.
Bạn đã "3/ giờ bạn thử gõ vào ô nào đó của cột G/Sheets("01") và enter xem sheets("03") có gì không?" chưa?. Nếu chưa thì thử 1 hoặc nhiều lần cho biết. Trên máy của tôi chạy êm, không lỗi gì, còn của bạn thì sao?
Bạn có UtraView không? tôi đã rất muốn liên hệ với bạn qua số zalo để khỏi phải trao đổi dài dòng trên diễn đàn xong không có số và nghĩ có thể bạn hoặc người khác cho rằng tôi có mưu đồ gì đó nên đành thôi.
Dạ em cám ơn Anh góp ý ạ
Bài đã được tự động gộp:

Mình đoán mò như ri hả...
Cám ơn bạn nhiều.
 
Upvote 0
Web KT
Back
Top Bottom