Trích một phần các trường trong dữ liệu.

Liên hệ QC

Cerise

Thành viên mới
Tham gia
23/11/09
Bài viết
38
Được thích
4
Chào các anh chị,
Tôi có một sheet 'data' chứa dữ liệu thông tin học viên với rất nhiều trường. Xin các anh chị chỉ giúp làm thế nào để trong sheet2 tôi chỉ cần 3 trường là lớp, họ, tên. Và nếu trong sheet'data' tôi có thêm hay xóa bớt dòng nào thì trong sheet2 cũng được cập nhật giống vậy. Cảm ơn các anh chị!
 

File đính kèm

  • Book2.xls
    27 KB · Đọc: 15
Sheet Data chọn B2:D100
Control C
Sheet 2 chọn C 7
Paste link
 

File đính kèm

  • 111.xls
    34 KB · Đọc: 9
paste link chỉ là động tác chép hàng loạt công thức = địa chỉ cũ (địa chỉ được copy)
Trường hợp thay đổi thông tin thì cập nhật được chứ mà delete ô dòng cột thì làm cho dữ liệu kia bị ref liền,
 
Thử với phương án này xem kết quả thế nào nhé
 

File đính kèm

  • Cerise.xls
    32 KB · Đọc: 17
Bạn dùng A-Tools và đặt công thức để lấy ra 3 cột:
=BS_SQL("select cot1, cot 2, cot3 from DATA")

DATA là vùng của vùng dữ liệu gồm cả dòng tiêu đề.
cot1, cot 2, cot3 là tiêu đề các cột.
 
Lần chỉnh sửa cuối:
Tạo 1 nút Cap Nhat ở sheet 2
Sửa xong sheet Data
Vào sheet 2
Click Cap Nhat hoặc bấm Control+shift+R
 

File đính kèm

  • 112.xls
    44.5 KB · Đọc: 21
Cảm ơn bác Đệ nhiều lắm! Nhưng làm sao để đem cái nút đó áp dụng cho dữ liệu của em bác nhỉ?
 
Cảm ơn bác boyxin nhé! Tôi lại có thêm một cách nữa để lựa chọn.
 
Anh Tuân thân mến,
Tôi không biết gì về VBA, phiền anh có thể chỉ rõ hơn nhé! Cảm ơn anh.
 
Tạo 1 nút Cap Nhat ở sheet 2
Sửa xong sheet Data
Vào sheet 2
Click Cap Nhat hoặc bấm Control+shift+R

CODE có thể chỉnh như sau sẽ thấy gọn hơn chút
Mã:
Sub CapNhat()
Dim Er As Integer
Application.ScreenUpdating = False
    [c7].Resize([c65535].End(xlUp).Row, 3).ClearContents
    Er = Sheet1.[b65535].End(xlUp).Row
    [c6].Resize(Er, 3) = Sheet1.[b1].Resize(Er, 3).Value
Application.ScreenUpdating = True
End Sub
Hoặc dùng sự kiện Worksheet_Activate() thì khỏi cần nhấn nút CẬP NHẬT nữa

Mã:
Private Sub Worksheet_Activate()
Dim Er As Integer
Application.ScreenUpdating = False
    [c7].Resize([c65535].End(xlUp).Row, 3).ClearContents
    Er = Sheet1.[b65535].End(xlUp).Row
    [c6].Resize(Er, 3) = Sheet1.[b1].Resize(Er, 3).Value
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
CODE có thể chỉnh như sau sẽ thấy gọn hơn chút
Mã:
Sub CapNhat()
Dim Er As Integer
Application.ScreenUpdating = False
    [c7].Resize([c65535].End(xlUp).Row, 3).ClearContents
    Er = Sheet1.[b65535].End(xlUp).Row
    [c6].Resize(Er, 3) = Sheet1.[b1].Resize(Er, 3).Value
Application.ScreenUpdating = True
End Sub
Hoặc dùng sự kiện Worksheet_Activate() thì khỏi cần nhấn nút CẬP NHẬT nữa

Mã:
Private Sub Worksheet_Activate()
Dim Er As Integer
Application.ScreenUpdating = False
    [c7].Resize([c65535].End(xlUp).Row, 3).ClearContents
    Er = Sheet1.[b65535].End(xlUp).Row
    [c6].Resize(Er, 3) = Sheet1.[b1].Resize(Er, 3).Value
Application.ScreenUpdating = True
End Sub
Tôi thì thấy chỉ cần vầy là đủ:
PHP:
Private Sub Worksheet_Activate()
  Range("C7:E10000").Value = Sheet1.Range("B2:D10000").Value
End Sub
Ẹc... Ẹc...
 
Mình thì thấy thế này cũng được, đặt trong sheet data


Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [b2:d10000]) Is Nothing Then
Sheet2.Cells(Target.Row + 5, Target.Column + 1) = Target
End If
End Sub
 
Web KT
Back
Top Bottom