1. NH NG K NĂNG TÙY BI N B NG TÍNH EXCEL
Nh ng m o nh v c u trúc m t b ng tính
M t trong nh ng l i mà chúng ta hay m c ph i khi t o m t b ng tính, là chúng ta không thi t l p và trình bày
d li u "theo cái cách mà Excel và các tính năng c a nó mong i". Sau ây là m t s l i ph bi n chúng ta hay
m c ph i khi thi t l p m t b ng tính:
• B trí d li u trong nhi u b ng tính (WorkBook) khác nhau
• B trí d li u trong nhi u trang tính (WorkSheet) khác nhau
• B trí d li u trong nhi u b ng (Table) khác nhau
• Có nh ng hàng tr ng và c t tr ng trong kh i d li u (database)
• B tr ng nh ng ô có d li u gi ng nhau (cùng chung m t ngày, cùng chung m t ơn v tính, v.v...)
Ba i m u tiên trên ây ch mu n nói n m t i u: B n nên luôn luôn c g ng gi các m i liên quan
gi a các d li u ư c liên t c trong cùng m t b ng d li u. Tôi ã th y r t nhi u các b ng tính không ư c
trình bày theo cái quy t c r t ơn gi n này, và chính vì v y, các b ng tính ó không th t n d ng ư c t i a các
tính năng m nh m c a Excel như PivotTable, SubTotal... B n ch có th s d ng các tính năng này khi b n
gom h t d li u c a b n vào trong m t b ng th t ơn gi n.
Không ph i ng u nhiên mà Excel có 1.048.567 hàng (65.536 hàng trong Excel 2003 tr v trư c) mà l i ch có
16.384 c t (256 c t trong Excel 2003 tr v trư c). i u này có ý nói r ng, b n nên thi t l p d li u c a mình
v i các tiêu c t n m hàng trên cùng, và các d li u có liên quan thì n m liên t c bên dư i tiêu
c a nó. N u như b n có nh ng d li u ư c l p l i hai l n ho c nhi u l n trong các hàng c a cùng m t c t (các
ngày tháng, các lo i ơn v tính ch ng h n), b n hãy ch ng l i s cám d b tr ng các ô ó.
Hãy c g ng s p x p (sort) d li u c a b n b t c khi nào có th . Excel có r t nhi u nh ng công c tìm
ki m và tham chi u công th c, và m t s không nh trong ó, òi h i d li u ph i ư c s p x p theo m t th t
h p lý. Vi c phân lo i cũng s giúp ích áng k cho t c x lý c a m t s các hàm.
Nh ng m o nh khi nh d ng
Ngoài vi c thi t k c u trúc c a b ng tính cho h p lý, vi c nh d ng cho nó cũng là m t v n c n bàn n.
M c dù m t b ng tính nên ư c nh d ng sao cho d c và d theo dõi, nhưng chúng ta ít khi nghĩ n vi c s
d ng th i gian cho có hi u qu . Hãy luôn luôn nh d ng th t ơn gi n. R t nhi u ngư i lãng phí th i gian
vào vi c nh d ng m t b ng tính m c dù không nh t thi t ph i làm như v y, và chính i u này làm nh hư ng
n hi u qu công vi c. Vi c thư ng xuyên áp d ng nh ng nh d ng ph c t p cho b ng tính còn làm cho nó
tăng kích thư c, và cho dù b ng tính c a b n có th trông gi ng như m t tác ph m ngh thu t, nhưng nó l i có
th là m t n i s hãi cho ngư i khác. M t trong nh ng ki u ph i màu t t nh t mà b n nên áp d ng cho m t
b ng tính, là màu en, màu tr ng và màu xám.
M t g i ý n a, là nên b tr ng vài hàng u tiên trên cùng (ít nh t là 3 hàng). Nh ng hàng này s ư c
dùng cho nh ng tính năng nâng cao hơn v sau, ch ng h n như Advanced Filter, ho c dùng làm vùng i u ki n
cho các công th c x lý d li u (DSUM, DMAX, v.v...)
Cũng ng quan tâm n vi c canh l cho d li u. Theo m c nh, Excel canh ph i cho nh ng d li u ki u s ,
và canh trái cho nh ng d li u ki u text. Và ó là i u t t nh t r i, ng thay i nó. N u b n thay i ki u
canh l , b n s có th không xác nh ư c ngay t c kh c r ng ó là d li u ki u s hay d li u ki u text; và nó
còn có th gây nh m l n cho ngư i khác khi tham chi u n m t ô, vì nhi u khi h s tư ng r ng d li u trong
ô ó là s , nhưng th t ra nó là text. N u b n thay i ki u canh l m c nh, b n s b nh c u v i nó sau này.
Ch có tiêu c a b ng tính là ư c hư ng ngo i l mà thôi.
Ch nh d ng các ô theo ki u text khi th t s c n thi t. B i vì t t c nh ng d li u nh p vào trong các ô ã
ư c nh d ng trư c theo ki u text s b chuy n thành d li u ki u text, ngay c khi b n nghĩ r ng cái b n nh p
2. vào là d li u ki u s hay d li u ki u ngày tháng. Và t i t hơn n a, b t kỳ ô nào ch a công th c tham chi u
n m t ô ã ư c nh d ng theo ki u text, cũng s b nh d ng thành ki u text. Nói chung, b n âu có
mu n nh ng ô ch a công th c l i b nh d ng theo ki u text, ph i không.
Tr n các ô (merge cells) cũng là m t v n . Có m t s công th c ho c macro không th ch y ư c v i nh ng
ô ã ư c tr n. Cho nên, thay vì tr n ô, b n hãy dùng ch c năng "Center across selection", n m trong Home
➝ nhóm Alignment. Nh n vào cái mũi tên dư i cùng bên ph i, s m ra h p tho i Format v i tab
Alignment ư c ch n s n. B n s d ng thanh trư t d c c a khung Horizontal ch n Center Across
Selection. Ho c b n cũng có th right-click r i ch n Format Cells t shortcut menu. V i Excel 2003 tr v
trư c, b n m h p tho i này t menu Format ➝ Cells (Ctrl+1).
Nên s d ng Center Across Selection thay cho Merge Cells
Nh ng m o nh khi dùng công th c
M t sai l m r t l n khi s d ng công th c là cho nó tham chi u n toàn b các c t trong m ng d li u.
i u này làm cho Excel ph i ki m tra hàng ngàn ô, n u không nói là hàng tri u, ch c ch n không b sót m t
d li u nào.
Ví d , gi s b n có m t m ng d li u t A1 n H1000, và b n quy t nh s dùng nh ng hàm tìm ki m c a
Excel trích ra nh ng d li u c n thi t. B i vì b n còn ph i b sung thêm d li u vào m ng này, nên ch c
ăn, b n t o tham chi u trong công th c n toàn b các hàng c a các c t trong m ng này. Khi ó, tham chi u
c a b n có th s là A:H, ho c c th hơn, là A1:H65536. B n nghĩ r ng làm như v y thì b n s không lo l ng
gì khi thêm d li u vào trong m ng.
ó là m t thói quen vô cùng tai h i mà b n ph i luôn tránh xa nó. B i nó s làm cho b ng tính tr nên ì
ch, th m chí là không ch y n i. B n v n có th lo i b nh ng ph n không c n tham chi u ra kh i công th c,
mà l i b o m ư c nh ng d li u m i thêm vào s t ng ư c c p nh t trong tham chi u c a công th c,
3. b ng cách dùng Table (List trong Excel 2003 tr v trư c) ho c s d ng các Name ng.
M t v n n a thư ng x y ra v i nh ng b ng tính l n, mà c u hình máy l i nh , là Excel tính toán r t ch m
khi d li u ư c c p nh t. gi i quy t v n này, b n thư ng ư c khuyên là hãy chuy n i ch tính
toán c a Excel thành d ng Manual: Nh n vào nút Office góc trái phía trên c a b ng tính, r i ch n Excel
Options ➝ Formulas (v i Excel 2003 tr v trư c, ch n menu Tools ➝ Options ➝ Calculations), r i ch n
Manual :
Ch n Manual Caculation v i Excel 2007
Ch n Manual Caculation v i Excel 2003
Tuy nhiên, l i khuyên ó thì không hay cho l m, mà ch là mang tính i phó. M t b ng tính thì bao gi cũng
có nh ng công th c tính toán, n u b n ang ch y m t b ng tính trong ch tính toán Manual, có th b n s ch
4. có ư c nh ng thông tin cũ mèm, chưa h ư c c p nh t. N u mu n có ư c thông tin chính xác, b n ph i nh n
F9. Nhưng, ch c ch n là không ph i lúc nào b n cũng nh i u này! V y b n th cân nh c xem: N u như
c n th ng chân b k t và làm cho chi c xe hơi c a b n ch y ch m l i, b n s s a l i c n th ng chân, hay là g b
cái th ng chân r i tin tư ng hoàn toàn vào cái th ng tay? Nghĩa là, khi b ng tính c a b n ch y ch m, b n s s a
l i công th c cho nó ch y nhanh hơn, hay là t nó vào ch tính toán b ng tay r i c th mà làm ti p? H u
như chúng tôi không bao gi làm i u này, nhưng r t nhi u ngư i ã không ng n ng i t b ng tính c a h
trong ch tính toán Manual. N u như b n th y r ng c n ph i t b ng tính c a mình trong ch tính toán
Manual thì m i làm vi c ư c, b n nên suy nghĩ n vi c thi t k l i b ng tính.
Công th c m ng là m t trong nh ng nguyên nhân c a v n trên. Chúng là m t l a ch n t t khi tham chi u
n nh ng ô riêng l . Nhưng n u b n dùng chúng tham chi u n nh ng dãy d li u l n, thì hãy s d ng
chúng càng ít càng t t. Khi có m t s lư ng l n các m ng tham chi u n m t dãy d li u l n, hi u su t c a
b ng tính s b nh hư ng, ôi khi nó d ng h n luôn, và b n b t bu c ph i dùng ch tính toán b ng tay.
Excel có nhi u hàm chuyên x lý nh ng d li u l n thay cho công th c m ng, mà s ư c c p n trong
chiêu th 79: Tránh l i #VALUE! khi tính t ng (SUM) ho c m (COUNT) các ô. Ngoài ra, trong Excel Help
có m t s ví d r t hay s giúp b n cách dùng công th c trên nh ng b ng d li u l n trích ra k t qu d a
theo nh ng tiêu chu n. Ho c b n có th s d ng Pivot Table, s ư c c p n trong ph n th 4 c a lo t bài
này. M c dù PivotTable thì có v ph c t p khi b n s d ng nó l n u tiên, nhưng chúng tôi thành th t khuyên
b n hãy h c cách s d ng nó. M t khi b n ã làm ch ư c PivotTable, ngày nào ó b n s t h i r ng làm sao
tôi có th s ng mà không có PivotTable!
Tùy bi n c a s làm vi c c a b ng tính
Excel cho phép hi n th ng th i nhi u b ng tính và cho phép tùy bi n cách hi n th và s p x p chúng. Sau
khi thi t l p các tùy bi n, chúng ta có th lưu thành m t t p tin workspace (không gian làm vi c) .xlw s
d ng l i sau này.
ôi khi khi làm vi c trong Excel, b n có th c n ph i có nhi u hơn m t workbook m trên màn hình c a b n
làm cho nó d dàng s d ng hơn hay xem d li u t nhi u b ng tính. Trong bài này s mô t cách th c hi n t
ch c c a s làm vi c m t cách g n gàn và có t ch c.
u tiên, b n hãy m t t c các b ng tính mà b n c n làm vi c:
Vào Office | Open…, gi phím Ctrl trong khi ch n các t p tin b ng tính c n m | nh n nút Open m các t p
tin. (E2003: File | Open...).
T c a s làm vi c c a m t b ng tính ang m nào ó, ch n Windows | View | Arrange All (E2003: Window
| Arrange). N u tùy ch n “Windows of active workbook” ang ư c ch n thì hãy b ch n, sau ó ch n ki u
s p x p và nh p nút OK.
5. N u ch n ki u s p x p Tiled (lát g ch) thì các c a s làm vi c c a b ng tính như hình sau:
N u ch n ki u s p x p Horizontal (n m ngang) thì các b ng tính s x p ch ng lên nhau như hình minh h a sau:
N u ch n ki u Vertical (th ng ng) thì các b ng tính ư c s p x p n m c nh nhau như sau:
6. N u ch n ki u Cascade (thác nư c) thì các b ng tính s x p è lên nhau như hình minh h a sau
Khi các c a s b ng tính ã ư c s p x p g n gàng, b n s r t d dàng thao tác và di chuy n d li u gi a các
c a s .
s d ng l i các thi t l p này sau này, b n có th lưu thành m t t p tin workspace. Các bư c th c hi n như
sau:
7. Ch n ngăn View | t i nhóm Window ch n Save Workspace (E2003: File | Save Workspace…) | nh p tên cho
workspace t i h p File Name, ch n nơi lưu và nh n nút OK. T p tin workspace s có ph n m r ng là .xlw
Mu n chuy n i m t b ng tính nào ó v ch toàn màn hình thì b n ch c n kích chu t hai l n lên thanh
Title (tiêu ) c a c a s b ng tính ó. B n cũng có th nh n nút Maximize trên c a s b ng tính hi n hành
phóng to c a s ho c nh n nút Close óng b ng tính sau khi ã hoàn t t công vi c v i c a s ó.
s d ng l i không gian làm vi c ã thi t l p trư c ó, b n ch c n m t p tin .xlw v a t o thì giao di n làm
vi c ư c b n thi t l p trư c kia s ư c khôi ph c. T t c các hi u ch nh hay c p nh t thông tin trong các b ng
tính c a workspace s ư c Excel nh c nh b n lưu l i khi b n ra l nh óng workspace.
N u m i ngày, b n u ph i th c hi n các công vi c l p i l p l i trên nhi u b ng tính. Tôi khuyên b n nên
dành m t ít th i gian thi t l p các ki u không gian làm vi c cho các b ng tính ó tùy thu c vào yêu c u tao
tác và x lý s li u c a chúng. Sau ó, b n ch vi c m t p tin .xlw cho ki u không gian làm vi c phù h p v i
nhu c u s d ng c a b n mà không c n ph i t n th i gian s p x p, t ch c các b ng tính các l n s d ng sau.
Nh p d li u ng th i vào nhi u sheet.
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.
Nhưng ph i nói n công c Group cái ã nh ? Công c Group dùng nh p d li u vào nhi u sheet 1 lúc ch c
có nhi u ngư i chưa dùng n. Nó dùng k t n i các sheets v i nhau trong ph m vi work book.
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. i p v hoàn t t nhanh
chóng (nghe gi ng 007 nh ).
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.
8. Tr khi b n có c p m t s c như chim ưng, ho c bén như dao c o, 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 tôi khuyên b n 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. Thí d như b n
ch mu n ghi cùng lúc d li u vào 1 vùng nào ó c a các b ng tính, còn ngoài vùng ó thì d li u các sheet ph i
khác nhau. Th nhưng khi các sheet ã group r i thì nó có thèm quan tâm b n ang nh p li u vùng nào âu?
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. o n code làm vi c
ư c, nó ph i ư c t trong các s ki n c a riêng sheet nào b n mu 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.
B n có th ch n 1 trong các s ki n c a sheet, nh ng s ki n ch liên quan n sheet ó như i ô ch n, thay
i n i dung 1 ô, kích ho t sheet, thoát kh i sheet, … th c thi o n code VBA c a mình.
Thư ng thì b n ư c ưa th ng n trang so n th o code riêng c a sheet n u b n ch n View Code như trên
hư ng d n. B n có th ki m tra l i qu th c nó thu c v sheet b n ch n hay không b ng cách nhìn vào c a s
VBA Project bên trái, n u b n th y d ng thư m c This Workbook – Sheetname và 1 sheet ang ch n thì úng.
n u không b n ph i tìm úng sheet b n c n và doubled click nó.
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.
9. 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 .
Ngăn ch n ngư i s d ng th c hi n m t s hành ng nào ó nh t nh
M c dù Excel có h tr vi c b o v cho b ng tính (Protect Sheet, Protect Workbook), nhưng công c thô sơ
này không bao g m vi c ch cho phép ngư i s d ng m t s c quy n h n ch - tr khi b n làm theo nh ng
chiêu sau ây.
B n có th qu n lý vi c tương tác v i các b ng tính c a b n b ng cách giám sát và áp ng các s ki n. Các s
10. ki n (event), là nh ng hành ng x y ra khi b n làm vi c v i các b ng tính ho c các Sheet. Nh ng s ki n này
thư ng bao g m vi c m (open) m t b ng tính, lưu (save) nó, và óng (close) nó. B n có th b o Excel ch y
nh ng mã Visual Basic (macro) m t cách t ng khi x y ra b t kỳ m t trong nh ng s ki n như th .
Tuy nhiên, b n nên bi t r ng, ngư i s d ng có th vư t qua t t c nh ng mã b o v b i Visual Basic b ng cách
vô hi u hóa vi c th c thi các macro: Nh n nút Office ➝ Excel Opions ➝ Trust Center ➝ Trust Center
Setting ➝ Macro Settings [E2003: Tools | Macro | Security]. N u t m c an toàn là Disable all macros
with notification [E2003: m c Medium], m i khi m m t b ng tính có ch a macro, Excel s xu t hi n m t h p
thông báo và cho phép ngư i s d ng có cơ h i t t các macro. N u t m c an toàn là Disable all macros
without notification [E2003: m c High], Excel s ngăn không cho ch y t t c các macro có trong b ng tính.
Nói cách khác, khi c n ph i dùng các macro có trong b ng tính, ngư i s d ng s ch n m t m c an toàn thích
h p cho phép s d ng các macro.
Ngăn ch n vi c lưu l i b ng tính v i m t tên khác
B n có th thi t l p thu c tính "Read only" cho b t kỳ m t b ng tính nào, b ng cách nh n Office ➝ Save, nh n
nút Tools, ch n General Options [E2003: File | Save As | Tools | General Options] và kích ho t h p ki m
Read only recommended. Vi c này ngăn ch n ngư i s d ng lưu l i nh ng thay i trên b ng tính, tr phi h
lưu l i b ng tính v i m t tên khác ho c lưu vào m t nơi khác.
Tuy nhiên, có th i u b n mu n là không cho lưu l i b ng tính c a b n v i tên khác, cũng không cho lưu
vào m t nơi khác. Nói cách khác, b n mu n ngư i khác ch có th lưu l i b ng tính này v i chính tên g c c a
nó, ch không ư c sao chép nó. i u này c bi t h u d ng khi có nhi u ngư i cùng s d ng chung m t b ng
tính, và b n không mu n trong c ng c a mình y d y nh ng b n sao c a b ng tính này, cho dù là v i m t
tên khác, hay m t thư m c khác.
S ki n Before Save mà tôi s p nói n ã có t th i Excel 97. úng như tên g i c a nó, s ki n này ch xu t
hi n ngay trư c khi b ng tính ư c lưu, cho phép b n can thi p k p th i vi c lưu l i b ng tính, ưa ra m t c nh
báo, và không cho Excel lưu b ng tính.
Trư c khi t th c hi n i u này vào b ng tính, hãy ch n ch n r ng b n ã lưu l i b ng tính c a b n. B i vì vi c
ưa o n code sau ây vào môt b ng tính chưa ư c lưu, có th s gây cho b n nhi u r c r i.
ưa o n code sau vào b ng tính, b n hãy ch n Develope ➝ Visual Basic (ho c nh n Alt+F11), và nh p
úp chu t vào m c ThisWorkbook trong khung
Project Explorer. N u trên Ribbon c a b n không có m c Develope, b n hãy vào trong Excel Options ➝
Popular, ánh d u vào tùy ch n Show Develope tab in the Ribbon, r i nh n OK. [E2003, nh n ph i chu t
vào bi u tư ng Excel ngay bên trái menu File trên thanh menu, và ch n m c View Code, như minh h a
hình bên dư i]:
S d ng Quick access menu (trong Excel 2003) nh p code áp d ng cho workbook
11. B n hãy nh p o n code sau ây vào c a s VBE. Sau khi nh p xong, nh n Alt+Q tr v Excel, r i lưu l i
b ng tính:
PHP Code:
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Dim lReply As Long
If SaveAsUI = True Then
lReply = MsgBox("Sorry, you are not allowed to save this workbook as another name." _
& "Do you wish to save this workbook?", vbQuestion + vbOKCancel)
Cancel = (lReply = vbCancel)
If Cancel = False Then Me.Save
Cancel = True
End If
End Sub
Th m t tí. B n nh n Ctrl+S (ho c g i l nh Save) xem. B ng tính c a b n lưu bình thư ng. Bây gi b n nh n
F12 (ho c g i l nh Save as), b n s g p m t c nh báo, nói r ng b n không th lưu l i b ng tính này dư i b t kỳ
m t tên nào khác, tr phi b n vô hi u hóa các macro.
Nói thêm, khi b n lưu m t b ng tính có ch a macro ho c code trong Excel 2007, b n s ư c nh c nh r ng
b n ph i lưu file d ng cho phép macro ho t ng (macro-enable workbook), có ph n m r ng là *.xlsm, ch
không th lưu d ng bình thư ng (*.xlsx).
Ngăn ch n vi c in m t b ng tính
ôi khi b n ph i r i bàn làm vi c i âu ó mà quên t t máy (chuy n này là chuy n thư ng), cho dù b n ã làm
công vi c ngăn ch n vi c có ai ó chép b ng tính c a b n ra ngoài, như ã nói trên, có th b n còn lo xa hơn,
12. mu n r ng b ng tính này cũng s không b in ra khi b n v ng m t. N u th t s b n mu n như v y, b n hãy dùng
s ki n Before Print. Hãy nh p o n code sau trong c a s VBE:
PHP Code:
Private Sub workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "Sorry, you cannot Print from this workbook", vbInformation
End Sub
Nh n Ctrl+Q quay v Excel và lưu l i. T bây gi , n u có ai có mu n ra l nh in b ng tính này, s không có
gì x y ra. Dòng l nh MsgBox o n code trên ch là m t tùy ch n, nhưng b n nên s d ng nó, vì ít nh t thì nó
cũng l i m t thông tin gì ó, ngư i khác s không tư ng l m r ng máy in c a h b hư, ho c là chương
trình Excel có l i!
N u b n ch mu n ngăn ch n in m t ph n nào ó trong b ng tính, ví d không cho in Sheet1 và Sheet2, b n s
d ng o n code sau:
PHP Code:
Private Sub workbook_BeforePrint(Cancel As Boolean)
Select Case ActiveSheet.Name
Case "Sheet1", "Sheet2"
Cancel = True
MsgBox "Sorry, you cannot print this sheet from this workbook", _
vbInformation
End Select
End Sub
Dĩ nhiên b n có th thêm vào b t kỳ Sheet nào có trong b ng tính c a b n. Ch vi c nh p tên c a nó vào trong
hàng có l nh Case, và tách bi t Sheet này v i Sheet khác b ng d u ph y, và nh nh p tên Sheet trong m t c p
d u nháy kép. Trong trư ng h p b n ch mu n ngăn ch n không cho in m t Sheet mà thôi, b n ch c n nh p tên
c a Sheet ó (trong c p nháy kép) sau ch Case, và không c n gõ d u ph y.
Ngăn ch n vi c chèn thêm Sheet vào m t b ng tính
Excel có ch c năng Protect Workbook, không cho phép thay i c u trúc c a b ng tính như thêm, xóa, di
chuy n, hay i tên các Sheet. Tuy nhiên, có th b n ch mu n ngăn ch n vi c thêm Sheet thôi, còn nh ng vi c
khác thì v n cho phép. o n code sau ây giúp b n làm vi c ó:
PHP Code:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
MsgBox "Sorry, you cannot add any more sheets to this workbook", _
vbInformation
Sh.Delete
Application.DisplayAlerts = True
End Sub
Khi có ai ó chèn thêm m t Sheet m i vào trong b ng tính, trư c tiên Excel s xu t hi n h p c nh cáo: "Xin l i,
b n không th thêm b t kỳ Sheet nào vào trong b ng tính này", r i ngay l p t c, Excel s xóa cái Sheet m i
thêm vào khi nút OK trong h p c nh báo ư c nh n. Công d ng c a dòng l nh Application.DisplayAlerts =
False là không hi n th h p c nh báo xác nh n vi c xóa m t Sheet nào ó trong Excel.
M t cách khác ngăn ch n vi c chèn thêm Sheet vào b ng tính là b n ch n Review trên thanh Ribbon, ch n
l nh Protect Workbook trong nhóm Changes, r i ch n l nh Protect Structure and Windows [E2003: Tools |
Protection | Protect Workbook... ánh d u ki m vào tùy ch n Structure] và nh n OK (có th t password n u
thích). Tuy nhiên, như ã nói u bài, vi c này s ngăn ch n h t m i thao tác v i các Sheet trong b ng tính.
13. Ngăn ch n các nh c nh không c n thi t
Exel luôn luôn c nh báo ho c nh c nh b n xác nh n các hành ng và thao tác c a b n. Bài này s hư ng d n b n
cách lo i b các thông báo ho c nh c nh .
Các ki u c nh báo mà tôi c p ây chính là các câu h i mà Excel h i b n có cho macro ho t ng hay không ho c là
các thông báo v các hành ng xóa m t trang b ng tính. Sau ây là m t s lo i c nh báo c a Excel:
Thông báo kích ho t Macro trong khi trong workbook không có macro
L i này phát sinh do b n ã t ng th c hi n ghi macro trong workbook, và m c dù b n ã xóa t t c các mã l nh macro
nhưng trong các l n m workbook sau ó Excel v n c nh báo b n là trong workbook có ch a macro.
• Xóa macro: vào ngăn Developer | ch n Macro | ch n các macro và nh n Delete xóa [E2003: Tools |
Macro | Macros].
• B n ch nh n ư c thông báo kích ho t macro khi thi t l p m c an toàn là “Disable all macro with notification”
[E2003: m c Medium].
• N u m c an toàn ư c thi t l p là “Enable all macors” [E2003: m c Low] thì các macro s t ng kích ho t mà
không có ti ng kêu c nh báo.
• N u m c an toàn là “ Disable all macros without notification” [E2003: m c High] thì các macro t ng b khóa l i
không ư c phép th c thi.
Khi b n ghi m t macro, Excel chèn m t module vào ch a các l nh c a b n và các hàm. Vào lúc m m t b ng tính,
Excel ki m tra xem b ng tính có ch a module nào không và chúng r ng hay ang ch a các mã l nh. Vi c xóa các macro
c a b ng tính s xóa t t c các mã l nh ch a bên trong module mà không xóa các module – gi ng như vi c u ng c n lon
s a và b l i v h p s a vào l i t l nh. Do v y, b n c n ph i xóa i các module này theo hư ng d n sau
Ch n ngăn Developer | ch n nút Visual Basic t i nhóm Code ho c nh n t h p phím ALT+F11 [E2003: Tools | Macro
| Visual Basic Editor (VBE) và ch n View | Project Explorer].
Các nút l nh trên ngăn Developer
N u không th y c a s Project thì b n vào View và ch n Project Explorer ho c nh n t h p phím Ctrl+R
C a s Project Explorer
14. Nh p chu t lên các ký hi u (+) xem các thánh ph n b n c a các nhánh con trong c a s Project và hãy tìm n các
module. B n nh p ph i chu t lên t ng module và ch n l nh Remove Module t th c ơn ng c nh. N u ư c h i có
xu t module ra thành t p tin thì hãy ch n No. Nh n t h p ALT+Q óng c a s VBE.
Thông báo nh c nh lưu tr trong khi không có s thay i nào
B n có th nh n th y r ng ôi khi b n ch m m t b ng tính và xem m t s thông tin trong ó mà Excel cũng nh c nh
b n lưu l i các thay i trong Personal Macro Workbook m c dù b n không h thay i gì trong ó. Có th b n ã bi t
ho c chưa, b n ã có s d ng m t hàm volatile (là hàm trong ó có s d ng phương th c volatile) trong Personal Macro
Workbook c a mình.
M t personal macro workbook là m t b ng tính n ư c t o l n u tiên b n ghi macro (Tools | Macro | Record
NewMacro) v i tùy ch n “Personal Macro Workbook” t i “Store Macro in”. Macro này s ư c m m i khi b n s d ng
Excel. M t hàm volatile s làm b ng tính t ng tính toán l i m i khi b n th c hi n m t thao tác nào ó trong Excel, bao
g m c vi c m và óng b ng tính ho c ng d ng Excel. Hai trong s các hàm volatile ph bi n là hàm Today() và
Now().
H p tho i Record Macro
Vì th , m c dù b n ch c ch n là mình không có thay i gì trong b ng tính nhưng các hàm volatile này v n ang ho t
ng âm th m. i u này ư c tính như là m t s thay i và Excel s c nh báo vi c lưu tr m c dù không t n t i b t kỳ
s thay i nào trong b ng tính.
N u b n mu n Excel d ng vi c thông báo lưu tr các thay i mà b n không h th c hi n, b n có m t vài cách th c
hi n. Cách d th y nh t là ta không lưu các hàm volatile trong Personal Macro Workbook và nên xóa b t t c các hàm
volatile ang có trong ó. Ho c, n u b n c n các hàm volatile nhưng không mu n Excel lưu l i các thay i không nhìn
th y này b n có th thêm o n code sau vào Workbook module c a Personal Macro Workbook ánh l a nó là b ng
tính ã ư c lưu r i.
PHP Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Saved = True
End Sub
m Personal Macro Workbook b n vào View | Unhide trong nhóm Window [E2003: Window | Unhide], ch n
Personal.xls t h p tho i Unhide và nh p nút OK. Nh n t h p phím ALT+F11 vào c a s VBE, sau ó nh p ph i
chu t lên ThisWorkbook t Personal.xls trong c a s Project r i ch n View Code và nh p o n mã trên vào. Sau khi
nh p xong, b n nh n t h p phím ALT+Q óng c a s VBE l i.
15. T t nhiên, n u b n có s d ng hàm volatile tính toán l i b ng tính và b n mu n lưu các thay i này thì b n dùng
o n mã sau thay cho o n mã nêu trên.
PHP Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Save
End Sub
o n mã trên s lưu l i Personal Macro Workbook m t cách t ng m i khi nó ư c m .
D ng các c nh báo c a Excel v các macro ã ghi
M t trong s nhi u h n ch c a vi c ghi macro là không t thêm vào các l nh lo i b các thông báo khi th c thi. Ví d
như b n ghi m t macro xóa m t worksheet và khi th c thi macro này b n s nh n ư c thông báo xác nh n vi c xóa
worksheet. Mu n t t c nh báo này, b n làm như hư ng d n sau:
Ch n ngăn Developer | Macros t i nhóm Code ho c nh n ALT+F8 [E2003: Tools | Macro | Macros] g i h p tho i
Macro. T i Macro in ch n “All Open Workbooks”, ch n tên macro mà b n v a ghi và nh n nút Edit. t con tr lên trư c
dòng l nh u tiên c a th t c và nh p vào dòng l nh sau:
Application.DisplayAlerts = False
T i sau dòng l nh cu i cùng, b n thêm vào:
Application.DisplayAlerts = True
Macro c a b n sau khi thêm 2 dòng l nh trên s gi ng như sau:
PHP Code:
Sub MyMacro( )
'
' MyMacro Macro
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
Lưu ý r ng, b n ã b t ch c năng c nh báo c a Excel l i t i dòng l nh cu i cùng c a macro. N u b dòng l nh này, b n
s không bao gi nh n ư c các c nh báo n a và i u này có th gây nguy h i vì có th b n vô tình th c hi n m t thao
tác nh m l n nghiêm tr ng nào ó mà không h nh n ư c c nh báo xác nh n hành ng.
n sheet sao cho ngư i dùng không th dùng l nh unhide hi n ra
ôi khi b n có nh ng thông tin trên 1 sheet nào ó và b n không mu n ngư i dùng c ư c. B n mu n có 1
khu v c (có th là 1 sheet) ghi chép nh ng d li u, công th c, nh ng chi ti t v n v t và không mu n cho ai nhìn
th y.
Thí d như 1 sheet ch a nh ng vùng làm d li u cho Data Validation, Combobox, nh ng tên bi n và giá tr
bi n dùng làm const trong VBA, nh ng thông tin nh y c m và nh ng th khác. M c dù b n có th d u sheet ó
b ng cách ch n View ➝Hide trong m c ch n Window ( i v i Excel 2003 là Format ➝Sheet ➝Hide), nhưng
s t t hơn n u b n làm cách khác ngư i dùng không th ch n View ➝ Unhide trong m c ch n Window ( i
16. v i Excel 2003 là Format ➝Sheet ➝ Unhide).
B n cũng có th dùng ch c năng khoá b ng tính, nhưng nó v n ư c nhìn th y. Hơn n a b n không
th khoá nh ng ô ch a d li u k t n i v i nh ng control t o b i thanh công c Form.
Thay vì v y, b n hãy thi t l p tr ng thái cho sheet d ng xlVeryHidden. Vào Developer ➝Visual Basic
ho c nh n Alt-F11 vào trang so n th o VBE ( i v i Excel 2003 thì vào menu Tools ➝Macro
➝Visual Basic Editor và nhìn bên trái trong khung Project Explorer, n u không th y thì ch n View -
Project Explorer. Tìm tên file và b m vào d u c ng hi n ra các tên sheet. Ch n tên sgeet nào b n
mu n d u, m khung Property b ng cách vào menu View – Property Window (ho c nh n F4). Ch n
tab Alphabetic, tìm dòng Visible và ch n 2- xlsSheetVeryHidden. Nh n Alt-Q tr v trang tính
Excel, lưu s thay i này. Sheet c a b n s ch ng bao gi có th th y ư c b ng cách thông
thư ng trên menu View – Unhide hay Format – Sgeet – Unhide.
th y tr l i, b n ph i vào ch cũ, ch n l i -1 – xlSheetVisible
17. T thi t k m t b ng tính m u (template)
N u như b n thư ng xuyên ph i th c hi n cùng m t ki u trình bày cho b ng tính c a mình, b n có th t
thi t k ra m t b ng tính m u cho riêng b n, là m t b ng tính ã có s n tiêu , m t s c t, m t s hàng nào
ó, th m chí là c Name và công th c; ng th i còn có th t o ra m t h p tho i riêng vào trong Thư vi n
các Templates c a Excel.
Không bi t là, có khi nào b n s d ng các Template không? Nghĩa là thay vì nh n Ctrl+N t o m t b ng tính
m i, thì b n nh n vào nút Office, ch n l nh New [E2003: File | New], và ch n ra m t ki u b ng tính ã ư c
thi t k s n trong thư vi n các Template, sau ó s a l i b ng tính này thành cái c a mình?
18. Ch n m t b ng tính ã ư c thi t k s n trong thư vi n Templates c a Excel
N u b n ã t ng th y, ã t ng s d ng nh ng b ng tính ã ươc thi t k s n này, t b n s th y s h u d ng
c a nó, nh nó mà chúng ta ti t ki m ư c bao nhiêu là th i gian cho vi c thi t k và trình bày.
Và, trong công vi c, n u như b n c ph i thư ng xuyên thi t k nh ng b ng tính có c u trúc gi ng nhau, tôi
nghĩ r ng vi c b n thư ng làm là m m t b ng tính ã có, xóa i ph n n i dung và lưu l i v i tên khác, ph i
không? Nhưng cách làm này, ôi khi do sơ ý, b n s xóa luôn c nh ng công th c mà b n ã m t hàng gi
nghĩ ra, r i ph i m t th i gian cho nh ng thao tác xóa... V y, có bao gi b n nghĩ n chuy n s làm m t cái
gi ng như nh ng Template có s n c a Excel không? m i khi c n lo i m t b ng tính nào ó (m t b ng
lương, m t b ng ch m công, m t b n báo giá, v.v...) thì b n ch vi c vào trong Thư vi n Templates, th m chí là
vào trong "Thư vi n riêng" c a b n, l y m t cái m u ra r i ch vi c nh p s li u vào? Ti t ki m ư c bao nhiêu
là th i gian. Chiêu th 6 này s giúp b n th c hi n i u tôi v a nói.
T o m t b ng tính m u
Nh ng Template cho phép b n có s n m t "d án" (project), có nghĩa là b n s có s n môt b ng tính, bao g m
ph n tiêu c a b ng tính, m t s hàng và c t v i các tiêu c a nó, các công th c, và c các Name (n u có)..
Ví d , ây là Template BillingStatement1 có s n trong Excel 2007:
19. Template BillingStatement1 có s n trong Excel 2007
B n cũng có th t o ra m t cái gi ng v y, sau ó lưu l i thành m t Template. Vi c này không có gì khó. B n
m m t b ng tính m i, t o ra m t cái sư n: tô màu, nh d ng, t Name, thi t k công th c, v.v... như bình
thư ng b n v n làm, nhưng khoan nh p d li u vào. B n hãy xóa h t các Sheet không c n thi t, ch gi l i
nh ng Sheet ã ư c thi t k thôi. Ho c b n có th m m t b ng tính ã có s n, xóa h t nh ng d li u thô, ch
gi l i ph n trình bày. Sau ó, b n nh n F12 (Save as...) r i ch n Excel Template:
20. Ch n lo i file là Excel Template trong c a s Save
B n hãy t cho nó m t cái tên d nh , r i nh n Save. Theo m c nh thì Excel s lưu b ng tính m u này vào
Thư m c ch a các Template ã ư c t o ra khi b n cài t Excel 2007:
Excel s t ng ch n thư m c lưu các Template
M i khi c n s d ng m t b ng tính có c u trúc y h t b ng tính b n v a lưu v i d ng Template như trên, b n
nh n nút Office ➝ New [E2003: File | New], r i ch n ti p My Templates... c a s New Workbook:
21. Ch n My Template m các b ng tính m u ã lưu
Các b ng tính m u mà b n ã t o ra và lưu l i như tôi ã trình bày trên, s hi n ra. B n ch vi c ch n m u b n
c n, r i nh n OK.
Excel s t ng ch n thư m c lưu các Template
22. T o m t tab riêng trong c a s My Templates
Như b n ã th y hình ngay phía trên ây, khi b n nh n My Templates trong c a s New Workbook, m t
c a s New s m ra. ý m t tí, b n s th y c a s này có d ng nh ng cái tab. Nhưng hi n gi nó ch nó m i
m t tab My Templates thôi. Gi s b n ã t o ra r t nhi u b ng tính m u, thay vì "nhét" t t c vào m t ch , b n
có mu n t o thêm nh ng tab riêng cho m i lo i m u không? Ví d , tab "Báo cáo thu ", tab "Báo giá", v.v... hay
i lo i như th ?
Khi b n nh n F12 lưu l i v i d ng Template như tôi ã trình bày ph n trên, thì thay vì Excel ch n thư
m c lưu t ng, b n hãy nh n nút Create New Folder:
Nh n nút Create New Folder t o thêm tab cho các Template
M t h p tho i s m ra, và b n nh p m t cái tên cho nhóm bi u m u mà b n mu n. ây, tôi t o thêm m t
nhóm là "Báo cáo thu " lưu nh ng b ng tính s dùng in ra các báo cáo n p cho cơ quan thu , nh n OK,
t tên cho Template, và nh n Save. V y là xong r i ó. Tôi m th ra cho b n xem nhé:
B n th y không, trong c a s New này, ã có thêm m t tab m i là "Báo cáo thu ". Hay ch nh !
23. M t i u lưu ý, ch c là không th a. T t c nh ng Template và nh ng thư m c mà b n ã t t o ra trong bài
này, u n m ây:
C:Documents and SettingsOwnerApplication DataMicrosoftTemplate
V i Owner là tên c a Acount mà b n ã t o ra khi s d ng Windows. Tôi ã th thay i nơi lưu các Template
này, nhưng không ư c. Khi ch n My Template trong c a s New Workbook, Excel ch li t kê nh ng
Template nào n m trong cái ư ng d n trên ây mà thôi. Do ó, khi cài t l i Windows, có th b n s m t
h t t t c nh ng gì n m trong thư m c C:Documents and Settings... V y, i u lưu ý ây là, b n nên t o ra
nh ng b n sao d phòng cho các Template này, c t gi c n th n. Sau này, khi có ph i cài t l i Windows, b n
ch vi c chép các b n sao vào úng ch c a nó (chính là cái ư ng d n trên ây), là có th s d ng ti p.
T o ch m c cho các Sheet trong Workbook
N u b n ã t n quá nhi u th i gian trong m t workbook (b ng tính) v i r t nhi u worksheet (trang tính), b n s
c m thông ư c s khó khăn trong vi c tìm ki m m t trang tính nào ó. Khi ó, có l ta nên l p m t ch m c
các trang tính ang có thu n ti n cho vi c i u hư ng trong b ng tính.
B ng cách s d ng m t ch m c các trang tính s cho phép b n nhanh chóng và d dàng i u hư ng trong b ng
tính, ch b ng m t cú nh p chu t s ưa b n n chính xác nơi b n mu n n mà không lo b nh m l n. B n có
th t o m t ch m c trong m t vài cách: b ng tay, t ng t o ra b i mã VBA, ho c là s d ng trình ơn tùy
ch n theo ng c nh (th m chí có th dùng các hàm Macro4 – không trình bày ây).
T o ch m c th công
Cách này r t d làm, b n ch c n chèn m i m t worksheet và ăt cho nó m t cái tên, ví d như tên là Index. Sau
ó, b n nh n vào tên c a các worksheet có trong workbook và t o các siêu liên k t (hyperlink) n các
worksheet tương ng v i tên mà b n nh p.
t o hyperlink b n ch n tên sheet, sau ó vào Insert | ch n Hyperlink t i nhóm Links [E2003: Insert |
Hyperlinks] ho c nh n phím t t là Ctrl+K m h p tho i Insert Hyperlink.
24. H p tho i Insert Hyperlink
Ch n Place in This Document và ch n tên Sheet mu n k t n i t i. Nh n nút OK hoàn t t.
Phương pháp này phù h p khi b ng tính không có quá nhi u worksheet và tên worksheet không có s thay i
thư ng xuyên, n u không s gây ra nhi u khó khăn cho công tác b o trì trang ch m c.
T o ch m c t ng b ng cách s d ng VBA
M t cách thay th khác là s d ng VBA t ng t o ra các ch m c. o n mã sau ây s t ng t o ra m t
b ng ch m c liên k t n t t c các worksheet mà b n có trong workbook. B ng ch m c này s ư c t o l i
m i khi worksheet lưu ch m c ư c ch n.
o n mã này ph i ư c t trong private module c a Sheet ch a ch . Chèn m t worksheet m i vào workbook
và t tên cho nó là Index ch ng h n. Nh p chu t ph i vào tên worksheet v a t o và ch n ViewCode t trình
ơn ng c nh ho c nh n t h p phím Alt+F11.
Nh p o n mã VBA sau vào c a s Code:
PHP Code:
Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim lCount As Long
lCount = 1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = "INDEX"
End With
For Each wSheet In Worksheets
If wSheet.Name <> Me.Name Then
lCount = lCount + 1
With wSheet
.Range("A1").Name = "Start" & wSheet.Index
.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:= _
"Index", TextToDisplay:="Back to Index"
End With
Me.Hyperlinks.Add Anchor:=Me.Cells(lCount, 1), Address:="", SubAddress:= _
"Start" & wSheet.Index, TextToDisplay:=wSheet.Name
End If
Next wSheet
End Sub
Nh n t h p phím Alt+Q thoát VBE và tr v c a s b ng tính, sau ó lưu b ng tính l i. ch y o n mã
v a t o, b n dùng chu t ch n sang worksheet khác trong workbook và sau ó ch n l i worksheet Index kích
ho t s ki n Worksheet_Activate.
Lưu ý r ng, o n mã s các t tên (Name) cho các ô A1 m i worksheet kèm theo s ch m c c a worksheet
trong b ng tính (worksheet u tiên có ch m c là 1, k ó là 2, 3…. n). i u này b o m r ng ô A1 trên m i
trang tính có m t tên khác nhau. N u ô A1 trên worksheet c a b n ã ư c t tên, b n nên cân nh c n vi c
thay i ô A1 trong o n mã sang m t a ch khác phù h p hơn.
25. Thêm thu c tính cho workbook
Lưu ý, n u b n có thi t l p Hyperlink base (siêu liên k t cơ s ) trong workbook thì các hyperlink ư c t o ra t
o n mã trên s không th ho t ng ư c, do chúng ã liên k t n các Name trong workbook hi n hành. Khi
thu c tính hyperlink base ư c thi t l p thì các siêu liên k t s tr n hyperlink base k t h p v i các Name.
Thêm thu c tính Hyperlink base: Vào Office | Prepare | Properties | Document Properties | ch n Advanced
Properties [E2003: File | Properties | Summary] và nh p vào hyperlink base.
Siêu liên k t trư c và sau khi thêm Hyperlink base
Thêm l nh g i ch m c vào trình ơn ng c nh
Cách th ba s hư ng d n b n thêm m t l nh vào trình ơn ng c nh g i danh sách các worksheet trong
workbook và b n có th ch n l nh này b ng cách kích ph i chu t vào vùng b ng tính b t kỳ. o n mã sau s
g i thanh l nh Tabs c a workbook như hình sau:
26. Thêm l nh “Sheet Index” vào trình ơn ng c nh
Nh n Alt+F11 m c a s VBE, sau ó nh p o n mã sau vào c a s Code c a
ThisWorkbook:
PHP Code:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Can
cel As Boolean)
Dim cCont As CommandBarButton
On Error Resume Next
Application.CommandBars("Cell").Controls("Sheet Index").Delete
On Error GoTo 0
Set cCont = Application.CommandBars("Cell").Controls.Add _
(Type:=msoControlButton, Temporary:=True)
With cCont
.Caption = "Sheet Index"
.OnAction = "IndexCode"
End With
End Sub
Ti p theo, b n vào Insert | Module và nh p vào o n mã sau:
PHP Code:
Sub IndexCode()
Application.CommandBars("workbook Tabs").ShowPopup
End Sub
27. o n mã trên s th c thi m i khi b n ch n l nh “Sheet Index” t trình ơn ng c nh và b n ph i t nó trong
Module thì Excel m i có th th y ư c th t c này.
Nh n Alt+Q óng c a s VBE tr v b nh tính Excel. K t lúc này, b n nh p ph i chu t t i b t kỳ ô nào
trong b t kỳ worksheet nào thì trong trình ơn ng c nh s có thêm l nh “Sheet Index” giúp b n i u hư ng n
b t c worksheet nào trong workbook m t cách d dàng.
Gi i h n vùng cu n c a b ng tính
N u b n không mu n thanh cu n kéo b ng tính lên xu ng ho c qua ph i nhi u, ho c b n có d li u 1 vùng
nào ó mà không mu ncho ngu i dùng xem, b n có th gi i h n vùng nhìn ư c c a b ng tính trong ph m vi
b n cho phép.
Các b ng tính t o b i Excel 2007 có s c t t i a 16.384, Excel trư c ó là 256 (t A n IV), và có s dòng t i
a là 1.048.576 (trư c ó là 65.536). Nhưng thư ng thì b n hi m khi s d ng h t. B n có th gi i h n ch cho
ngư i dùng xem trong 1 ph m vi nào ó, còn d li u nh y c m, b n ngoài vùng ó. Ngoài ra nó còn h n ch
khi ai ó vô tình kéo thanh cu n xu ng dòng 500.000 và n lư t ngư i khác la làng r ng kéo mãi ch ng th y
cái gì mà xem.
B n có th dùng cách ơn gi n là d u (Hide) nh ng dòng và c t mu n d u ho c b ng cách nh nghĩa 1 vùng
cho phép xem ho c ch kích ho t vùng có d li u.
1. D u dòng và c t:
Cách d nh t là d u nh ng dòng và c t không dùng n:
Trên sheet hi n hành, xác nh dòng cu i có d li u, nh n ch n dòng dư i nó, nh n thêm cùng lúc Ctrl + Shift +
mũi tên xu ng ch n n cu i dòng cu i cùng (1.048.576). Sau ó trong tab Home, ch n Format Hide &
Unhide – Hide Rows trong Excel 2007 ho c Format - Row - Hide trong 2003 tr v trư c, ho c click ph i chu t
và ch n Hide.
Làm tương t như v y d u nh ng c t không dùng n: tìm c t cu i, click ch n c t k bên, nh n Ctrl + Shift
+ mũi tên sang ph i, ch n hide columns.
K t qu như hình, vùng làm vi c b trùm 1 màu tăm t i chung quanh và ch ng ai có th kéo i âu ư c n a:
28. 2. Xác nh 1 vùng s d ng b ng Property:
B ng cách s d ng Property c a sheet trong VBA, b n có th n nh vùng làm vi c trong ph m vi mong mu n.
Th c hi n như sau:
Nh n chu t ph i vào tên sheet trong tab Sheet Names, ch n View code, ho c nh n Alt + F11, ch n úng tên
sheet trong c a s Project Explorer, r i xu ng khung Property, tìm dòng ScrollArea gõ vào a ch vùng mong
mu n thí d $A$1:$H$50.
Quay tr l i b ng tính và th kéo thanh cu n, ta th y ch có th cu n xu ng n dòng 50 và cu n ngang n c t
H là t i a, không cu n ư c n a.
Tuy v y, Excel không lưu tính ch t này khi lưu b ng tính, nên l n sau m file lên ph i set Property l i. Do ó ta
ph i vi t 1 o n code th c hi n i u này m i khi kích ho t sheet. Vào vùng so n th o code c a úng sheet mình
mu n, ch n s ki n worksheet_activate:
PHP Code:
Private Sub Worksheet_Activate ( )
Me.ScrollArea = "A1:H50"
End Sub
Bây gi m i khi kích ho t b ng tính, VBA s n nh vùng gi i h n như mong mu n.
M c dù không có vùng bao quanh tăm t i như cách trên, nhưng b n không th nào cu n ra kh i vùng, b n c
ch n 1 ô n m ngoài vùng cho phép cũng không ư c, k c c t I, J, K dù b n có ngó th y cũng ch thèm
29. thôi.
Th m chí v i nh ng o n code VBA b n t o sau này, trong ó có câu l nh select 1 vùng n m ngoài vùng cho
phép, ho c ch n nguyên c t nguyên dòng, cũng không ch n ư c.
có th th c thi các o n code trên b n ph i cho vào code 2 dòng l nh:
u code thêm dòng: ActiveSheet.ScrollArea = ""
Cu i code thêm dòng: ActiveSheet.ScrollArea = "$A$1:$G$50"
Thí d :
PHP Code:
Sub MyMacro( )
ActiveSheet.ScrollArea = ""
Range("Z100").Select
Selection.Font.Bold = True
ActiveSheet.ScrollArea = "$A$1:$G$50"
Sheets("Daily Budget").Select
ActiveSheet.ScrollArea = ""
Range ("T500").Select
Selection.Font.Bold = False
ActiveSheet.ScrollArea = "$A$1:$H$25"
End Sub
o n code trên ch n ô Z100 trong sheet hi n hành và nh d ng in m. Sau ó ch n ô
T500 trong sheet khác, nh d ng in thư ng (không m). Trư c khi th c hi n ch n và
nh d ng sheet nào, ph i set vùng cu n sheet ó là “”. Sau khi nh d ng,set tr vùng
gi i h n cu n theo mong mu n.
3. Ch kích ho t vùng d li u hi n hành:
Phương pháp này linh ho t hơn, t ng gi i h n vùng cu n b ng tính v a b ng vùng d li u c a b ng tính mà
b n t code sau:
PHP Code:
Private Sub Worksheet_Activate( )
Me.ScrollArea =Me.UsedRange. Address
End Sub
o n code trên s ch y m i khi b n kích ho t b ng tính mà b n t code. Dù v y cũng
có h n ch là b n không th thêm d li u vào dòng m i ho c c t m i. B n có th m
r ng vùng gi i h n ra thêm 5 dòng và 2 c t b ng o n code sau:
PHP Code:
Private Sub Worksheet_Activate()
With Me.UsedRange
Me.ScrollArea = .Resize(.Rows.Count + 5, .Columns.Count + 2).Address
End With
End Sub
Còn n u b n mu n hơn n a, nh p li u thêm 1 cách tho i mái, thì dùng 1 o n code
nh m reset vùng cu n b ng nguyên sheet:
PHP Code:
30. Sub ResetScrollArea( )
ActiveSheet.ScrollArea = ""
End Sub
B n có th gán short key (phím t t) cho o n code này b ng cách nh n Alt F8, ch n
macro ResetScrollArea, nh n nút option, và gán 1 phím t t thí d Ctrl + W.
Sau này m i khi b n mu n nh p li u, nh n Ctrl + W trư c khi nh p li u. Khi nh p li u xong, ch c n b n kích
ho t 1 sheet khác xong quay l i sheet này, vùng cu n l i b gi i h n b i o ncode trên (Worksheet_Activate())
Khóa và b o v nh ng ô có ch a công th c
Chiêu này giúp b n cho phép ngư i khác thay i các ô có ch a d li u, nhưng c m h thay i các ô ch a
công th c. B n cũng có th b o v các ô có ch a công th c mà không c n ph i b o v toàn b trang tính
c a b n.
Khi t o m t b ng tính, thư ng chúng ta s ph i dùng n m t s công th c, và khi chia s b ng tính cho m i
ngư i, có th b n mu n r ng, không ai có th can thi p (xóa, s a...) nh ng vào nh ng ô có ch a công th c.
Cách d nh t là cũng ph bi n nh t là Protect (b o v ) b ng tính. Tuy nhiên, Protect b ng tính không ch ngăn
không cho can thi p vào các ô ch a công th c, mà nó không cho can thi p vào t t c , nghĩa là không ai có th
làm gì b ng tính c a b n. ôi khi, b n l i không mu n như v y, b n ch mu n b o v các ô ch a công th c thôi,
còn nh ng ô ch a d li u thì không.
Có ba gi i pháp th c hi n i u này: Khóa nh ng ô ch a công th c, s d ng ch c năng Data-validation cho
các ô ch a công th c, và t ng b t t t ch c năng b o v .
Khóa các ô ch a công th c
Theo m c nh, t t c các ô trong b ng tính u ư c khóa (locked), tuy nhiên, nó ch ng có tác d ng gì tr phi
b n áp d ng l nh Protect b ng tính. ây là cách d nh t áp d ng l nh Protect cho b ng tính, nhưng ch
nh ng ô ch a công th c thì m i b khóa, và ư c b o v :
Ch n toàn b b ng tính, b ng cách nh n Ctrl+A, ho c nh n vào cái ô vuông n m giao i m c a c t A và hàng
1. R i nh n nút ph i chu t và ch n Format Cells, r i trong tab Protection, b ánh d u tùy ch n Locked, r i
nh n OK:
31. M khóa (Unlock) toàn b b ng tính b ng cách b tùy ch n Locked
Sau ó, b n ch n i m t ô nào ó, ch n Home ➝ Find & Select ➝ Go To Special [E2003: Edit | Go To… |
Special]; ho c nh n Ctrl+G hay F5 r i nh n vào nút Special.... H p tho i sau ây s m ra:
Dùng h p tho i Go To Special ch n các ô có ch a công th c
Trong h p tho i ó, b n nh n vào tùy ch n Formulas, và n u c n thi t thì ch n ho c không ch n thêm 4 ô nh
dư i (li t kê các lo i công th c, m c nh thì c 4 ô này u ư c ch n), và nh n OK. Sau ó, b n m l i h p
32. tho i Format Cells ã nói trên, nhưng l n này thì b n ánh d u vào tùy ch n Locked, và n u b n thích n
luôn công th c (không cho th y) thì ánh d u vào tùy ch n Hidden, nh n OK.
Vi c cu i cùng là Protect b ng tính: Ch n Home trên Ribbon, nh n vào Format trong nhóm Cells, r i nh n vào
Protect Sheet...; ho c ch n Review trên Ribbon, r i nh n vào Protect Sheet [E2003: Tools | Protection |
Protect Worksheet]:
Ch n Protect Sheet t Home
Ch n Protect Sheet t Review
Trong h p tho i Protect Sheet, b ánh d u tùy ch n Select locked cells, ch cho phép Select unlocked cells
(ch n nh ng ô không khóa), và nh p vào m t password, n u c n thi t:
B tùy ch n Select locked cells trong h p tho i Protect Sheet
33. V y là xong. T bây gi , nh ng ô ch a công th c c a b n s ư c b o v , có th không xem th y ư c n u b n
ã ch n Hidden, b n không lo nh ng công th c này b can thi p n a.
S d ng Data-validation
S d ng Data-validation, ch là ơn gi n không cho ghi è vào nh ng ô có ch a công th c, nghĩa là không cho
s a công th c. Tuy nhiên, phương pháp này ch phòng ng a cho chính b n, nghĩa là tránh vi c táy máy s a l i
cái gì ó trong nh ng ô ch a công th c, ch th t ra, m c dù ã ư c "Validation", b n v n có th xóa công
th c, ho c dán vào nh ng ô ó b t kỳ d li u nào b n thích... Nói chung nó không b o v ư c gì nhi u. Nhưng
cũng xin nói sơ qua v phương pháp này:
th c hi n, b n hãy ch n nh ng ô ch a ô công th c b ng ch c năng Go To Specials mà tôi ã nói trên.
R i, v i nh ng ô ch a công th c ang ư c ch n, b n g i Data Validation t menu Data trên Ribbon [E2003:
Data | Validation]. Trong h p tho i này, ch n tab Settings, ch n Custom cho khung Allow, và nh p công th c
này: =" " vào khung Formula, r i nh n OK, như hình sau:
S d ng Data Validation b o v nh ng ô ch a công th c
K t ây, m i khi b n nh p b t kỳ th gì vào trong nh ng ô ch a công th c, ho c b n mu n s a l i công th c,
s có m t c nh báo xu t hi n, ngăn không cho b n nh p vào. Xin nh c l i, phương pháp này không c m vi c
xóa h n công th c, cũng như dán è th gì ó vào nh ng ô ch a công th c.
T ng b t t t ch c năng b o v
Phương pháp này, s t ng b t ch c năng b o v b ng tính (Protect) m i khi b n ch n m t ô ã ư c khóa
(locked), nhưng nó cũng s t ng t t ch c năng b o v khi b n ch n m t ô không b khóa.
b t u, b n hãy ch c ch n r ng nh ng ô b n mu n b o v (ô ch a công th c) ã ư c khóa, còn nh ng ô
không c n b o v thì không b khóa, như tôi ã trình bày phương pháp th nh t. Sau ó, b n nh n Alt+F11,
nh n vào Sheet mà b n mu n b o v các ô ã khóa trong ó, r i nh p vào trong khung so n th o o n code
sau ây:
PHP Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked = True Then
Me.Protect Password:="Secret"
Else
34. Me.Unprotect Password:="Secret"
End If
End Sub
N u không c n n password, b n không c n dùng o n Password:="Secret", ho c n u mu n Password là th
gì khác, b n s a l i ch Secret b ng cái b n mu n.
N u b n lo r ng ngư i ta có th vào trong khung so n th o VBA xem password, b n có th b o v các code
này (không cho xem) b ng cách ch n Tools ➝ VBAProject Properties, ch n tab Properties, ch n Lock
Project for Viewing, và nh p vào m t password.
Tuy nhiên, phương pháp này cũng không ho t ng hoàn h o, m c dù nó cũng giúp b n ư c ph n nào vi c b o
v các công th c. T khóa Target ư c s d ng trong o n code s ch tham chi u n ô ang "active" ngay
t i th i i m nó ư c ch n (xin nói thêm, cho dù b n ch n m t dãy, nhưng trong dãy ó, ch có m t ô "active"
mà thôi, là ô ang có màu khác v i nh ng ô còn l i). Vì lý do này, n u m t ngư i nào ó ch n m t dãy các ô
(v i ô "active" không b khóa), thì ngư i ó có th xóa toàn b dãy ô này, b i vì khi ó thì ch c năng Unprotect
ã ư c t ng b t!
S d ng nh d ng theo i u ki n tìm d li u trùng
nh d ng theo i u ki n c a Excel thư ng ư c s d ng xác nh giá tr trong ph m vi c th trên b ng
tính, nhưng chúng ta có th c i ti n nó nh n d ng s trùng l p d li u trong m t danh sách ho c m t b ng.
Ch c năng nh d ng theo i u ki n trong Excel 2007 ã ư c c i ti n, do v y bài hư ng d n này thích h p cho
các phiên b n t Excel 2003 v trư c.
M i ngư i thư ng xuyên ph i nh n di n s trùng l p d li u trong m t danh sách ho c m t b ng, và làm th
công công vi c này có th m t nhi u th i gian và d m c l i. làm cho công vi c này d dàng hơn, b n có th
ch bi n công c nh d ng theo i u c a Excel m t ít.
Ví d như, b n có m t b ng d li u là vùng $A$1:$H$100. B n ch n nó b ng cách ch n ô trên cùng – bên trái
c a b ng (A1) và kéo chu t n ô dư i cùng bên ph i (H100). i u này r t quan tr ng, vì ta mu n ô A1 ph i là
ô hi n hành (active) trong vùng l a ch n. Sau ó vào Format | ch n Conditional Formatting….
L nh nh d ng theo i u ki n trong Excel 2003
35. Trong h p tho i Conditional Formatting, b n ch n Formulas Is t i Condition 1 và nh p công th c sau vào
h p tr ng bên c nh:
=COUNTIF($A$1:$H$100,A1)>1
H p tho i Conditional Formatting
Nh n ch n nút Format | ch n màu và ki u ch t i ngăn Font và ch n màu n n t i ngăn Patterns. Nh n OK khi
hoàn t t vi c nh d ng. Nh n ti p OK áp d ng nh d ng cho vùng d li u ang ch n.
H p tho i Format Cells
Theo b ng s li u minh h a thì h u h t các ô u có d li u trùng tr hai ô H7 và H49.
Trong công th c nh d ng theo i u ki n này, ta s d ng tham chi u tương i cho a ch ô c n ki m tra trong
vùng a ch xác nh. B ng cách s d ng nh d ng theo i u ki n như th này, Excel s t ng nh n bi t a
ch ô làm i u ki n trong hàm COUNTIF. C th thì các công th c nh d ng theo i u ki n t i các ô như sau:
Ô A1 s có công th c là: =COUNTIF($A$1:$H$100,A1)>1
Ô A2 s có công th c là: =COUNTIF($A$1:$H$100,A2)>1
Ô A3 s có công th c là: =COUNTIF($A$1:$H$100,A3)>1
…
Ô B1 s có công th c là: =COUNTIF($A$1:$H$100,B1)>1
Ô B2 s có công th c là: =COUNTIF($A$1:$H$100,B2)>1
…
36. nh d ng theo i u ki n trong Excel 2007 ã có s n tính năng làm n i các giá tr trùng trong m t vùng d li u.
Các bư c th c hi n như sau:
Ch n vùng d li u | vào ngăn Home | ch n Conditional Formatting | ch n Highlight Cells Rules | ch n
Duplicate Values…
L nh Duplicate Values c a Conditional Formatting trong Excel 2007
Trong h p tho i Duplicate Values, b n ch n ki u Duplicate (ho c Unique: duy nh t) và ch n nh d ng t i
h p k bên sau ó nh n OK.
H p tho i Duplicate Values
37. Tìm d li u xu t hi n 2 ho c nhi u l n b ng công c Conditional Formating
Dù cho công c Conditional Formating ã c i ti n r t nhi u trong Excel 2007, giúp chúng ta tìm nh ng d li u
trùng (Duplicate), nhưng nó v n chưa cung c p nh ng tính năng tìm ra nh ng d li u xu t hi n 2 l n ho c nhi u
hơn.
N u b n mu n xác nh nh ng d li u 2 l n ho c nhi u hơn, b n có th dùng Conditional Formating v i s
lư ng nhi u các i u ki n, trong gi i h n cho phép c a b nh h th ng. (Nh r ng trong Excel 2003 tr v
trư c, ch ch p nh n có 3 i u ki n). Sau ó b n gán nh ng nh d ng màu s c cho m i i u ki n.
th c hi n, ch n ô A1 là ô trên cùng bên trái c a vùng d li u, b m shif và clickvào ô H100. C n nh c các
b n 1l n n a, là ph i làm úng trìnht cho ô ch n (activecell) là ô A1. Bây gi vào tab Home, Conditional
Formating, NewRule trong m c Style. Ch n [FONT=Birka]Use a Formula to determine which cells to format”
và click ch n “Format values where this formula is true.” i v i Excel 2003: Format, Conditional Formating,
ch n Formula Is). Trong ô tr ng gõ công th c:
=COUNTIF($A$1:$H$100,A1)>3
__________
Nh n nút Format, ch n màu n n và màu ch cho nh ng ô ch a d li u xu t hi n hơn 3 l n, và OK.
38. _____________
Nh n New Rule (trong Excel 2003 ch n vào i u ki n th 2), làm ti p 1 i u ki n, l n này công th c là:
=COUNTIF($A$1:$H$100,A1)=3.
39. Nh n New Rule (trong Excel 2003 ch n vào i u ki n th 3), làm ti p 1 i u ki n, l n này công th c là:
=COUNTIF($A$1:$H$100,A1)=2.
Nh m i l n ch n 1 màu khác nhau.
K t qu : b n có nh ng ô có màu khác nhau cho nh ng d li u xu t hi n 2 l n, 3 l n, và nhi u hơn.
C n nh c l i chuy n ch n úng vùng ch n sao cho ô A1 là ô hi n hành, Excel hi u úng i u ki n trong
công th c CountIf. Và: Excel 2003 gi i h n b i 3 i u ki n, trong khi ó Excel 2007 ch b gi i h n b i b nh
h th ng.
T o riêng m t thanh công c cho riêng m t b ng tính c th
B n ã t ng t o ra thanh công c riêng cho mình? B n có th y r ng, thanh công c này luôn luôn ư c n p vào
Excel, và luôn hi n th , v i b t kỳ b ng tính nào, v i b t kỳ ngư i s d ng nào? Có bao gi , b n mu n r ng,
thanh công c t t o này ch ư c hi n th v i m t b ng tính c th nào ó mà thôi không?
Ví d , b n t t o ra m t thanh công c có ch a nh ng nút dùng h tr vi c nh p công th c và x lý b ng
(nh ng d u =, +, -, *, /, nh ng nút dùng xóa hàng, xóa c t, v.v...), t m g i là thanh công c A, ph c v riêng
cho b ng tính B. Và b n mu n, làm th nào ch khi b n m b ng tính B, thì m i th y thanh công c A c a
b n, còn m b ng tính khác, thì ch th y nh ng thanh công c m c nh c a Excel? Th m chí trong cùng m t
c a s Excel, nhưng khi b n kích ho t b ng tính B, thì m i th y thanh công c A, còn khi nh n Ctrl+Tab
chuy n sang b ng tính khác, thì thanh công c A này s bi n m t?
Thi t nghĩ, ch c h n ã có lúc b n mu n i u tôi v a nói. Vì nó giúp cho thanh công c c a Excel luôn g n
gàng, ngăn n p (luôn là thanh công c m c nh c a Excel), n u không ph i là b n, mà là ngư i khác, thì không
có gì b ng v i thanh công c l ho c; ho c là, ch khi nào m b ng tính B ra, thì m i c n n thanh công c
A, còn bình thư ng thì ch ng c n...
Vi c này, không có gì khó. B n ch c n chèn m t o n code ơn gi n vào trong "Private module" c a b ng tính.
Trư c h t, b n hãy t o cho riêng mình m t thanh công c . t tên cho nó là "MyCustomToolbar" ch ng h n.
Ti p theo, b n nh n Alt+F11 m c a s Microsoft Visual Basic, nh n úp vào This workbook trong khung
Project. B n cũng có th làm nhanh vi c này b ng cách nh n nút ph i chu t vào cái bi u tư ng Excel bé tí n m
ngay bên trái menu File, r i ch n View Code, c a s VBA cũng s m ra v i This workbook ư c ch n s n:
Nh n ph i chu t vào bi u tư ng Excel nh bên trái menu File r i ch n View Code
40. R i, nh p vào hai o n code sau ây:
PHP Code:
Option Explicit
--------------------------------------------------------------------
Private Sub Workbook_Activate()
On Error Resume Next
With Application.CommandBars("MyCustomToolbar")
.Enabled = True
.Visible = True
End With
On Error GoTo 0
End Sub
--------------------------------------------------------------------
Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("MyCustomToolbar").Enabled = False
On Error GoTo 0
End Sub
B n có th thay th "MyCustomToolbar" b ng cái tên mà b n ã t cho thanh công c t t o c a b n. Sau ó
b n nh n Alt+Q tr v Excel.
th , b n hãy m thêm m t b ng tính n a, Book2.xls ch ng h n. B n s th y, khi nào b n ch n b ng tính mà
có o n code trên, thì b n m i th y "MyCustomToolbar", còn n u ch n Book2 (chuy n i qua l i gi a các
b ng tính b ng Ctrl+Tab), "MyCustomToolbar" bi n m t! Ch n l i b ng tính ban u, "MyCustomToolbar"
xu t hi n l i. V y là thành công r i!
ư c voi òi tiên. Bây gi , gi s b n mu n r ng, trong cùng m t b ng tính, nhưng ch có Sheet1 thì m i th y
"MyCustomToolbar", còn Sheet khác thì không?
ư c thôi. B n có th vi t thêm m t "Level" n a cho o n code trên. Hãy b o m là b n ang ch n b ng tính
có ch a code (t t nh t là b n óng cái Book2 i). Quay tr l i c a s VBA, b n hãy nh n ph i chu t vào Sheet
nào mà b n mu n th y "MyCustomToolbar", r i ch n View Code (ho c nh n úp vào tên Sheet ó cũng ư c).
ây tôi gi s b n ch n Sheet1.
Nh p vào hai o n code sau ây:
PHP Code:
Option Explicit
--------------------------------------------------------------------
Private Sub Worksheet_Deactivate()
On Error Resume Next
Application.CommandBars("MyCustomToolbar").Enabled = False
On Error GoTo 0
End Sub
--------------------------------------------------------------------
Private Sub Worksheet_Activate()
On Error Resume Next
With Application.CommandBars("MyCustomToolbar")
.Enabled = True
.Visible = True
41. End With
On Error GoTo 0
End Sub
R i nh n Alt+Q quay l i Excel. Bây gi , b n hãy dùng chu t ho c nh n Ctrl+PgUp/Ctrl+PgDn ch n
qua l i các Sheet và xem th cái gì xu t hi n trên màn hình.
Xin ính kèm theo ây b ng tính ã có s n nh ng o n code nói trên, cùng m t "MyCustomToolbar" làm ví d .
Cũng xin nh c l i, chiêu này ch có tác d ng v i nh ng phiên b n trư c Excel2007.
Sao chép công th c gi nguyên tham chi u tương i (gi ng như sao chép tham chi u tuy t i)
Trong Excel, 1 công th c có th ch a nh ng tham chi u tương i ho c tuy t i. Khi 1 công th c có tham
chi u tương i ư c sao chép, thì do tính ch t, tham chi u s ch y theo n ch m i. Ch có công th c có tham
chi u tuy t i m i gi nguyên khi sao chép.
Xin nh c l i 1 tí:
Khi b n mu n công th c, dù cho copy i âu, cũng tham chi u n 1 ô hay 1 vùng c nh nào ó, b n ph i
dùng tham chi u tuy t i b ng cách thêm d u $ vào tham chi u thí d $A$1. B n cũng có th ch thêm d u $
vào tiêu chí dòng ho c ch tiêu chí c t ch c nh 1 chi u khi copy công th c.
Nhưng ôi khi b n mu n sao chép 1 công th c tham chi u tương i, gi nguyên tham chi u, nhưng l i không
mu n chuy n thành tuy t i? Có nhi u cách làm.
1. Tô en công th c trong thanh công th c (formula bar) r i copy, không copy ô, và t i ô ích cũng paste vào
thanh công th c. Cách này dùng khi b n ch sao chép 1 ô.
2. Khi b n mu n sao chép c 1 kh i ô, thì cùng Find and replace:
- trư c tiên, tô ch n kh i mu n copy.
- Nh n Ctrl + H là phím t t c a Home – Find & Select – Replace (2007) ho c Edit – Replace (2003).
- trong ô find what: gõ d u =
- trong ô replace with: gõ d u “và” (&), ho c d u nháy ơn (‘), ho c b t c ký t nào không dùng trong công
th c
- Nh n Replace All
- nguyên như v y, nh n ctrl + C
- Qua v trí c n chuy n n, nh n Ctrl + V
- nguyên như v y, chuy n ngư c l i d u & ho c d u nháy thành d u = v i công c find and replace.
- Tr v vùng ngu n h i nãy, cũng chuy n ngư c d u & thành d u =
Nghe thì nhiêu khê, nhưng v n nhanh hơn s a t ng tham chi u tương i thành tuy t i c a c 1 kh i ô, r i
chuy n ngư c l i.
Ghi chú: N u ch 1 vài ô thì dùng cách 1 nhanh hơn.
G b nh ng liên k t ma
B n m m t b ng tính, nh n ngay m t thông báo: "Update links", nhưng ch ng có link nào! Làm th nào
Update m t link khi nó không t n t i?
Nh ng liên k t ngoài (external links) là nh ng liên k t tham chi u n m t b ng tính khác, chúng có th n m
trong các công th c, trong các Name, ho c trong các i tư ng ư c chèn vào (các th , các hình...). Khi
42. nh ng liên k t này b "gãy", ph n l n lý do là do vi c di chuy n ho c sao chép m t Sheet n m t b ng tính
khác. Và khi ó, chúng tr thành nh ng "liên k t ma", nghĩa là th y ư ng link, nhưng không bi t chúng ư c
d n n t âu. Sau ây là m t vài cách giúp b n x lý nh ng liên k t ma này.
u tiên, b n c n xem l i li u trong các công th c trong b ng tính c a b n có ch a b t kỳ m t liên k t ngoài
nào (mà không ph i là liên k t ma) không. N u b n không ch c r ng trong các công th c trong b ng tính c a
b n có m t liên k t ngoài, b n hãy s d ng công c tìm ki m. Khi tìm ra r i, b n ch vi c ơn gi n là s a l i
cho nó chính xác, ho c xóa h n chúng i n u không c n thi t.
B n cũng có th vào trang web này: http://www.microsoft.com/downloads/s...displaylang=vi, t i v công c
Delete Links Wizard, là m t công c ư c thi t k tìm và xóa t t c nh ng liên k t như liên k t n các
Name, liên k t n các Name n, n các th , các query, các i tư ng... Tuy nhiên, công c này không tìm
ra ư c nh ng liên k t ma.
Cho dù b n ã tin ch c r ng, không có m t công th c nào có ch a liên k t, b n v n c n ph i ch c ch n là không
có b t kỳ m t liên k t ma nào ang núp âu ó. làm vi c này, tôi thư ng m h p tho i Name Manager,
dò t ng Name m t, ch c ch n r ng không có m t Name nào ch a m t tham chi u n m t b ng tính khác.
V i Excel 2003, thay vì nh n vào t ng cái tên xem tham chi u c a nó trong khung Refers to, b n có th s
d ng cách này, nhanh hơn: Ch n menu Insert | Name | Paste, r i trong h p tho i Paste Name, nh n vào nút
Paste Link. Excel s t o ra m t danh sách các Name có trong b ng tính, cùng nh ng tham chi u c a nó, ngay
trong b ng tính, b n ki m tra.
Excel 2007 thì d hơn, b n có th xem m t l n t t c các Name trong h p tho i Define Name. Nhưng n u b n
cũng mu n dán chúng ra ngoài b ng tính, b n hãy ch n Formulas | Use in formula | Paste Name, r i nh n vào
Paste List trong h p tho i v a xu t hi n.
Tuy nhiên, v i t t c các phiên b n Excel, cách nhanh nh t g i h p tho i Paste Name, là nh n F3.
N u có b t kỳ m t Name nào tham chi u n m t vùng ngoài b ng tính, có th b n s th y chúng có ch a ít
nh t m t ư ng link gi ng cái ã hi n th trong h p tho i c nh báo Update Link khi b n m b ng tính. Và b n
hãy t quy t nh là s a l i ư ng link cho úng, ho c xóa Name ó i.
Có m t lo i kiên k t khác n a, n m trong các bi u . Khi b n ã ki m tra các công th c, các Name như tôi v a
trình bày, mà b ng tính c a b n v n òi Update Link, b n nên ki m tra các bi u (n u có), nghĩa là ki m tra
vùng d li u và nhãn X-asis c a bi u xem chúng có ch a m t liên k t ngoài nào không. N u tìm th y, hãy
s a l i ư ng link cho úng.
Các liên k t ngoài còn có th núp trong các i tư ng (object) như là các Text box, các hình v , v.v... Các i
tư ng này có th ư c liên k t n m t b ng tính khác. Cách d nh t ch n nhanh các i tư ng, là b n ng
t i b t kỳ m t ô nào trong b ng tính, ch n Home | Find & Select | Go to Special [E2003: Edit | Go to... |
Special], ho c nh n F5, r i kích ho t tùy ch n Object và nh n OK. Các thao tác này s ch n t t c các i tư ng
(object) có trong b ng tính. B n nên làm nh ng vi c sau ây trong 1 b n sao c a file: V i t t c các i tư ng
ang ư c ch n, b n có th xóa, lưu b ng tính, óng b ng tính, và m ra l i xem th có còn v n gì n a
không.
Cu i cùng, nơi mà b n ph i tìm là trong nh ng sheet n mà b n ã t o ra, d u i r i quên ph t. B n hãy làm cho
chúng hi n lên (2007: View ➝Unhide, 2003: Format ➝Sheet ➝Unhide). N u m c Unhide này b m i, nghĩa
là không có sheet n. N u b n v n còn nghi ng r ng co nh ng sheet siêu n, hãy c l i chiêu s 5 tìm và
bu c chúng hi n ra.
Th là b n ã x xong nh ng link có th c mà b gãy. Bây gi n nh ng link ma. M fle b l i lên, Ch n Data –
Edit links (2007) ho c Edit Links (2003). ôi khi b n ch c n nh n ch n vào cái link ma, nh n Change Source,
và gán tr l i chính cái link ó. Nhưng thư ng thì b n b 1 thông báo l i r ng công th c nào ó b l i, và không
43. th c hi n ư c.
N u b n làm cách d như v y không xong thì áp d ng cách này:
M c 2 file lên, file l i và file ư c link n. T 1 ô b t kỳ c a file l i, ánh d u b ng (=), r i qua file kia ch n
cũng 1 ô b t kỳ, r i Enter. B n ã t o ư c 1 link thi t, link ngon. Lưu c 2 b ng tính l i, nhưng ng óng.
Vào b ng tính l i, l i ch n Data – Edit links (2007) ho c Edit Links (2003), Change source, s a m i tham chi u
c a link ma vào b ng tính kia. Lưu l i l n n a r i xoá ô ch a link b n m i t o.
Cách này thư ng là có hi u qu tr ma, bây gi Excel nh n ra r ng b n ã xoá link n b ng tính còn l i.
Nhưng n u v n chưa tr t n g c và v n b l i, b n làm bư c ti p theo, nhưng nh là làm trên 1 b n sao c a
file l i.
Cách này s xoá vĩnh vi n d li u c a b n, nên t t nh t là t o 1 b n d phòng trư c. M file l i lên, delete 1
sheet, lưu, óng, r i m lên l i. N u không còn thông báo update link ma, thì 100% link ma n m trong sheet ó.
N u không, delete ti p 1 sheet n a ki m tra. Trư c khi xoá sheet cu i cùng, ph i insert 1 sheet tr ng. Nh
ghi l i nh ng sheet ch a link ma.
Ti p theo, m file backup h i nãy lên, back up l n n a, tr vào sheet l i h i nãy b n ã ghi nh . Bây gi ch n
t ng vùng 10 x 10 ô d li u, xoá b ng l nh Clear – Clear All. Mà khoan, b n backup l n 2 chưa? N u chưa thì
back up i nhé. Bây gi l i lưu, óng, m lên l i xem còn l i không. N u còn, ch n vùng 10 x 10 ô ti p theo, l i
xoá, lưu, óng, m lên xem thông báo update link. n khi nào mà không còn thông báo link ma thì nghĩa là
link ma n m trong vùng 10 x 10 ô m i xoá. B n t p trung tìm ki m trong khu v c này, t ng ô m t, s th y lòi ra
con ma.
Gi m kích thư c file Excel b phình to b t thư ng
B n có bao gi có 1 file Excel b tăng kích thư c n m c báo ng ch bi t nguyên nhân? Có nhi u lý do
làm cho b ng tính b phình lên v kích thư c file và có nh ng cách lo i tr . Nh ng bí quy t sau ây có
th giúp b n n u b n có 1 file Excel có kích thư c l n b t thư ng.
Có khi nào b n b b i th c do c ăn mà chưa tiêu hoá k p chưa? File Excel cũng th . Nó b phình ra là do
b n c nh i nhét th vào b t nó ph i th c hi n, nó ph i nu t tr ng ch không k p nhai, h u qu là nó
s không làm vi c như ý mu n.
Tôi ã th v i 1 file Excel chu n v i khá nhi u d li u. V i d li u thô, nó có kích thư c 1,37 Mb. R i tôi
cho vào 1 Pivot Table, s d ng d li u ngu n là 4 c t c a vùng d li u. Kích thư c file tăng lên 2,4 Mb. Tôi
th thi t l p vài nh d ng, và kích thư c file l p t c b nhân ôi.
M t trong nh ng nguyênnhân ch y u làm tăng kích thư c file nh ng file Excel trư c 2007, khi chưa có
khái ni m table, là các b n c th nh d ng màu, c font, màu ch , óng khung, . .. cho c c t ho c cho
c dòng, n u không nói là c b ng tính; ch không ch nh d ng cho khu v c ch a d li u. Tôi t ng th y
ngư i h m b ng tính m i lên, là l p t c Ctrl A, tô tr ng toàn b , óng khung toàn b . Không nh ng th
h còn xác nh vùng d li u ngu n cho bi u , cho Pivot table, . . . là c nguyên c t. Có khi th y cái
thanh cu n d c và ngang c a Excel tr nên nh tí t , kéo hoài không th y h t mà d li u thì tr ng trơn.
gi i quy t b n ph i s a, b h t nh ng nh d ng th a trong nh ng dòng c t tr ng, b cái thói quen
xoá màu fill color b ng cách ch n fill tr ng. Hãy ch n No Fill! Sau ó i u ch nh d li u ngu n c a bi u ,
c a Pivot Table ch v a v i vùng có d li u.
Hãy làm như sau: trư c h t hãy back up b ng tính l i.
1. G b nh ng nh d ng trên nh ng dòng c t th a:
Bư c u tiên là xác nh b ng tay và m t ô cu i cùng bên ph i dư i, có ch a d li u. ng có mà dùng
phím ctrl+ mũi tên xu ng ho c ctrl + mũi tên qua ph i, ho c dùng Find - Select - Go To Special – Last
Cells, cách này s ch t i ô cu i cùng có nh d ng, không ph i ô cu i có d li u. Khi ã xác nh b ng m t
ô cu i ch a d li u thì click ch n nguyên dòng k dư i ô ó. Lúc này i nh n Ctrl + Shift + mũi tên xu ng
ch n toàn b nh ng dòng bên dư i vùng có d li u. Sau ó dùng l nh Clear – All xoá vùng này.
Tương t , khi xác nh ô cu i có ch a d li u xong, nh n ch n nguyên c t li n k bên ph i, nh n ti p Ctrl
+ Shift + mũi tên qua ph i ch n toàn b c t bên ph i. Sau ó l i dùng l nh Clear – All xoá vùng
44. này.
Không nên dùng l nh xoá dòng ho c c t, vì có th có nh ng công th c tham chi u n chúng. Lưu b ng
tính l i và th xem kích thư c file trong Property:
2007: Office button ➝Prepare ➝Properties ➝Document Properties ➝Advanced Properties
2003: File ➝Properties… ➝General
2. Xoá Macro: Không ph o là xoá h n Macro, mà ch g chúng ra ngoài file Excel:
Có 1 cách nhanh, không gây h i ó là Export t t c các modules và UserForms vào ĩa c ng. Nh n Alt F11
vào c a s VBA. nh n chu t ph i vào t ng module, ch n remove module (tên môdule). Trong thông báo
hi n ra nh n Yes, và ch n 1 thư m c lưu l i. làm ti p cho t ng cái Form. ng quên c nh ng macro
lưu tr trong sheet ho c workbook.
Sau khi ã xoá xong, lưu b ng tính l i. Sau ó, cũng trong c a s VBA, vào menu File – Import File và
import h t nh ng modue và form h i nãy. Làm như v y, ta v n có th s d ng form và Macro, nhưng m i
cái như v y s t o1 file text, và ngăn ch n nh ng th linh tinh mà Macro mang theo.
M t s ng d ng trên Internet có th làm công vi c này, nhưng ư c bi t r ng nh ng ti n ích ó s làm
r i tung code và th m chí làm tăng kích thư c file. T t nh t trư c khi ng d ng 1 ti n ích nào, hãy backup
file c a b n trư c.
3. i u ch nh vùng d li u ngu n:
N u sau khi làm nh ng bư c trên mà kích thư c file c a b n không gi m ư c bao nhiêu, hãy ki m tra d
li u ngu n c a Pivot Table và Pivot Chart. M t vài ngư i thư ng s d ng nguyên c c t d li u làm
ngu n cho Pivot table, ch phòng xa sau này có thêm d li u c p nh t vào dù ch vài dòng. N u nh t
thi t ph i phòng xa như v y, t t hơn b n dùng name ng. Xem thêm tuy t chiêu s 47.
4. Làm s ch các sheet:
Trong các sheet c a b n có th t n t i nh ng nh d ng th a, nh ng style, nh ng autoshape th y ư c và
không th y ư c (có khi lên n hàng trăm ho c hàng ngàn).
a. Xoá object và autoshape th a. tìm ra nh ng autoshape ho c object n b n ph i vào option c a
Excel s a l i như hình sau:
2007:
2003:
45. B n có th nh n Ctrl + G, Special – Object ch n 1 lúc nhi u object.
b. Làm s ch nh ng cái không nhìn th y trong sheet:
Trư c tiên, b n hãy backup b ng tính. Unhide toàn b sheet n và c sheet siêu n. (xem thêm chiêu s
5). Bây gi b nth xoá l n lư t t ng sheet m t (xoá h n), lưu l i, r i vào Property xem l i kích thư c. N u
sau khi xoá sheet nào, mà kích thư c file gi m áng k , thì sheet ó ch a nhi u rác (không k d li u).
V y, khi ã xác nh sheet ch a rác thì b n ph i làm gì?
B n hãy m file backup h i nãy lên, t o 1 sheet m i toanh, ch n vùng d li u c a sheet ch a rác, dùng
l nh Cut (Ctrl + X), ch ng copy, Paste vào sheet m i. B ng cách c t (Cut), Excel s gi nguyên tham
chi u cho b n.
Cu i cùng, delete sheet ch a rác.
Hy v ng là sau này, các b n s bi t cách x lý nh ng file có kích thư c l n l thư ng.
46. C u d li u t m t b ng tính b l i
Khi b ng tính b l i (corrupt), b hư, nghĩa là b n b m t h t d li u, mà nhi u khi s m t mát này còn au
hơn là m t ti n. Chiêu này s giúp b n m t vài cách ph c h i l i ph n nào d li u trong nh ng b ng tính
b l i.
M t b ng tính ôi khi g p ph i nh ng l i mà b n ch ng hi u vì lý do gì. i u này có th em l i cho b n nh ng
v n tr m tr ng, nh t là khi b n b hư m t b ng tính quan tr ng mà b n chưa h sao lưu d phòng. Do ó, bài
h c u tiên là: Luôn luôn sao lưu b ng tính c a b n vào m t nơi khác. Nhưng trong th c t thì không ph i
ai cũng nh i u này, và, có th là b ng tính c a b n s b hư trư c khi b n nghĩ n vi c sao lưu!
Tuy nhiên, b n ng th t v ng quá, vì cho dù b ng tính c a b n b l i, ôi khi b n v n có th m ư c nó ra và
có th làm ư c cái gì ó...
Khi b n v n còn m ư c b ng tính
Khi b n v n còn có th m ư c m t b ng tính b l i, thì trư c khi làm b t c i u gì, b n hãy sao lưu ngay ra
m t b n khác, n u không, có th b n s m t luôn nó. Vì n u còn gi ư c b n sao lưu, b n có th c u c u ư c
m t s giúp chuyên nghi p hơn, khi b n không th làm gì n a.
1. B n hãy m cái b ng tính b l i ó ra, v i phiên b n Excel cao nh t có th , và l i nh n lưu thêm m t l n n a,
tuy nhiên i u này thì không c n thi t n u như b n ang dùng Excel 2007.
2. N u như b ng tính ã làm b ng cách trên ây không ho t ng, b n hãy c g ng m l i l n n a và lưu nó
dư i d ng HTML (Single File Web Page) ho c HTM (Web Page). R i óng nó l i, và l i m ra, nhưng l n này
thì lưu l i v i d ng bình thư ng (*.xls ch ng h n).
Khi lưu d ng HTML ho c HTM, b ng tính c a b n s b m t nh ng th sau ây:
47. • V i nh ng b ng tính t o ra t Excel 2007:
- Nh ng tính năng m i c a Excel 2007
- Các PivotTable và các bi u (chúng v n ư c lưu l i, nhưng s m t h t khi b n m ra và lưu l i v i
d ng bình thư ng c a Excel)
- Các VBA Project.
• V i nh ng b ng tính t o ra t nh ng phiên b n trư c Excel 2007 (Excel 2003, Excel XP,...):
- Nh ng nh d ng s chưa dùng n
- Nh ng style chưa dùng n
- Các thi t l p Data Consolidation
- Các Seriano
- Các công th c s d ng ngôn ng t nhiên, chúng s ư c chuy n i thành các tham chi u dãy bình
thư ng
- Các hàm t t o
- Các nh d ng g ch ngang ch (strikethrough), ch s trên (superscript), ch s dư i (subscript)
- Các thay i có th h i ph c (b ng l nh Undo)
- Các thi t l p nh d ng trang cho các bi u ã ư c nhúng trong b ng tính
- Các danh sách cài t cho các ListBox và ComboBox
- Các lo i nh d ng có i u ki n (Conditional Formatting)
Ngoài ra, các b ng tính ư c chia s (shared workbook) trong nh ng phiên b n trư c Excel 2007 s không còn
chia s ư c n a. V i các bi u , nh ng thi t l p cho "Value (Y) axis crosses at category number" trên tab
Scale trong h p tho i Format Axis s không ư c lưu, n u như tùy ch n "Value (Y) axis crosses a maximum
category" ư c ch n; nh ng thi t l p "Vary colors by point" trong h p tho i Format Data Series cũng không
ư c lưu n u như bi u ch a nhi u hơn m t Data Serie.
3. Cu i cùng, n u như b ng tính ó v n không ho t ng, hãy c g ng m l i b ng tính ó m t l n n a, và l n
này thì lưu nó v i d ng SYLK (lo i t p tin có uôi là *.slk - Symbolic Link). Nhưng hãy nh r ng, khi b n lưu
d ng này, thì ch có Sheet hi n hành (active sheet) ư c lưu, do ó, n u trong b ng tính có nhi u Sheet, b n
hãy làm thêm vài l n, v i m i l n m t Sheet, nh t tên cho nó sao cho d nh n bi t. R i l i m cái b ng tính
*.slk ó ra, và lưu l i v i d ng bình thư ng (*.xls ch ng h n).
48. Khi b n không còn m ư c b ng tính
1. N u như b ng tính b hư c a b n không th m ra ư c n a, b n hãy th dùng Microsoft Word m nó.
Nghe thì có v bu n cư i, nhưng ôi khi, b n có th copy ư c m t vài d li u trong b ng tính này (dĩ nhiên t t
c nh ng nh d ng, công th c, v.v... thì m t h t).
2. B n hãy m m t b ng tính m i, và t o cho nó m t Extenal Link (liên k t ngoài) n b ng tính b hư. Ví d :
='C:Documents and SettingsBNTTMy Documents[ChookSheet.xls]Sheet1'!A1
Copy liên k t này vào nh ng ô khác (s lư ng bao nhiêu thì tùy thu c vào trí nh c a b n v cái b ng tính ã b
hư, nó có bao nhiêu hàng, bao nhiêu c t...), và cũng làm tương t cho nh ng Sheet khác (n u c n thi t). N u
b n không nh ư c b t kỳ tên Sheet nào trong b ng tính ã b hư, b n c t o i m t Sheet v i ư ng d n
chính xác, Excel s hi n th tên c a Sheet khi b n nh n Enter. Có th b n s th y ư c gì ó...
3. N u hai cách trên không em l i cho b n i u gì, b n hãy vào trang web Openoffice.org, download phiên b n
mi n phí c a b ph n m m này v . Ngo i tr các tên trên menu và toolbar, Openoffice.org khá gi ng Excel, vì
nó ư c t o ra cùng m t c u trúc b ng tính v i Excel (có n 96% các công th c trong Excel có th s d ng
trong b ng tính c a Openoffice.org).
Sau khi ã download phiên b n mi n phí c a Openoffice.org, b n cài t nó vào máy. R i dùng nó m b ng
tính b hư c a b n. Trong khá nhi u trư ng h p, d li u c a b n s ư c ph c h i. Tuy nhiên, nh ng VBA code
thì không còn gì c , vì các VBA code c a Excel không tương thích v i Openoffice.org.
4. N u s b n quá en, không th dùng Openoffice.org c u d li u, v n còn m t cách n a, nhưng b n ph i
m t ti n. M t trong nh ng chương trình có th ph c h i khá t t nh ng b ng tính b hư là Corrupt File Recovery.
B n hãy t i và cài t ph n m m này, ch y chương trình ExcelFix, nh n Select File, ch n b ng tính b l i, và
nh n Diagnose ph c h i. B n s th y thành qu c a mình, và có th lưu l i b ng tính, n u như b n ã tr ti n
b n quy n, còn n u chưa tr ti n b n quy n, thì b n ch có th xem ch không th lưu l i.
S d ng Data-Validation khi danh sách ngu n n m trong m t Sheet khác
S d ng Data-Validation là m t cách d nh t áp d ng m t quy t c nh p li u cho m t dãy d li u. Theo
m c nh, Excel ch cho phép Data-Validation s d ng nh ng danh sách ngu n n m trong cùng m t Sheet
v i dãy d li u s ư c áp d ng quy t c này. Tuy nhiên, v n có cách lách kh i chuy n ó.
Chiêu này s giúp b n làm cho Data-Validation có th s d ng nh ng danh sách ngu n n m trong m t Sheet
khác. Cách th nh t là l i d ng chính vi c t tên cho m t dãy c a Excel, cách th hai là s d ng m t hàm
g i ra danh sách ó.
Cách 1: S d ng Name cho dãy ngu n
Có l cách nhanh nh t và d nh t vư t qua rào c n Data-Validation c a Excel là t tên cho dãy mà b n s
dùng làm quy t c nh p li u. bi t cách t tên cho dãy, b n xem lo t bài này: S d ng tên cho dãy.
Gi s b n ã t tên cho dãy s dùng làm quy t c nh p li u là MyRange. B n ch n ô (ho c dãy) trong b t kỳ
Sheet nào mà b n mu n có m t danh sách x ra nh p li u, r i trong menu Data trên Ribbon, b n ch n Data
Tools | Data Validation [E2003: Data | Validation]. Ch n List trong danh sách các Allow, và trong khung
Source, b n nh p vào =MyRange. Nh n OK. B i vì b n ã s d ng m t Name làm List, nên b n có th áp
d ng Data-Validation này cho b t kỳ Sheet nào.
49. Cách 2: S d ng hàm INDIRECT
Hàm INDIRECT() cho phép b n tham chi u n ô ch a d li u text i di n cho m t a ch ô. Và r i b n có
th s d ng ô ó như môt tham chi u c c b , cho dù nó tham chi u n d li u trong m t Sheet khác. B n có
th s d ng tính năng này tham chi u n nơi ch a dãy mà b n s dùng làm danh sách ngu n cho quy t c
Data-Validation.
Gi s , dãy ch a danh sách ngu n này n m Sheet1, trong dãy $A$1:$A$8. t o m t Dala-Validation, b n
cũng làm nh ng bư c như tôi ã nói cách 1, nhưng thay vì gõ tên dãy vào trong Source, thì b n nh p vào ó
công th c: =INDIRECT("Sheet1!$A$1:$A$8"). Hãy ch c ch n r ng tùy ch n In-cell drop-down ang ư c
kích ho t, và nh n OK.
N u tên Sheet c a b n có ch a kho ng tr ng, ho c có d u ti ng Vi t, b n ph i t tên Sheet trong m t c p nháy
ơn ('). Ví d , gi s tên Sheet ch a danh sách ngu n là Sheet 1 (ch không ph i Sheet1), thì b n s a công th c
trên l i như sau: =INDIRECT("'Sheet 1'!$A$1:$A$8"). Ch khác nhau so v i công th c h i nãy là có thêm m t
d u nh y ơn (') sau d u nháy kép ("), và m t d u nháy ơn (') n a trư c d u ch m than (!).
50. Xin m m t ngo c ơn: N u như có th ư c, khi g p nh ng tham chi u n tên Sheet, b n nên t p thói quen
luôn luôn b nó vào trong c p d u nháy ơn. i u này, tuy ch ng có tác d ng gì v i nh ng tên sheet như
Sheet1, DMHH... nhưng nó s giúp b n không bao gi g p l i, khi b n hay t tên Sheet có kho ng tr ng, hay
là có b d u ti ng Vi t...
Ưu i m và Khuy t i m c a c hai cách ã nêu trên
t tên cho dãy, và dùng hàm INDIRECT, u có cái ti n l i và c cái b t ti n.
Ti n l i c a vi c t tên cho dãy, là vi c b n thay i tên Sheet ch ng có nh hư ng gì n Data-Validation. Và
ó chính là cái b t ti n c a vi c dùng INDIRECT, khi b n i tên Sheet, tên m i s không t ng c p nh t
trong công th c dùng INDIRECT, cho nên n u v n mu n dùng công th c này, b n ph i m Data-Validation ra
và s a l i tên Sheet trong công th c.
Ti n l i c a vi c dùng INDIRECT, là dãy dùng làm danh sách ngu n c a b n luôn luôn n m yên ch ã ch n
(A1:A8 trong ví d trên ch ng h n). Còn n u b n dùng Name, mà b n l tay xóa m t vài hàng (ho c c t) ngay
ch ch a Name, thì b n ph i i u ch nh l i cho úng...
i u khi n Conditional Formating b ng checkbox.
M c dù Conditional Formating là 1 trong nh ng chiêu m nh c a Excel, nhưng mu n b t hay t t nó b ng ribbon
hay menu thì khá b c b i. Bây gi ta bi n hoá b ng cách i u khi n b ng 1 checkbox gi ng như 1 công t c
(ho c 1 cái toggle Button càng gi ng hơn).
Conditional Formating có t i Excel 97, gán nh d ng cho nh ng ô nào tho 1 s i u ki n nào ó. i u ki n
có th là 1 i u ki n v giá tr , nhưng ta có th tuỳ bi n nhi u hơn khi dùng i u ki n là công th c, d a vào ó
ta có th thay i nh d ng cho nh ng ô này, khi có s thay i giá tr c a ô khác.
1. Dùng 1 Checkbox ho c 1 Toggle Button xem và n d li u:
B n mu n m t vùng d li u nào ó ch hi n ra lúc c n xem, xem xong thì bi n i cho r nh. Trư c tiên b n ph i
gán lên sheet 1 Checkbox ho c 1 Toggle Button. Trong Excel 2007, vào tab Developer, nh n Insert trong
Controls - ch n Checkbox ho c Toggle Button trong Control Toolbox, trong Excel 2003 ch n trong view –
Toolbar – Control Toolbox, v lên sheet 1 cái. Trong hình, tôi làm th 2 cái.
51. .................
Nh n vào nút design, click ch n cái control b n v a v , nh n thêm nút Property. Trong c a s Property, s a
dòng Caption thành View/ Hide, s a dòng Linked Cell thành $C$2. (c 2007 và 2003 như nhau, c checkbox và
Toggle Button như nhau).
Bây gi khi b n click ch n checkbox ho c nh n nút Toggle, ô C2 s l n lư t có các giá tr TRUE và FALSE.
..................
Bây gi gi s vùng d li u c a b n g m 4 fields, trong ó b n ch mu n 3 fields hi n thư ng xuyên, còn field
th 4 thì khi nào c n m i hi n ra xem, không c n thì d u i. B n ánh d u ch n vùng ch a field 4, trong
2007 b n vào tab Home, Conditional Formating, New Rule, ch n ti p “use a formula to determine which cells
52. to format”, trong 2003 là Fornat - Conditional Formating - ch n ti p “Formula is”. Trong ô k b n, b n gõ: =
$C$2=FALSE.
Nh n vào nút Format, nh d ng font ch màu tr ng. Nh n OK và OK. Nh n nút design 1 l n n a thoát ta
khõi ch design Mode. Và nh n nút toggle ho c click ch n cái checkbox xem k t qu .
53. ............
N u b n không thích thì nh d ng ô C2 ch tr ng luôn, kh i th y ch TRUE, FALSE hi n lên.
2. T t m nh d ng màu cho ô:
Dùng Conditional Formating nh m tô màu ô theo i u ki n giúp ta d tìm ư c nh ng ô có giá tr c bi t cho
trư c. Excel 2007 có nhi u nh d ng khác nhau cho giá tr s n m trong kho ng cho trư c. Nhưng bi n pháp
m t t b ng checkbox là không có s n.
Tương t như ph n trên, ta t o ra 1 checkbox ho c 1 Toggle Button link t i ô $C$2. Nhưng l n này ta t name
cho nó là IsFill ch ng h n. Ta cũng t name cho ô $A$2 là BeginNum và $B$2 là EndNum, v i A2 là gi i h n
dư i thí d 100, và B2 là gi i h n trên thí d 1.000.
Trong vùng d li u B5:B16, ta mu n giá tr nào n m trong kho ng BeginNum và EndNum s ư c tô màu. V y
54. dùng conditional Formating như trên, ch n vùng C8:C18, l n này công th c là:
=AND($C8>=BeginNum,$C8<=EndNum,IsFill)
Ch n cho nó 1 nh d ng màu theo ý mu n.
K t qu : khi nh n button ho c click checkbox thay i tr ng thái thành True, các ô ch a s trong kho ng (100,
1.000) s ư c tô màu, các ô còn l i không tô. Khi thay i thành False, các ô tr l i bình thư ng.
ng th i, vì b n t công th c liên quan n BeginNum và EndNum, nên khi thay i 2 s này, k t qu tô
màu cũng thay i.
............
55. B n th y y, n u b n chưa xem bài này mà th y 1 file tương t c a ngư i khác, b n có th l m tư ng ngư i ta
s d ng code c a VBA. S th c thì quá ơn gi n ph i không?
ánh d u nh ng ô ch a công th c b ng Conditional Formatting
Khi m t ô có ch a d li u, b n có th mu n bi t d li u trong ô ơn thu n là d li u nh p vào, hay d li u là
k t qu c a 1 công th c. B n có th ch c n click ch n ô ó và xem trên thanh công th c. B n cũng có th dùng
phím t t Ctrl + ~ chuy n qua l i gi a ch xem giá tr và xem công th c.
Chiêu s 19 này s gi i thi u v i b n 1 hàm t t o, k t h p v i Conditional Formatting ánh d u ô ch a
công th c. B ng cách này có th giúp b n tìm ra t t c nh ng ô ch a công th c trong s 10.000 ô mà không
ph i ngó t ng ô m t.
M c dù b n có th dùng 1 hàm có s n c a Macro4 trong Conditional Formatting, như sau:
Trong h p tho i Conditional Formatting, ch n công th c, gõ công th c này: = CELL(“type”,A1). Nhưng h n
ch c a vi c dùng hàm Cell() là công th c s t tính l i m i khi có s thay i nh xíu trong b ng tính. Vì
Cell() là 1 hàm thu c lo i volatile. Khi Excel tính l i Cell() cho 10.000 ô như trên s khi n cho b n b c mình vì
ch i.
Do ó b n hãy dùng tuy t chiêu sau ây, ơn gi n, d làm và không ph i hàm lo i volatile:
B n hãy nh n Alt – F11 vào c a s VBA, nh n chu t ph i vào This Workbook insert vào 1 module. Nh p
o n code sau vào khung so n th o:
PHP Code:
Function IsFormula (CheckCells As Range)
IsFormula = CheckCells.HasFormula
End Function
Do tính ch t c a Property HasFormula, hàm b n m i t o s tr v các giá tr lu n lý True, False. Nghĩa là khi
b n gõ vào ô b t kỳ công th c = IsFormula(A1) s cho k t qu True n u A1 ch a công th c và cho k t qu
False n u A1 ch a giá tr .
óng c a s VBA l i, tr v b ng tính. Bây gi ánh d u toàn b vùng d li u c a b n (có th ch n dư ra m t
s c t và dòng, phòng khi b n c p nh t thêm d li u) sao cho ô A1 là ô hi n hành.
B ng cách như chiêu s 18, b n vào ư c ch c n thi t gõ công th c trong h p tho i Conditional Formatting,
và gõ vào:
=IsFormula(A1), sau ó nh d ng tô màu ho c i màu ch cho khác nh ng ô còn l i.
Sau khi nh n OK b n s ư c k t qu là t t c nh ng ô ch a công th c s ư c tô màu. N u b n thêm ho c thay
i 1 ô, n u ô ó tr thành công th c thì l p t c ô ó i màu.
ôi khi b n không th y k t qu , vì anh Bill lanh chanh và ch m hi u, anh ta cho r ng công th c s d ng hàm
c a b n là 1 text nên nh t s a thành : =”IsFormula(A1)”. V y b n ph i vào ch cũ s a l i.
Bây gi m i khi b n s a ho c thêm 1 ô tr thành công th c, ô ó s có màu. ngư c l i, n u b n s a 1 công th c
thành giá tr ho c thêm giá tr vào 1 ô, ô ó s không có màu.
m ho c c ng nh ng ô ã ư c nh d ng có i u ki n
Chúng ta thư ng h i: "Làm th nào tính toán v i nh ng ô ã ư c tô m t màu c th nào ó?" Câu h i này
thư ng ư c nêu ra, b i vì Excel không có m t hàm bình thư ng nào thưc hi n ư c nhi m v này; tuy
56. nhiên, nó có th ư c th c hi n b ng m t hàm t t o.
V n duy nh t x y ra v i vi c s d ng hàm t t o, là nó không th l c ra b t kỳ m t lo i nh d ng nào ã
ư c áp d ng b i vi c nh d ng có i u ki n (conditional formatting). Tuy nhiên, suy nghĩ m t tí, b n v n có
th có ư c k t qu tương t mà không ph i c n n m t hàm t t o.
Gi s r ng b n có m t danh sách dài nh ng con s trong dãy $A$2:$A$100. Và b n ã áp d ng nh d ng có
i u ki n cho dãy ó: ánh d u nh ng ô nào có giá tr n m trong kho ng t 10 n 20. Bây gi , b n mu n l y ra
giá tr c a nh ng ô th a mãn i u ki n mà b n ã thi t l p, và tính t ng c a nh ng ô ã ư c áp d ng nh d ng
ó. Không có gì khó! B n ng nh ng ki u nh d ng ã ư c áp d ng chi ph i b n, nói cách khác, b n
không c n quan tâm nh ng ô ó ư c nh d ng ki u gì. B n ch c n quan tâm n i u ki n áp d ng
nh d ng cho chúng (trong trư ng h p này, là nh ng ô có giá tr trong kho ng t 10 n 20).
B n có th dùng hàm SUMIF() tính t ng c a nh ng ô th a mãn i u ki n nào ó, nhưng ch m t i u ki n
mà thôi! N u mu n có nhi u i u ki n, b n ph i dùng hàm SUMIFS() trong Excel 2007, ho c là dùng m t công
th c m ng. ây tôi s nói n công th c m ng, vì nó có th s d ng trong h u h t các phiên b n c a Excel.
V i trư ng h p ã ví d trong bài này, b n s d ng m t công th c m ng gi ng như sau:
=SUM(IF($A$2:$A$100>10, IF($A$2:$A$100<20, $A$2:$A$100)))
Khi nh p m t công th c m ng, b n ng nh n Enter, hãy nh n Ctrl+Shift+Enter. Khi ó, Excel s t ng
thêm m t c p d u ngo c hai u công th c, gi ng như v y:
{=SUM(IF($A$2:$A$100>10, IF($A$2:$A$100<20, $A$2:$A$100)))}
N u b n t gõ c p d u ngo c ó, thì công th c s không ch y. B n ph i Excel làm vi c này cho b n.
Và b n cũng nên bi t i u này: s d ng công th c m ng có th làm cho Excel tính toán ch m hơn, n u như có
quá nhi u tham chi u n nh ng dãy l n.
Trên di n àn này có r t nhi u các bài vi t v công th c m ng, b n có th tham kh o thêm. Ho c n u b n gi i
ti ng Anh và thích nghiên c u sâu hơn v công th c m ng, b n hãy ghé thăm trang web này:
http://www.ozgrid.com/Excel/arrays.htm.
M t cách khác
Ngoài vi c s d ng công th c m ng, b n có th dùng m t c t ph tham chi u n nh ng ô bên c t A. Nh ng
tham chi u này s tr v nh ng giá tr c a c t A mà th a mãn i u ki n b n ã t ra (ví d : > 10, < 20). làm
i u này, b n theo các bư c sau:
Ch n ô B2 và nh p vào ó công th c:
=IF(AND(A2>10, A2<20), A2, "")
Kéo công th c này xu ng cho n ô B100. Khi các công th c ã ư c i n vào, b n s có nh ng giá tr n m
trong kho ng 10 n 20 (xu t hi n trong c t B).
Thêm m t chiêu ph : nhanh chóng "kéo" các công th c vào trong m t c t xu ng n ô cùng hàng v i ô
cu i cùng ã ư c s d ng c a c t ngay bên c nh (trong trư ng h p này, là "kéo" t ô B2 n ô B100, là ô
tương ng v i ô cu i cùng ã ư c s d ng trong c t A, ô A100), sau khi nh p công th c trong ô u tiên (ô
B2), hãy ch n ô ó, r i nh p úp chu t (double click) vào cái Fill handle (là cái núm chút xíu n m góc dư i
bên ph i c a ô ư c ch n, mà b n v n thư ng dùng "kéo" công th c)
Bây gi , b n có th ch n b t kỳ m t ô nào mà b n mu n xu t hi n t ng c a nh ng giá tr th a mãn i u ki n ã
ra, và s d ng m t hàm SUM bình thư ng (=SUM(B2:B100) ch ng h n). B n có th n (Hide) c t B i n u
b n mu n.
M t cách khác n a
Cách dùng c t ph như tôi v a nói, ch c ch n là ch y t t r i. Nhưng, Excel còn có m t hàm cho phép b n s
d ng hai ho c nhi u i u ki n cho m t dãy. ó làm hàm DSUM().