Cách lọc dữ liệu từ sheet này sang sheet khác có điều kiện

Liên hệ QC

hoavinh84

Thành viên mới
Tham gia
25/9/13
Bài viết
13
Được thích
1
Đề bài: Có 2 Sheet. Sheet 1 là danh sách khách hàng lọc bằng Validation. Sheet 2 là các Hồ sơ về khách hàng. Câu hỏi là khi ấn tên khách hàng bất kỳ bên sheet 1 thì các thông tin về Hồ sơ của khách hàng bên sheet 2 sẽ nhảy ra đầy đủ. Cụ thể như file đính kèm. Cám ơn các ace rất nhiều./.
 

File đính kèm

  • DSKH.xls
    38 KB · Đọc: 770
Đề bài: Có 2 Sheet. Sheet 1 là danh sách khách hàng lọc bằng Validation. Sheet 2 là các Hồ sơ về khách hàng. Câu hỏi là khi ấn tên khách hàng bất kỳ bên sheet 1 thì các thông tin về Hồ sơ của khách hàng bên sheet 2 sẽ nhảy ra đầy đủ. Cụ thể như file đính kèm. Cám ơn các ace rất nhiều./.
1. Sửa lại cấu trúc một chút cho dễ làm nhé: Di chuyển ô B1 xuống ô B2, thêm cho ô B1 một cái tiêu đề trùng với tiêu đề ô A3 bên Sheet2 ("Tên" chẳng hạn).
2. Sử dụng code sau cho Sheet1:
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Sheet2.[A3].CurrentRegion.AdvancedFilter 2, [B1:B2], [A4:C4]
End Sub[/GPECODE]
 

File đính kèm

  • DSKH.rar
    9.9 KB · Đọc: 1,195
Cám ơn anh rất nhiều. Cho em hỏi thêm một chút. Nếu em để cái tiêu đề tên ở ô A2 để cho thẩm mỹ gióng sang B2 là tên luôn thì sẽ ko khớp với bên kia. Nếu làm thế thì phải sửa thế nào ạ.
 
Cám ơn anh rất nhiều. Cho em hỏi thêm một chút. Nếu em để cái tiêu đề tên ở ô A2 để cho thẩm mỹ gióng sang B2 là tên luôn thì sẽ ko khớp với bên kia. Nếu làm thế thì phải sửa thế nào ạ.
Muốn dùng AdvancedFilter trong trường hợp vùng tiêu chuẩn không sử dụng công thức thì bắt buộc phải có tiêu đề (ô B1) trùng với tiêu đề bên bảng dữ liệu gốc. Do đó, nếu vì tính thẩm mỹ này thì bạn cứ để kệ ô B1 có tiêu đề như vậy nhưng ẩn nó đi (bằng cách Format Cells thành dạng ;;; hoặc định dạng màu chữ) hoặc phải sử dụng công thức cho vùng tiêu chuẩn.
Một cách sử dụng công thức có thể tham khảo là thế này: Bạn sử dụng công thức sau cho ô A5 của Sheet1 và fill cho vùng cần chứa kết quả (3 cột, còn hàng thì bao nhiêu tùy bạn):
Mã:
=IF(ROW(1:1)>COUNTIF(Sheet2!$A:$A,$B$2),"",OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A)))
Nếu bạn nhìn thấy các con số 0 tại cột B, C khó ưa thì bạn có thể bỏ tùy chọn Show zero values hoặc thay công thức trên bởi công thức này:
Mã:
=IF(ROW(1:1)>COUNTIF(Sheet2!$A:$A,$B$2),"",[COLOR=#ff0000]IF(OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A))="","",[/COLOR]OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A))))
 
Cám ơn anh đá giúp :). Em tìm cái này mãi để làm giờ mới có người giúp, thế này thì tốt rồi :D. Cho em hỏi một chút nữa. Nếu Danh sách khách hàng nằm ở sheet khác mình lấy sang sheet 1 và bị trùng lặp và có khoảng trống. Làm sao để dùng validation thì ko bị trùng (chỉ hiện 1 tên) và ko có khoảng trống. Em đã xem nhiều code trên diễn đàn nhưng khi áp dụng vào sheet của mình lại ko được anh có thể hướng dẫn giúp em với nhé. Cám ơn anh nhiều./.
 
Cám ơn anh đá giúp :). Em tìm cái này mãi để làm giờ mới có người giúp, thế này thì tốt rồi :D. Cho em hỏi một chút nữa. Nếu Danh sách khách hàng nằm ở sheet khác mình lấy sang sheet 1 và bị trùng lặp và có khoảng trống. Làm sao để dùng validation thì ko bị trùng (chỉ hiện 1 tên) và ko có khoảng trống. Em đã xem nhiều code trên diễn đàn nhưng khi áp dụng vào sheet của mình lại ko được anh có thể hướng dẫn giúp em với nhé. Cám ơn anh nhiều./.
Thông thường trong trường hợp này nếu dùng code thì người ta hay sử dụng cách AdvancedFilter với tùy chọn Unique:=True để loại bỏ trùng, còn muốn không có khoảng trống thì thiết lập vùng tiêu chuẩn cho phù hợp là được, chẳng hạn vùng tiêu chuẩn có thể là thế này:
Tiêu đề cột
*
Cách thức là như thế, còn cụ thể ra sao thì lại phải tùy thuộc từng trường hợp. Bạn đưa file lên thì sẽ dễ nghiên cứu hơn.
 
Ví dụ Sheet 1 mình Validation từ Danh sách sheet3 (rất nhiều tên trùng nhau và khoảng trống), để validation ko có tên trùng và khoảng trắng mình sẽ làm thế nào ạ. Chi tiết file đính kèm.
 

File đính kèm

  • DSKH.xls
    45.5 KB · Đọc: 141
Ví dụ Sheet 1 mình Validation từ Danh sách sheet3 (rất nhiều tên trùng nhau và khoảng trống), để validation ko có tên trùng và khoảng trắng mình sẽ làm thế nào ạ. Chi tiết file đính kèm.
Cái vụ này mà nhờ em "Đít to" ra tay thì tuyệt vời: Bạn sử dụng code sau cho Sheet1
[GPECODE=vb]Private Sub Worksheet_Activate()
Dim Tmp, i As Long, S As String
Tmp = Sheet3.Range(Sheet3.[A1], Sheet3.[A65000].End(xlUp))
With CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Tmp)
If Not IsEmpty(Tmp(i, 1)) Then
S = Tmp(i, 1)
If Not .Exists(S) Then .Add S, ""
End If
Next
[B2].Validation.Delete
[B2].Validation.Add xlValidateList, , , Join(.Keys, ",")
End With
End Sub[/GPECODE]
Bây giờ bạn thử thêm danh sách vào Sheet3, có thể trùng, có thể cách quãng rồi chọn lại Sheet1, nhấn vào ô B2 xem sao.
 

File đính kèm

  • DSKH_1.rar
    13.9 KB · Đọc: 445
Cám ơn anh rất nhiều, làm phiền anh đêm hôm vẫn chưa được ngủ. Chúc anh ngủ ngon. Mai em sẽ làm phiền anh tiếp :)
 
Cho em hỏi: file Excel mình có sử dụng VBA. Để trên một máy chủ và share cho mọi người nhập dữ liệu và sử dụng, nhưng trên máy khác ko gọi được code VBA đã làm trong máy chủ ra để thực hiện. Anh có code nào để giúp máy con có thể dùng được VBA như máy chủ không ạ. Em cám ơn nhiều :)
 
Thân gửi anh nghiaphuc (Hoàng Nghĩa Phúc) cùng các ace diễn đàn. Em có thêm một câu hỏi nhỏ tiếp theo trong chủ đề này mà anh nghiaphuc đã trả lời cho em. Câu hỏi trước là cách lọc dữ liệu từ sheet này sang sheet khác, vậy để lọc dữ liệu từ các sheet sang một sheet thì làm thế nào ạ. Anh chị vui lòng xem file đính kèm với ạ. Em cám ơn rất nhiều./.
 

File đính kèm

  • DATA NO XAU TEST.rar
    309.9 KB · Đọc: 168
May mắn quá, em không phải dân chuyên nành nên lâu nay cứ copy từ sheet2 sang paste vào sheet1.
Giờ gặp đúng cái mình muốn tìm mà không tài nào hiểu được :'( Nhờ các bác giúp em với. Em có đính kèm file đây ạ:

Ô C15 của sheet1 tương ứng Cột C:C của sheet2.
Từ ô C23 của sheet1 tương ứng phần mô tả bên cột D:D của Sheet2.

Mong các bác giúp em với. Cám ơn các bác.}}}}}}}}}}
 

File đính kèm

  • TRAKETQUA.xlsx
    21.7 KB · Đọc: 161
May mắn quá, em không phải dân chuyên nành nên lâu nay cứ copy từ sheet2 sang paste vào sheet1.
Giờ gặp đúng cái mình muốn tìm mà không tài nào hiểu được :'( Nhờ các bác giúp em với. Em có đính kèm file đây ạ:

Ô C15 của sheet1 tương ứng Cột C:C của sheet2.
Từ ô C23 của sheet1 tương ứng phần mô tả bên cột D:D của Sheet2.

Mong các bác giúp em với. Cám ơn các bác.}}}}}}}}}}

Bạn xem file này nè:
 

File đính kèm

  • TRAKETQUA.rar
    19.5 KB · Đọc: 334
Lần chỉnh sửa cuối:
Ngàn lời nói không dấu nổi niềm vui. Đa tạ bác rất nhiều }}}}} -=.,,
 
Bác @Ba Tê ơi, em muốn lọc như code của bác @nghiaphuc cơ ạ, sáng nay em thử thì cách lọc đó mới edit nội dung của vùng mô tả bên sheet2 được. Còn giải pháp của bác thì chịu :'(
Thank bác

Thế thì bạn chờ đi, tui có biết gì đâu, làm thí thí thôi mà. Không xài được thì coi như "gió sông"
 
Lần chỉnh sửa cuối:
Thế thì bạn chờ đi, tui có biết gì đâu, làm thí thí thôi mà. Không xài được thì coi như "gió sông"
Khà khà --=0--=0

Anh phải dùng thơ và nhạc nữa à!

Nếu là Cẩm Ly thì có bài "Gió bấc", nhạc dân ca thì có "Qua cầu Gió bay", còn tiền chiến thì có "Gửi Gió cho mây ngàn bay"...

Còn có cái "Gió..." nữa, khi nào anh em mình có dịp "cạn bôi" thì sẽ nói cho anh nghe.

Chúc anh cuối tuần thiệt vui. }}}}}}}}}}}}}}}
 
Hàng ngày em có nhập liệu các xe vận chuyển vào 1 file tên "tonghop cac xe"; em muốn mỗi lần nhập liệu xong thì các xe tự động nhảy qua các sheet "xe672" hoặc "xe683" theo từng xe nhưng em ko đặt được công thức ạ. Xin các bác cho em ít thời gian với !!!
Bài đã được tự động gộp:

Muốn dùng AdvancedFilter trong trường hợp vùng tiêu chuẩn không sử dụng công thức thì bắt buộc phải có tiêu đề (ô B1) trùng với tiêu đề bên bảng dữ liệu gốc. Do đó, nếu vì tính thẩm mỹ này thì bạn cứ để kệ ô B1 có tiêu đề như vậy nhưng ẩn nó đi (bằng cách Format Cells thành dạng ;;; hoặc định dạng màu chữ) hoặc phải sử dụng công thức cho vùng tiêu chuẩn.
Một cách sử dụng công thức có thể tham khảo là thế này: Bạn sử dụng công thức sau cho ô A5 của Sheet1 và fill cho vùng cần chứa kết quả (3 cột, còn hàng thì bao nhiêu tùy bạn):
Mã:
=IF(ROW(1:1)>COUNTIF(Sheet2!$A:$A,$B$2),"",OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A)))
Nếu bạn nhìn thấy các con số 0 tại cột B, C khó ưa thì bạn có thể bỏ tùy chọn Show zero values hoặc thay công thức trên bởi công thức này:
Mã:
=IF(ROW(1:1)>COUNTIF(Sheet2!$A:$A,$B$2),"",[COLOR=#ff0000]IF(OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A))="","",[/COLOR]OFFSET(Sheet2!$A$3,MATCH($B$2,Sheet2!$A$4:$A$65536,0)+ROW(1:1)-1,COLUMN(A:A))))
 

File đính kèm

  • tonghop cac xe.xlsx
    125.5 KB · Đọc: 64
  • tonghop cac xe.xlsx
    125.5 KB · Đọc: 51
Hàng ngày em có nhập liệu các xe vận chuyển vào 1 file tên "tonghop cac xe"; em muốn mỗi lần nhập liệu xong thì các xe tự động nhảy qua các sheet "xe672" hoặc "xe683" theo từng xe nhưng em ko đặt được công thức ạ. Xin các bác cho em ít thời gian với !!!
Bài đã được tự động gộp:
Bạn tham khảo mí bài tách sheet theo cột rồi xào nấu lại thành món mới mà xài nha ;)
 
Web KT
Back
Top Bottom