Thông thường người dùng Excel có những dữ liệu muốn
nhập vào nhiều sheet khác nhau. Bạn có thể dùng công cụ Group các sheet
lại để có thể nhập dữ liệu đồng thời. Nhưng cũng có 1 cách khác nhanh
chóng và linh hoạt hơn nếu bạn dùng vài dòng lệnh VBA.
1. Group các sheet lại bằng tay:
Để nhóm các sheet lại, các bạn chỉ việc click chọn sheet thứ nhất, nơi bạn sẽ nhập liệu từ bàn phím vào, rồi vừa nhấn Ctrl, vừa nhấn vào tên những sheet khác mà bạn muốn nhập liệu đồng thời. Khi bạn gõ bất kỳ cái gì vào sheet hiện hành, dữ liệu đó cũng sẽ tự động nhập vào các sheet còn lại trong nhóm.
Để thoát khỏi tình trạng group, bạn chỉ việc hoặc click chọn 1 sheet khác ngoài nhóm, hoặc click chuột phải lên tên 1 sheet trong nhómbất kỳ, chọn Ungroup Sheets. Hoặn nếu bạn chỉ muốn gỡ 1 trong số các sheet ra khỏi nhóm, hãy Ctrl click vào tên sheet đó.
Khi 2 hay nhiều sheet Group với nhau, trên thanh tiêu đề của Windows sẽ có chữ [Group] (tronh ngoặc vuông). Nhìn vào đó bạn có thể biết bạn vẫn còn đang trong tình trạng group các sheets.
Thường thì bạn không để ý đến dấu hiệu này, bạn sẽ quên và không ungroup khi công việc đã xong. Chính vì thế , ngay khi thực hiện xong thao tác nhập liệu hàng loạt vào các sheet, phải ungroup chúng ngay.
Dù phương pháp này là dễ nhất, nhưng có nghĩa là bạn phải nhớ và nhớ group và ungoup khi cần, nếu không bạn sẽ vô tình ghi đè lên dữ liệu ở những sheet mà bạn không nhìn thấy trên màn hình hiện thời.
2. Group các sheet lại 1 cách tự động:
Bạn có thể giải quyết vấn đề trên bằng cách dùng 1 đoạn code VBA hết sức đơn giản. Để vào trang soạn thảo code của sheet nào, thì click phải chuột vào tên sheet đó và chọn View Code.
Trước tiên bạn phải đặt name cho vùng ô bạn muốn nhập dữ liệu trùng trong các sheet, giả sử là “MyRange”.
Sau đó gõ đoạn code này vào khung soạn thảo bên phải:
PHP Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("MyRange"), Target) Is Nothing Then
Sheets(Array("Sheet5", "Sheet3", "Sheet1")).Select
Else
Me.Select
End If
End Sub
Trong đoạn code trên, sheet5 được ghi đầu tiên trong
mảng Array, vì bạn muốn nó là sheet mà bạn sẽ gõ dữ liệu nhập vào. Bạn
có thể chọn những sheet khác để group chúng lại bên dưới sheet5. Sau khi
gõ code xong, hoặc nhấn nút View Object, hoặc nhấn nút View Microsoft
Excel, hoặc nhấn Alt- Q, Alt-F11 hoặc đóng hẳn cửa sổ VBA trở về màn
hình Excel. Lưu bảng tính lại.

Cần nhắc lại rằng đoạn code trên phải nằm trong sheet được khai báo đầu tiên của Array, là sheet mà bạn sẽ nhập dữ liệu từ bàn phím.
Khi bạn đã hoàn tất, mỗi khi bạn click chọn 1 ô nào đó trong sheet5, đoạn code sẽ kiểm tra xem ô bạn chọn có nằm trong vùng đã đặt tên “MyRange” không. Nếu đúng, code sẽ Group các sheet lại với nhau để bạn nhập dữ liệu hàng loạt sheets. Nếu không phải, nó ungroup chúng ra bằng cách đơn giản là kích hoạt sheet hiện hành. Dùng đoạn code trên sẽ tiện lợi ở chỗ nó giải phóng bạn khỏi cái việc phải nhớ Group khi bắt đầu và UnGroup khi kết thúc nhập liệu trong vùng chọn.
Bây giờ nếu bạn muốn những dữ liệu như nhau được nhập vào các sheet chọn, nhưng ở những vị trí khác nhau, hãy dùng đoạn code khác:
Cần nhắc lại rằng đoạn code trên phải nằm trong sheet được khai báo đầu tiên của Array, là sheet mà bạn sẽ nhập dữ liệu từ bàn phím.
Khi bạn đã hoàn tất, mỗi khi bạn click chọn 1 ô nào đó trong sheet5, đoạn code sẽ kiểm tra xem ô bạn chọn có nằm trong vùng đã đặt tên “MyRange” không. Nếu đúng, code sẽ Group các sheet lại với nhau để bạn nhập dữ liệu hàng loạt sheets. Nếu không phải, nó ungroup chúng ra bằng cách đơn giản là kích hoạt sheet hiện hành. Dùng đoạn code trên sẽ tiện lợi ở chỗ nó giải phóng bạn khỏi cái việc phải nhớ Group khi bắt đầu và UnGroup khi kết thúc nhập liệu trong vùng chọn.
Bây giờ nếu bạn muốn những dữ liệu như nhau được nhập vào các sheet chọn, nhưng ở những vị trí khác nhau, hãy dùng đoạn code khác:
PHP Code:
Private Sub worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("MyRange"), Target) Is Nothing Then
With Range("MyRange")
.Copy Destination:=Sheets("Sheet3").Range("A1")
.Copy Destination:=Sheets("Sheet1").Range("D10")
End With
End If
End Sub
Đoạn code này cũng phải được đặt trong khung soạn thảo của riêng sheet5.
Đoạn code này hoạt động khác với đoạn code trên. Khi bạn thay đổi nội dung của 1 ô nào đó, code sẽ xác định xem ô hiện hành có nằm trong vùng "MyRange" hay không, nếu phải thì copy nguyên vùng "MyRange" (của sheet5) và paste vào đồng thời ô A1 của sheet1 và D10 của sheet2. Ngược lại thì không làm gì cả.
Sưu tầm internet
0 Response to "Excel: Nhập dữ liệu đồng thời vào nhiều sheet"
Post a Comment