Tự động cập nhập danh sách lớp!

Liên hệ QC

QuocPhong

Learning to be!
Tham gia
21/11/07
Bài viết
256
Được thích
247
Chào các bạn!
Mình có một sheet Bảng điểm, các sheet chứa danh sách các lớp.
Làm thế nào để khi mình gõ tên lớp vào sheet Bảng điểm thì Excel sẽ tự động cập nhật danh sách lớp cho mình.
Mình đã sử dụng 2 hàm Offset và Indirect và đã làm được nhưng thấy không ổn. Mong các bạn hướng dẫn cho mình cách làm tốt hơn và cách sắp xếp dữ liệu.
Mong các bạn đừng cười (2 hàm Offset, Indirect mình mới học trên GPE chiều nay @!## )
Thanks.
Mình gửi kèm file ví dụ ở dưới.
 

File đính kèm

Tai cell A6 gõ công thức:
Mã:
=IF($A$2="","",INDIRECT($A$2&"!"&ADDRESS(ROW(),COLUMN())))
kéo fill công thức qua cột B, C rồi xuống dưới
Xem file
 

File đính kèm

Bạn thử CT này xem keo sang ngang cột B, C và fill xuông.
=IF($A$2="","",OFFSET(INDIRECT($A$2&"!"&ADDRESS(6,COLUMN())),ROW()-6,0))
 

File đính kèm

Đã có ADDRESS rồi mà còn thêm OFFSET thì hơi dư đấy Salam à!
 
QuocPhong đã viết:
A.. . Mong các bạn hướng dẫn cho mình cách làm tốt hơn và cách sắp xếp dữ liệu. Xem ví dụ ở dưới.
Theo mình bạn cho DS học sinh vô 1 sheet thôi; tất nhiên thêm trường [Lop] nữa cho mỗi records
Khi cần lớp nào bạn dùng AdvancedFilter lọc & đem đến nơi cần thiết!
 
Đúng rồi... em cũng nghĩ như vậy... Cho cả chục lớp vào chung 1 sheet cũng dc nữa là...
Thêm 1 code LOC.. bấm cái rẹt ra ngay lớp nào đó... Khõe re... Trường có 100 lớp, chia ra 100 sheet chắc đói luôn...
 
anhtuan1066 đã viết:
Đã có ADDRESS rồi mà còn thêm OFFSET thì hơi dư đấy Salam à!
Em cũng nghĩ như thế nhưng đây em chỉ thêm vào cho ct của bạn quốc phong nó chuẩn chuẩn mà. Cám ơn bác nhé!
 
Cảm ơn các bạn!
Như mình nói ở trên, cách sắp xếp của mình không ổn. Mình cũng nghĩ tới việc cho tất cả các lớp vào trong một sheet, nhưng không biết làm thế nào để cập nhật danh sách như trên. Mình lại không biết VBA nữa. Mong các bạn có thể hướng dẫn mình cụ thể hơn.
To Anhtuan:
Công thức của bạn đòi hỏi các field của sheet Nhap_diem và các sheet lớp phải nằm cùng hàng và cột. Nếu như mình giữa các field của Nhap_diem và các lớp không trùng nhau thì công thức sẽ như thế nào?
 
Bạn Phong ah. khi lập ct thường người ta dựa vào cấu trúc và cách sắp xép dữ liệu để làm. trong trường hợp như bạn nói thì lại có cách khác để lọc dữ liệu mà.
 
Macro ư, chuyện dễ như con dê ăn cỏ!

QuocPhong đã viết:
Như mình nói, cách sắp xếp của mình không ổn. Mình cũng nghĩ tới việc cho tất cả các lớp vào trong một sheet, nhưng không biết làm thế nào để cập nhật danh sách như trên. Mình lại không biết VBA nữa. Mong các bạn có thể hướng dẫn mình cụ thể hơn.
Mình làm sẵn cho bạn thí dụ luôn đây;
Bạn xem file đính kèm nha!
CSDL tại sheets("CSDL");
Cũng tại đây có 1 ComboBox để bạn chọn tên lớp;
Sau khi chọn xong, Mc (Macro) nho nhỏ sẽ đưa bạn đến DS lớp mà bạn đã lựa , nó hiến ở sheets('Lop')
Nói về cái Mc nêu trên, bạn đừng cho rằng nó là cái gì cao xa; Nó rất đời thường: Mình ghi bằng bộ thu Mc có sẵn trong êxcl đó!
Vấn đề khác:
Bạn thử xóa vài ô trong cột danh sách lớp & bấm đúp vô ô tô màu vàng, thì ds lớp sẽ được cập nhật; Đây là phần tặng riêng bạn & tham khảo thôi nha!
 

File đính kèm

Chào bạn QuocPhong... về vấn đề nhập liệu thì bạn cứ theo lời của anh SA_DQ mà làm: nhập toàn bộ danh sách vào chung 1 sheet, chèn thêm cột LỚP đễ phân biệt lớp này và lớp khác... Sheet thứ 2 dùng đễ lọc theo 1 điều kiện nào đó tùy bạn đưa ra...
Nói về trích xuất dử liệu thì trên GPE có nhiều lắm, bạn cứ tham khảo, có gì ko hiểu thì post lên hỏi tiếp...
Lưu ý: Nếu bạn quản lý danh sách học sinh toàn trường thì nên có thêm 1 cột MÃ nữa... MÃ ở đây là ID cho từng học sinh, mã này sẽ là duy nhất ko trùng giữa người này với người kia... Rất thuận tiện cho việc quản lý sau này đấy!
ANH TUẤN
 
SA_DQ đã viết:
Cũng tại đây có 1 ComboBox để bạn chọn tên lớp;
Sau khi chọn xong, Mc (Macro) nho nhỏ sẽ đưa bạn đến DS lớp mà bạn đã lựa , nó hiến ở sheets('Lop')
Nói về cái Mc nêu trên, bạn đừng cho rằng nó là cái gì cao xa; Nó rất đời thường: Mình ghi bằng bộ thu Mc có sẵn trong êxcl đó!
Cảm ơn bạn.
Mình mày mò cả buổi trời !$@!! mới làm ra được cái Combo box. /-*+/ Nhưng không biết làm cách nào để gán macro vào nó cả (mình phải gán nó vào text box Nhap). Macro Lọc mình đã record xong rồi. Bạn hướng dẫn cho mình làm tiếp nha.
File kèm ở dưới.
À, trên GPE chỗ nào hướng dẫn tạo Combo hay Macro các bạn cho links minh với.
 

File đính kèm

To QuocPhong: Bạn lấy phải cái Combo trong Control ToolBox, cái này khó xài hơn cái trong Form;
(Để lấy Combo trong form bạn cũng vô menu View -> Toolbars & chọn thanh menu forms) Mình gợi ý để bạn đi từ đơn giản đến phức tạp!
Để sửa đổi hay điều chỉnh Combo trong Coltrol Toolbox thì phải thấy thanh menu này & vô góc trên trái nhất của nó, (có hình thước thợ;) Ấn vô đó mới làm gì tiếp được!
Nhưng mình nói về Combo trong forms, nha;
Phải chuộc vô nó & quan tâm đến 2 dòng cuối của menu tắt vừa xuất hiện;
Nếu bí thì lầy VD của mình ra xem tiếp nha!
Dòng gần cuối là dòng để chúng ta gán macro cho Combo đó! Dòng còn lại để chúng ta thực hiện những gì ta muốn ComboBox phục vụ chúng ta!!
 
Lần chỉnh sửa cuối:
Bạn QuocPhong thân mến!
Chưa hiểu bạn muốn làm gì? Theo dử liệu của bạn thì tôi nghĩ bạn muốnlọc danh sách theo từng lớp.. nhưng macro của bạn thì cho thấy đó là lọc dử liệu duy nhất! Hai món khác nhau mà bạn!
Và nếu là lọc duy nhất thì chỉ cần 1 nút nhấn... Còn bạn dùng ComboBox tất nhiên là muốn lọc ra từng lớp rồi... Thế thì phải code khác thôi...
Bạn cho biết ý bạn muốn gì đi, mọi người giúp cho!
ANH TUẤN
 
Thanks các bạn.
To AnhTuan:
Ý của mình muốn là khi click chọn vào Combo Box chọn các lớp thì nó sẽ hiện ra ngay trong sheet Nhap diem mà không phải qua nút Nhap mà mình Macro cho nó.
(Nói chung thì việc làm của mình cũng không có tác dụng gì cho lắm. Mình đơn thuần chỉ muốn học hỏi và tập làm những cái các bạn đã chỉ cho mình !$@!! nhưng làm tới đó thì bị bí rồi)--)(

Mình đã làm được rồi. Thanks các bạn!
Các bạn xem lại hộ mình nha, kô biết có đúng không nữa.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Trích lọc nhóm lớp bằng Resize

Trên đây là các bài viết liên quan đến việc trích lọc, tạo danh sách (DS) từng lớp riêng rẽ;
Nhưng cũng có khi ta cần lập DS nhóm các lớp, ví dụ toàn bộ các lớp khối 10, hay lớp 12 chẳng hạn. Một cách để thực hiện việc này, như sau:
Các giả thiết:
* Trường Trung học phổ thông có 5 lớp 10 (10A1-10A5); 3 lớp 11 ( gồm 11A1-11A3 & còn lại là lớp 12, (bắt đầu từ 12A1,. . .)
Nhiệm vụ đề ra là lọc lấy DS các em học sinh khối 11
* CSDL gồm [TT], [MaHS], [HoTen], [Lop], [NgSinh],. . .

PHP:
Sub FilterByResize()
 Dim lRow1 As Long, lRow2 As Long:          Dim Rng As Range
 Dim sLop1 As String, sLop2 As String
 
1 sLop1 = "10A5":                            sLop2 = "11A3"
 Sheet2.Range("A2:F999").ClearContents
 Sheet1.Select
2 SXep
3 lRow1 = 1 + Cells.Find(sLop1, [D2], , , xlByRows, xlPrevious).Row
4 lRow2 = Cells.Find(sLop2, [D2], , , xlByRows, xlPrevious).Row
 ' Cột "D" trong 2 dòng lệnh trên chứa dữ liệu lớp ' 
5 Set Rng = Range("A" & lRow1).Resize(lRow2 - lRow1 + 1, 5)
 ' Số 5 trong dòng lệnh 5 là số trường trong CSDL, Số này tăng lên theo CSDL của bạn '
 Rng.Copy Destination:=Sheet2.Range("A2")
 Sheet2.Select
End Sub

Mã:
[B]Sub SXep()[/B]
    Columns("A:E").Select
    Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("A2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
[B]End Sub [/B]
'+ Hai biến sLop1 & sLop2 có thể lấy từ 2 vùng của trang tính, VD:
Mã:
    sLop1= Sheet3.Range("B2"):      sLop2 = Sheet3.Range("B5")
'+ Bạn có thể suy luận để lọc khối lớp 10, hay khối 12; hoặc 2 lớp 12A1 & 12A2 ; Bạn hãy thử sức xem sao!
 
Lần chỉnh sửa cuối:
Chào mọi người, mình muốn thử cái DSHS.rar của bạn SA_DQ nhưng sao mình download xuống mở ra, chức năng Mc lại không chạy được. Các bạn biết cách nào hướng dẫn mình nhé !
Cảm ơn mọi người trước !
 
Cái này dùng pivot table được không nhỉ
 
Web KT

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

Back
Top Bottom