Gốc > Mục:Bài viết > Mục:Excel >
title:Tuyệt chiêu Excel -p3
date:01-02-2013
sender:Âu Trường Sơn

Mục lục (tt):

21. Tô màu dòng xen kẽ.
22. Tạo hiệu ứng 3D trong các bảng tính hay các ô.
23. Bật, tắt chức năng Conditional Formatting bằng 1 checkbox.
24. Dùng nhiều List cho 1 Combobox.
25. Tạo một danh sách xác thực thay đổi theo sự lựa chọn từ một danh sách khác.
26. Sử dụng chức năng thay thế (Replace) để gỡ bỏ các ký tự không mong muốn.
27. Chuyển đổi con số dạng văn bản sang số thực.
28. Trích xuất dữ liệu số trong 1 chuỗi bằng VBA.
29. Tùy biến chú thích của ô bảng tính.
30. Sort thứ tự dựa trên nhiều hơn ba cột.
Nội dung:

Chiêu thứ 21: Tô màu dòng xen kẽ
Ắt hẳn bạn đã từng thấy bảng tính Excel với những dòng tô màu cách nhau, thí dụ dòng chẵn thì tô màu xám, dòng lẻ không tô hoặc tô màu khác.
Trình bày bảng tính tô màu cách dòng như vậy khiến cho bảng tính có vẻ Pro và làm cho người dùng dễ đọc dữ liệu. Bạn có thể định dạng từ từ bằng tay từng dòng, nếu bạn đủ kiên nhẫn, nhưng bạn biết rồi đấy, kiên nhẫn 1 lần thì chưa đủ. Bạn sẽ phải bực mình khi cần xoá dòng, chèn dòng, cập nhật dữ liệu.
May sao, sử dụng Conditional Formatting có thể giúp bạn thực hiện tô màu nhanh và loại bỏ hết những phiền toái trên sau khi tô màu.

Giả sử bạn có dữ liệu trong vùng A1:H57, và bạn dự trù sẽ cập nhật cho đến hết tháng sẽ khoảng 100 dòng. Vậy bạn đánh dấu chọn khối A1:H100 sao cho ô A1 là ô hiện hành. Dùng cách như chiêu 18, 19, để vào chỗ cần gõ công thức của chức năng Conditional Formatting, và gõ công thức sau:
= Mod(Row(),2)
Nhấn format và chọn màu tô cho dòng lẻ. Nguyên nhân tô dòng lẻ: Công thức trên sẽ cho các giá trị lần lượt là 1, 0, 1, 0, … đến hết dòng 100, tương ứng với True, False, … và Conditional Formatting sẽ chỉ tô dòng True.

Cũng như vậy nếu bạn muốn tô màu cột cách cột, thì dùng công thức =Mod(Column(),2)



Ghi chú: Nếu bạn có sử dụng ASAP Utilities, bạn cũng có thể làm được như sau:
Vào menu ASAP – Row & Column – Color Each n’th row or column in selection



Chọn Row hoặc column tuỳ ý, chọn màu tuỳ ý, gõ 2 trong ô Steps, đánh dấu vào mục chọn Conditional Formatting.



Kết quả công thức của Condition là =MOD(ROW()-1,2*1)+1<=1
Công thức trên có vẻ hơi phức tạp nhưng nếu rút gọn là: = Mod(Row()-1,2)=0 thì hiệu quả tương tự như công thức trên. Sở dĩ nó phức tạp, là để có thể thay đổi phương pháp tô màu theo steps đã chọn. Thí dụ khi chọn step = 3, cách 2 dòng tô 1 dòng, nghĩa là như hình sau: Chỉ tô dòng có Mod(Row()-1,3)=0



Mặc dù phương pháp này dễ thực hiện, nhưng không linh hoạt: Tất cả các dòng lẻ từ 1 đến 100 đều bị tô màu, dù có dữ liệu hay không. (nhớ lại, dữ liệu hiện tại của bạn chỉ đến dòng 57). Vậy có thể chỉ tô tự dộng đến hết dòng cuối có dữ liệu, cò những ô chưa có dữ liệu chỉ bị tô màu sau khi nhập liệu không? Hãy xem cách sau đây:

Tô màu động:
Chỉ cần bạn sửa công thức trên lại 1 xíu xiu:
=And( Mod(Row(),2),CountA($A1:$H1))
Chú ý chỗ tham chiếu tuyệt đối cột và tương đối dòng. Ý nghĩa công thức này là:
- khi bạn đứng ở dòng 1, đó là dòng lẻ và vùng A1:H1 có dữ liệu => tô màu.
- Nếu bạn đứng ở dòng 10, công thức trở thành =And( Mod(Row(),2),CountA($A10:$H10)) nghĩa là dòng chẵn và có dữ liệu => không tô màu
- Nếu bạn đứng ở dòng 59: dòng lẻ nhưng không có dữ liệu => không tô màu.

Mở rộng: Tô màu cách 2 dòng tô 1, hoặc tô xen kẽ 3 màu trở lên:
bạn chỉ cần sửa công thức ASAP cho phù hợp, kết hợp với CountA() cho linh hoạt. Thí dụ với các công thức như hình:



bạn sẽ có kết quả như hình, dòng nào không có dữ liệu thì không tô màu


Chiêu thứ 22: Tạo hiệu ứng 3D trong các bảng tính hay các ô
Bất cứ khi nào bạn nhìn thấy một hiệu ứng 3D trong một chương trình hoặc một ứng dụng, chẳng hạn như Excel, ắt hẳn bạn sẽ thấy một sự đánh lừa qua thị giác được tạo ra bởi cách định dạng đặc biệt. Chính bạn cũng có thể tạo ra hiệu ứng này một cách dễ dàng bằng cách định dạng một ô hoặc một dãy các ô. Phiên bản Excel 2007 đã đưa vào các styles của ô, vì vậy bạn có thể tạo hiệu ứng 3D và lưu nó lại để sử dụng vào bất cứ khi nào bạn muốn.

Hãy bắt đầu với một ví dụ đơn giản, chúng ta sẽ tạo hiệu ứng 3D cho một ô để nó nhìn nổi lên trên giống như một nút lệnh(button).

Trong một bảng tính trống, bạn chọn ô D5. (Bạn chọn ô D5 bởi vì nó không nằm rìa bảng tính). Dưới Cell Options ở tab Home, chọn Format ➝ Format Cells ➝ Border (với phiên bản trước Excel 2007: Format ➝ Cells ➝ Border). Hoặc các bạn có thể click chuột phải, chọn Format cells ➝ Border. Tronghộp line, chọn đường dày nhất thứ 2 (bên phải, thứ 3 từ dưới đếm lên). Chắc chắn rằng màu được chọn là màu đen (hoặc chọn automatic nếu bạn chưa thay đổi mặc định của lựa chọn này). Bây giờ click chọn đường viền bên phải và đường viền bên dưới ở bảng


Quay trở lại với box color để chọn màu trắng. Vẫn chọn đường viền dày thứ 2, và chọn hai đường viền còn lại là đường viền bên trên và bên trái của ô.


Chọn tab Fill (với phiên bản trước Excel 2007: chọn tab Patterns) trong hộp thoại Format Cells và chọn màu xám. Click chọn OK và thôi không chọn ô D5 nữa (di chuyển con trỏ chuột sang ô khác). Ô D5 sẽ xuất hiện nổi lên giống như một button. Bạn đã làm tất cả điều đó chỉ với các đường viền và bóng đổ.


Nếu muốn vui hơn và đa dạng hơn, bạn tạo một ô nhìn giống như là bị lõm hoặc thụt vào trong thì chọn ô E5 (vì nó kế ô D5 và sẽ sử dụng cho bài tập tiếp theo). Chọn Home ➝ Cells ➝ Format ➝ Format Cells ➝ Bord (với phiên bản trước Excel 2007: Format ➝ Cells ➝ Border) và chọn đường viền dày nhất thứ 2 (thứ 3 bên phải từ dưới đếm lên) trong bảng line và chắc chắn màu được chọn là màu đen cho đường viền ở trên và bên trái. Chọn màu trắng trong bảng màu cho đường viền ở bên phải và bên dưới ô. Chọn tab Patterns và chọn màu xám. Click OK. Ô E5 sẽ bị lõm xuống. Việc này trái ngược với ô D5 là hiệu ứng trội lên.


Nếu bạn cảm thấy thích thú với style của ô mà bạn đã tạo ra. Bạn lưu lại bằng cách chọn Home ➝ Styles ➝ Cell Style ➝ NewCell Style, bạn gõ tên mà bạn muốn đặt cho style này vào và click OK. Chú ý rằng các Styles của ô chỉ được lưu lại ở workbook hiện tại mặc dù bạn có thể kết hợp các Styles này từ những workbooks khác. Lựa chọn này không có trong các phiên bản trước Excel 2007. Nếu bạn muốn lưu một style của ô trong các phiên bản trước thì bạn vào Format➝ Style.

Sử dụng hiệu ứng 3D cho một bảng dữ liệu

Kế tiếp, chúng ta sẽ làm thí nghiệm với công cụ này để thấy được các loại hiệu ứng 3D mà bạn có thể tạo ra cho các bảng hoặc các sheets của mình. Chọn ô D5 và E5, click chọn công cụ Format Painter (biểu tượng cái chổi quét ) dưới Clipboard options trên tab Home (với phiên bản trước Excel 2007: xem trên thanh standard toolbar). Trong khi nhấn chuột trái, Click chọn ô F5 và rê chuột qua ô J5, sau đó nhả ra.


Bây giờ chọn vùng D5:J5 và click chọn công cụ Format Painter một lần nữa. Cùng lúc nhấn chuột trái, chọn ô D6, kéo chuột ngang sang phải và kéo xuống ô J15, sau đó nhả ra.


Hiệu ứng 3D của một dãy ô


Nếu bạn muốn lưu style của bảng này, bạn chọn Home ➝ Styles ➝Format as Table ➝ NewTable Style. Với các phiên bản trước Excel 2007 thì bạn không thể lưu style của một bảng.

Chúng ta đã sử dụng một đường viền dày để chắc rằng hiệu ứng được thấy một cách rõ ràng, tuy nhiên, bạn có thể tạo ra một sự tinh tế hơn bằng cách sử dụng một đưởng mảnh hơn.

Bạn cũng có thể sử dụng các đường khác để tạo ra những hiệu ứng hay hơn. Cách dễ nhất để tìm ra những sự kết hợp có hiệu quả là bạn nên thử và kiểm tra sai sót trên một bảng tính trống để tạo ra hiệu ứng mà bạn muốn. Bạn chỉ bị giới hạn bởi sự tưởng tượng và có lẽ là khiếu thẩm mỹ.

Thí dụ dùng màu khác

Thí dụ dùng đường kẻ không liền nét cho những đường kẻ ngang


Hãy luôn luôn nhớ rằng hiệu ứng 3D có thể làm cho bảng tính dễ đọc, nhìn có vẻ chuyên nghiệp và dễ cảm nhận hơn, nhưng khi chúng được sử dụng quá mức chúng có thể có những ảnh hưởng trái ngược. Nên nhớ, sử dụng mọi thứ có mức độ.

Nếu bạn muốn tạo ra đi xa hơn và cung cấp những hiệu ứng 3D một cách tự động và sinh động, bạn có thể kết hợp 3D với định dạng có điều kiện để tự động cung cấp nhiều style mà bạn thích.

Bổ sung:

Bạn có thể dùng chính hiệu ứng 3D cho 1 ô (đã thực hiện ở trên) để dùng như 1 button thực thụ, nếu bạn kết hợp với VBA. Giả sử bạn muốn bảng tính của bạn có 1 button (nổi, đương nhiên), khi nhấn vào nó sẽ chìm xuống và thực thi 1 macro nào đó. Khi nhấn 1 lần nữa thì nút này sẽ nổi lên và thực hiện 1 macro khác hoặc dừng thực hiện macro thứ nhất.

Dùng công cụ ghi macro để ghi lại quá trình lập hiệu ứng 3D cho 1 ô D5, ta được 1 đọan code trong Module, sửa lại chút đỉnh với 1 biến Public IsRun để tuỳ trường hợp gán Border thích hợp:

PHP Code:
Sub Change1()
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = IIf(IsRun, 2, 0)
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = IIf(IsRun, 2, 0)
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = IIf(IsRun, 0, 2)
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = IIf(IsRun, 0, 2)
End With
End Sub

Bây giờ dựa vào sự kiện SelectionChange của sheet, ta làm cho ô D5 thay đổi border như sau:

PHP Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$5" Then
If Target = "Run" Then
Target = "Stop"
IsRun = False
Else
Target = "Run"
IsRun = True
End If
Change1
Cells(1, 1).Select
End If
End Sub

Các bạn xem file đính kèm. Thí dụ này chỉ là minh hoạ, không có đoạn code nào được thực thi, nhưng ô D5 đã trở thành 1 nút nhấn thực sự.


Chiêu số 23: Bật, tắt chức năng Conditional Formatting bằng 1 checkbox
Bạn thường dùng Data Validation để giới hạn dữ liệu nhập vào, hoặc dùng Conditional Formatting để cảnh báo khi nhập dữ liệu trùng. Nhưng đôi khi bạn muốn tắt chúc năng cảnh báo của CF. Có 1 cách đơn giản để bật tắt chức năng này bằng cách sử dụng 1 checkbox. Xem thêm bài Chiêu số 18: Điều khiển Conditional Formating bằng checkbox.
Nhưng ở đây là CF tô màu dữ liệu nhập trùng.

Trong thí dụ dưới đây, bạn sẽ dùng CF để đánh dấu (tô màu) những ô có dữ liệu xuất hiện nhiều hơn 1 lần trong vùng dữ liệu. Giả sử trong vùng A1:A100 bạn đã thiết lập CF với công thức như sau:
=CountIf($A$1:$A$100,$A1)>1

Bây giờ bạn muốn tuỳ ý bật tắt cái CF này. Trước tiên bạn cùng công cu Form hoặc Control Toolbox, vẽ 1 cái Checkbox lên sheet. Thiết lập Property Cell Link cho cái checkbox này là 1 ô nào đó, thí dụ K1. Ta vào Name box đặt nuôn tên cho ô này là IsCheck.

Bây giờ click chọn vùng dữ liệu A1:A100 sao cho ô A1 là ô hiện hành. Thiết lập Conditional Formatting cho vùng này với công thức sau:
=AND(COUNTIF($A$1:$A$100,$A1)>1,IsCheck)
Nhấn nút Format để tô màu theo ý muốn, rồi OK.

Sau khi hoàn thành, khi bạn check vào cái checkbox, ô K1 sẽ thành True, và những ô có dữ liệu trùng sẽ bị tô màu.
Trái lại, khi bạn uncheck cái checkbox, ô K1 sẽ có giá trị False, và chẳng có ô nào bị tô màu nữa.

Cũng như chiêu số 18, bạn hoàn toàn có thể dùng cái toggle Button làm 1 cái công tắc bật tắt y như cái checkbox.

Chắc cũng cần nói lại cách mà công tắc này hoạt động:

Do công thức của bạn là AND(điều kiện 1, điều kiện 2), nên chỉ cần 1 trong 2 điều kiện không thoả (=False), nguyên đk chung sẽ False, CF không hoạt động; vì CF chỉ có tác dụng khi điều kiện chung là True.

Chiêu số 24: Dùng nhiều List cho 1 Combobox
Excel cung cấp cho bạn những cách để chọn 1 thứ trong 1 danh sách để nhập liệu vào 1 ô. Trong đó có công cụ combobox, từ danh sách xổ xuống của combobox, bạn có thể chọn 1 ngày trong tuần, 1 tháng trong năm, hoặc 1 sản phẩm trong danh sách. Nếu bạn cần chọn lựa trong 3 danh sách khác nhau, bạn sẽ nghĩ rằng bạn cần 3 cái combobox.

Thay vì vậy, bạn dùng chiêu sau đây, kết hợp 1 combobox với 3 option button. Trong thí dụ sau, bạn hãy tạo 1 bảng tính, điền số từ 1 đến 7 vào vùng A1:A7, điền từ chủ nhật đến thứ hai vào vùng B1:B7, và điền tháng từ tháng 1 đến tháng 7 vào vùng C1:C7.

Một cách nhanh nhất để điền 21 ô này là hãy gõ 1 vào A1. Trong khi nhấn giữ Ctrl, nắm cái fill handle của ô A1 và kéo xuống A7. Tiếp theo, gõ Sunday vào B2, doubled-click vào fill handle của B1. Cuối cùng gõ Jan vào ô C1, doubled-click vào fill handle của C1. Xong.

Bây giờ bạn vào Developer ➝ Controls ➝ Insert ➝ Form Controls (với Excel 2003, View ➝ Toolbars ➝ Forms) và nhấn icon Option Button. Vẽ 3 cái lên sheet. Vẽ thêm 1 cái Groupbox bao quanh 3 cái Option cho đẹp. Bây giờ vẽ 1 cái Combobox ở 1 chỗ thích hợp.
Nhấn chuột phải vào các Option, chọn Edit Text, sửa các từ Option1, Option 2, Option 3, Groupbox1 như hình:



Nhấn chuột phải vào 1 Option bất kỳ, chọn Format Control, trong tab Control, gõ $F$1 vào ô Cell Link.



Ở ô D6 gõ công thức =ADDRESS(1;$F$1)&":"&ADDRESS(7;$F$1)

Vào Define Name, đặt mới 1 name MyRange, công thức là =INDIRECT($D$6)

Nhấn chuột phải vào cái combobox, vào Format control, trong Cell link gõ MyRange, Cell link là $G$1.

Bây giờ khi bạn chọn 1 trong các option, ô F1 thay đổi các giá trị từ 1 đến 3, ô D6 thay đổi với các giá trị $A$1:$A$7, $B$1:$B$7, $C$1:$S$7. Và list trong combobox cũng đổi theo.

Bổ sung:

Có 1 vấn đề là 3 list không phải lúc nào cũng dài bằng nhau (bằng 7 trong thí dụ trên), thí dụ số từ 1 đến 10, thứ trong tuần từ Chủ nhật đến thứ bảy, tháng từ 1 đến 12. Vậy ta sẽ phải làm gì?

Ta hãy làm từ từ nhé, trước tiên là cách dùng ô phụ (tác giả cũng dùng 2 ô phụ).

Gõ công thức sau vào ô G1:
=COUNTA(INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$ F$1)))

Với công thức trên, G1 sẽ có các giá trị là 10, 7, 12 tương ứng với F1 là 1, 2, 3.

Sửa tiếp số 7 chết trong công thức ô D6 thành $G$1 cho động:
=ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1)

Kết quả hoàn toàn mỹ mãn. Ô D6 sẽ lần lượt là $A$1:$A$10, $B$1:$B$7, $C$1:$C$12



Bây giờ là cách GPE: dấu (bỏ) các ô phụ.

Hiện Name MyRange của ta là =INDIRECT($D$6),

Sửa bước thứ nhất là thay $D$6 bằng công thức của D6:

=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1))

Kế đó thay $G$1 bằng công thức của G1:

=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(COUNTA(INDIR ECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$F$1)));$F$1))

Ta có thể đàng hoàng xoá ô D6 và ô G1. Chỉ còn 1 ô F1 là link cell của 3 options, ta format nó thành chữ trắng là OK.

Trong file đính kèm dưới đây, tôi chưa xoá ô D6 và ô G1, để lại cho các bạn xem chơi, rồi từ từ xoá sau.

Chiêu thứ 25: Tạo một danh sách xác thực thay đổi theo sự lựa chọn từ một danh sách khác


Trước tiên, chúng ta cần chuẩn bị một số dữ liệu để thực hành bài này. Bạn hãy tạo một sheet mới và đặt tên là List và tại ô A1 nhập vào tiêu đề “Objects”. Tại ô B1 nhập vào tiêu đề “Corresponding List”. Vùng A2:A5 bạn nhập vào từ “Can”. Vùng A2:A9 nhập vào từ “Sofa”. Vùng A10:A13 nhập vào từ “Shower”. Vùng A14:A17 nhập vào từ “Car”. Sau đó, trong vùng B2:B17 bạn nhập vào các từ sau: Tin, Steel, Opener, Lid, Bed, Seat, Lounge, Cushion, Rain, Hot, Cold, Warm, Trip, Journey, Bonnet, và Boot.

Tại ô C1 nhập vào tiêu đề “Validation List”. Kế đó, bạn nhập vào các từ sau tại các ô C2:C5: Can, Sofa, Shower và Car. Đây là danh sách chứa các từ duy nhất từ vùng A2:A17.
Bạn có thể dùng chứa năng Advanced Filter để lọc ra danh sách duy nhất này bằng cách chọn vùng A2:A17 ➝ Data ➝ Sort & Filter ➝ Advanced (E2003: Data ➝ Filter ➝➝ chọn Unique Records Only ➝ chọn Filter the List in Place ➝ OK. Sau đó chép danh sách kết quả lọc duy nhất và dán vào vùng C2:C5. Advanced Filter)

Sau khi nhập xong bạn có danh sách như hình sau:



Bước tiếp theo là chúng ta sẽ định nghĩa một số Name cho các List trên. Bạn vào Formulas ➝➝ Name Manager ➝ chọn New (E2003: Insert ➝ Name ➝ Define). Trong hộp Name bạn nhập vào từ “Objects”. Tại hộp Refer To bạn nhập vào công thức sau: Define Names

=OFFSET($A$2,0,0,COUNTA($A$2:$A$20),1)

Nhấn nút OK sau khi nhập xong công thức trên. Tiếp theo, bạn nhấn New (E2003: nhấn Add) để tạo Name mới. Trong hộp Name nhập vào tên là “ValList” và tại Refer To nhập vào =$C$2:$C$5. Nhấn Close để đóng hộp thoại lại.

Bạn chèn thêm một sheet mới có tên là “Sheet1”. Bạn vào Formular ➝ chọn Define Names ➝Manager ➝ chọn New (E2003: Insert ➝ Name ➝ Define). Trong hộp Name bạn nhập vào “CorrespondingList” và tại Refer To nhập vào công thức sau: Name

=OFFSET(INDIRECT(ADDRESS(MATCH(Val1Cell,Objects,0) +1,2,,,"Lists")),0,0,COUNTIF(Objects,Val1Cell),1)

Tiếp tục nhấn New (hoặc Add trong Excel 2003) để thêm Name mới. Trong hộp Name bạn đặt tên là Val1Cell và tại Refer To nhập vào =$D$6 và nhấn OK.

Tiếp tục nhấn New để thêm Name mới với tên là Val2Cell và Refer To là =$E$6 nhấn OK sau khi hoàn tất.

Các Name mà bạn đã tạo như hình sau:



Chúng ta đã chuẩn bị xong các thứ cần thiết, bây giờ đã đến lúc áp dụng chức năng Data Validation. Bạn chọn ô $D$6 trên Sheet1, sau đó vào ngăn Data ➝ tại nhóm Data Tools bạn chọn Data Validation ➝ chọn ngăn Settings trong hộp thoại Data Validatin (E2003: Data ➝ Validation ➝ Settings). Bạn chọn loại List tại hộp Allow và tại hộp Source nhập vào =ValList, đánh dấu chọn In-cell dropdown, sau đó nhấn OK để hoàn tất.



Chọn ô E6, sau đó vào ngăn settings trong hộp thoại Data Validation như trên. Bạn chọn List tại Allow và nhập vào =CorrespondingList tại hộp Source, đánh dấu chọn vào In-cell dropdown và nhấn OK để hoàn tất.
Trong quá trình thiết lập Data Validation cho ô E6, bạn sẽ nhận được thông báo lỗi “The source currently evaluates to an error. Do you want to continue?”. Bạn hãy chọn Yes. Lỗi này xuất hiện là do ô D6 đang rỗng.

Bạn thử chọn một tên trong danh sách tại ô D6 và xem sự thay đổi tương ứng trong danh sách tại ô E6 như hình minh họa sau:


Chiêu 26: Sử dụng chức năng thay thế (Replace) để gỡ bỏ các ký tự không mong muốn.
Khi nhập dữ liệu hay khi sao chép và dán dữ liệu từ nguồn khác vào Excel thì các ký tự không mong muốn sẽ xuất hiện trong toàn bộ bảng tính của bạn. Sử dụng chiêu này bạn có thể khắc phục được những rắc rối khi gỡ bỏ các ký tự không mong muốn bằng tay. Chức năng thay thế (replace) trong Excel có thể giúp bạn gỡ bỏ các ký tự không mong muốn trong bảng tính, nhưng phải qua một vài bước phụ.

Ví dụ như, bạn có thể thay thế những ký tự không mong muốn bằng chuỗi rỗng tựa như nó chưa hề tồn tại. Muốn vậy bạn cần biết mã của từng ký tự mà bạn muốn gỡ bỏ. Tất cả các ký tự đều mang một mã riêng và Excel sẽ cho bạn biết nó là gì khi bạn sử dụng hàm CODE.

Hàm CODE sẽ trả về một mã số cho ký tự đầu tiên trong một chuỗi. Mã này tương đương ký tự mà máy tính của bạn đã thiết lập.

Để thực hiện điều này, chọn một trong các ô có chứa những ký tự không mong muốn. Từ thanh công thức, bôi đen ký tự và sao chép ký tự đó. Tiếp theo chọn ô trống bất kỳ (A1 chẳng hạn) và dán ký tự đó vào ô đã chọn (A1).

Tại ô khác, nhập công thức sau:

=CODE($A$1)

Công thức này trả về mã của ký tự không mong muốn.

Chọn toàn bộ dữ liệu của bạn, chọn Home ➝ Editing ➝ Find & Select ➝ Replace (với phiên bản trước Excel 2007: chọn Edit ➝ Replace…), ở khung Find what: nhấn phim Alt và gõ số 0 kèm theo code đã đưa ra bởi công thức trên. Nếu mã số là 163 thì nhấn Alt và nhấn 0163. (Hoặc bạn có thể để con trỏ chuột tại ô có ký tự không mong muốn, sao chép ký tự đó và dán vào ô Find what cũng được)

Bỏ trống khung Replace With và nhấn Replace all. Việc làm này sẽ xóa bỏ tất cả những ký tự không mong muốn rất nhanh qua việc dò tìm mã ký tự. Lặp lại các bước ở trên cho mỗi ký tự không mong muốn tiếp theo.
Chiêu thứ 27: Chuyển đổi con số dạng văn bản sang số thực


Các giá trị số (number) trong Excel được mặc định canh lề phải và văn bản (text) thì canh lế trái. Do vậy, cách đơn giản để nhận biết các giá trị số và văn bản trong một cột trên bảng tính là bạn thiết lập chế độ canh lề mặc định cho cột đó. Bạn vào Home ➝ nhóm Alignment ➝ chọn Format Cells ➝ vào ngăn Alignment (E2003: Format ➝ Cells ➝ Alignment) ➝ chọn General tại hộp Horizontal để thiết lập việc canh lề mặc định cho cột đang chọn ➝ nhấn OK để đóng hộp thoại Format Cells lại.



Bạn kéo cột rộng ra một ít để đễ phân biệt việc canh lề, khi đó bạn sẽ thấy các giá trị số, ngày tháng sẽ được canh lề phải và văn bản sẽ được canh lề trái.

Dùng Paste Special để chuyển giá trị số dạng văn bản sang số thực

Đây là cách nhanh và dễ dàng nhất để chuyển các giá trị số dang văn bản sang số thực. Các bước thực hiện như sau:

Chọn một ô trống nào đó và nhấn lệnh Copy (Ctrl + C)➝ quét chọn vùng số liệu dạng văn bản định chuyển đổi (ví dụ như vùng A1:A9 ở hình trên) ➝ nhấp phải chuột và chọn Paste Special… ➝ chọn Add tại nhóm Operation ➝ nhấn OK để hoàn tất.

Việc làm trên sẽ giúp chuyển toàn số các con số dạng văn bản sang số thực, vì ô rỗng có giá trị là 0 và khi bạn cộng bất kỳ số nào vào một con số lưu dưới dạng văn bản trong Excel thì bạn đã làm cho con số dạng văn bản chuyển thành số thực.

Dùng các hàm TEXT để chuyển đổi

Bạn có thể áp dụng nguyên tắc như cách trên vào một số hàm có sẵn của Excel để thực hiện việc chuyển đổi. Thông thường, khi bạn dùng một hàm thuộc nhóm TEXT và kết quả trả về dưới dạng con số thì Excel vẫn xem con số đó là giá trị dạng văn bản.

Giả sử bạn có một vùng dữ liệu A1:A7 như hình sau:



Bạn dùng hai hàm trong nhóm TEXT là LEFT và FIND để tách các giá trị ra khỏi các chuỗi văn bản như sau:



=LEFT(A1,FIND(" ",A1)-1)

Sau khi dùng hàm để tách phần giá trị ra thì các kết quả trả về vẫn được Excel xem như là văn bản vì chúng được canh lề trái như hình sau:



Do vậy, bạn cần phải hiệu chỉnh công thức tác chuỗi trên một ít để kết quả trả về là các con số thực sự bằng cách cộng thêm số 0 vào sau công thức trên:

=LEFT(A1,FIND(" ",A1)-1) + 0

Chiêu 28: Trích xuất dữ liệu số trong 1 chuỗi bằng VBA

Bạn thường lấy dữ liệu từ nguồn ngoài, chẳng hạn từ Internet, trong đó có dữ liệu số xen lẫn chữ như: “1,254.00VND” hoặc “USD 2,500.00”, thậm chí còn phức tạp hơn.
Và cũng có khi bạn đã nhập liệu hỗn hợp text và số không theo quy luật nào để có thể lấy riêng số ra bằng các hàm tách chuỗi thông thường.
Dùng 1 hàm tự tạo viết bằng VBA, bạn có thể trích xuất riêng phần số ra, dù cho chuỗi có kiểu dạng gì đi nữa.
Bạn hãy nhấn Alt-F11 để vào cửa sổ VBA, insert 1 module và dán đoạn code sau vào:

PHP Code:
Function ExtractNumber(rCell As Range)
Dim lCount As Long
Dim sText As String
Dim lNum As String
sText = rCell
For lCount = Len(sText) To 1 Step -1
If IsNumeric(Mid(sText, lCount, 1)) Then
lNum = Mid(sText, lCount, 1) & lNum
End If
Next lCount
ExtractNumber = CLng(lNum)
End Function

Vào lại Excel, trong ô B1 gõ dữ liệu số xen lẫn text tuỳ ý, trong ô kế bên C1 gõ công thức:
=ExtractNumber(B1)
Ta sẽ có kết quả như hình:

Bổ sung:

Vẫn còn chút vấn đề: nếu dữ liệu là số thập phân như ô B5, hoặc dữ liệu gồm 2 nhóm số riêng biệt trở lên như ô B4, kết quả sẽ không như ý muốn.

1. Để giải quyết vấn đề số thập phân, ptm0412 có 1 hàm khác:

PHP Code:
Function CtoN(Mystr As String, Optional Dautp As String) As Double
Dim Kqng, Kqtp, Neg As Double, Kqtam As String
Dim Sotp As Double, Le As Byte
Neg = 1
Le = 0
For i = 1 To Len(Mystr)
tam = Mid(Mystr, i, 1)
Select Case tam
Case 0 To 9
Kqtam = Kqtam & tam
Case "-"
Neg = -1
Case Dautp
Kqng = Kqtam
Le = 1
Mystr = Right(Mystr, Len(Mystr) – i)
Kqtp = CtoN(Mystr)
Sotp = Kqtp * 10 ^ (-Len(Kqtp))
End Select
Next i
Select Case Le
Case 0
CtoN = IIf(Kqtam = "", 0, Kqtam)
Case 1
CtoN = Kqng + Sotp
End Select
CtoN = CtoN * Neg
End Function

Ghi chú:- Khi sử dụng hàm này, bạn sẽ thêm vào hàm 1 tham số cho biết dấu thập phân là dấu nào, “,” hay “.”. Thí dụ =CtoN(“USD 14255.20”,”.”), và nếu bạn biết chắc là số nguyên thì không cần thêm.
- Hàm này đọc được cả số âm nếu ký hiệu số âm là dấu trừ và đứng trước số.


2. Để giải quyết vấn đề nhiều nhóm số khác nhau trong chuỗi, Ptm0412 cũng có 1 hàm:

PHP Code:
Function CtoNPlus(Mystr As String, sttchuoi As Byte, Optional Dautp As String) As Double
Newstr = Mystr
For i = 1 To sttchuoi
If Len(Newstr) < 2 Then Exit For
CtoNPlus = CtoN1st(Newstr, Dautp)
Next i
Newstr = ""
End Function

PHP Code:
Function CtoN1st(ByVal Mystr As String, Optional Dautp As String) As Double
Dim Kqng, Kqtp, Neg As Double, Kqtam As String
Dim Sotp As Double, Le As Byte, NewStr2 As String
Neg = 1
Le = 0
For i = 1 To Len(Mystr)
tam = Mid(Mystr, i, 1)
Select Case tam
Case 0 To 9
Kqtam = Kqtam & tam
If IsNumeric(Mid(Mystr, i + 1, 1)) = False And _
Mid(Mystr, i + 1, 1) <> "," And Mid(Mystr, i + 1, 1) <> "." Then
Newstr = Right(Mystr, Len(Mystr) – i)

Exit For
End If
Case "-"
Neg = -1
Case Dautp
Kqng = Kqtam
Le = 1
NewStr2 = Right(Mystr, Len(Mystr) – i)
Kqtp = CtoN1st(NewStr2)
Sotp = Kqtp * 10 ^ (-Len(Kqtp))

End Select
Next i
Select Case Le
Case 0
CtoN1st = IIf(Kqtam = "", 0, Kqtam)
Case 1

CtoN1st = Kqng + Sotp
End Select
CtoN1st = CtoN1st * Neg
End Function

Cú pháp hàm: CtoNPlus(Mystr , sttchuoi, [Dautp])
Sttchuoi là số thứ tự nhóm số trong chuỗi, Dautp là ký tự dấu phân cách thập phân.

Xem file kèm theo.

Chiêu thứ 29: Tùy biến chú thích của ô bảng tính

Khi chúng ta chèn chú thích cho ô bằng lệnh Review ➝ Comments ➝ New Comment (E2003: Insert ➝ Comment). Excel sẽ mặc định chèn tên người dùng của máy tính vào hộp chú thích. Bạn có thể thay đổi điều này bằng cách vào Office ➝ Excel Options ➝ Popular (E2003: Tools ➝ Options ➝ General). Bạn nhập lại đoạn văn bản mặc định mong muốn tại hộp User name:

Mặc dù chú thích cho ô có mục đích chính là hiển thị các thông báo cho bạn hoặc cho người dùng khác, bạn có thể tùy biến nó nhằm mục đích làm rõ hơn chủ ý của bạn.

Trước tiên, bạn cần tùy biến thanh Quick Access Toolbar (QAT) để thêm một nút lệnh vào đó, các bước thực hiện như sau: Office ➝ Excel Options ➝ Customize. Tại hộp Choose commands from bạn chọn Smart Art Tools | Format Tab ➝ nhấn nút Add để thêm vào QAT ➝ nhấn OK hoàn tất (E2003: gọi thanh Drawing bằng cách View ➝ Toolbars➝ Drawing).


Chèn một chú thích cho ô bằng cách vào ngăn Review ➝ tại nhóm Comments ➝ chọn New Comment (E2003: Insert ➝ Comment). Một hộp chú thích sẽ xuất hiện và bạn có thể nhập nội dung chú thích vào đó.

Để thay đổi hình dạng của hộp chú thích này bạn nhấp trái chuột lên khung viền của nó để thoát khỏi chế độ nhập liệu ➝ chọn lệnh Change AutoShape từ thanh QAT ➝ chọn kiểu hình dạng mong muốn trong các nhóm hình Basic Shapes, Block Arrow, Flow Chart, Callouts và Stars and Banners ➝ sau khi chọn hình thì hình dạng hộp chú thích của ô sẽ thay đổi tức thì.




Đối với phiên bản Excel 2007 thì việc hiệu ứng 3-D cho hộp chú thích được thiết lập mặc định và các tùy chọn Shadow Setting đã bị loại bỏ. Bạn có thể thay đổi các tùy chọn đổ bóng, hiệu ứng 3-D trong phiên bản Excel trước đó như sau: chọn khung viền của hộp chú thích ➝ vào thanh Drawing ➝ chọn nút lệnh Shadow Settings ➝ chọn kiểu mong muốn:




Thêm ảnh vào chú thích

Một điều cũng khá thú vị là bạn có thể dùng các hộp chú thích để hiển thị các ảnh mà không làm ảnh hưởng đến các nội dung khác. Thí dụ như, bạn có thể chèn một đồ thị vào hộp chú thích nhằm minh họa tốt hơn cho các số liệu mà không cần phải lúc nào cũng hiện đồ thị lên.

Để thêm hình, bạn chọn ô đang có chú thích ➝ nhấp phải chuột lên ô ➝ chọn Edit Comment ➝ chọn khung viền của hộp chú thích ➝ nhấp phải chuột ➝ chọn Format Comment (E2003: nhấp chuột 2 lần liên tiếp lên khung viền của hộp chú thích) ➝ chọn ngăn Colors and Lines ➝ tại hộp Color, chọn Fill Effects ➝ chọn nút Select Picture ➝ chọn hình và nhấn Insert ➝ OK ➝ OK.



Trích xuất nội dung chú thích

Để trích xuất nội dung trong hộp chú thích, chúng ta cần viết một hàm người dùng đơn giản. Bạn nhấn tổ hợp ALT+F11 để vào cửa sổ VBE hoặc vào ngăn Developer ➝ Code ➝Visual Basic (E2003: Tools ➝ Macro ➝ Visual Basic Editor), sau đó vào Insert ➝ chọn Module ➝ nhập vào đoạn mã sau:

[highlight=VB]
Function GetCommentText(rCommentCell As Range)
Dim strGotIt As String
On Error Resume Next
strGotIt = WorksheetFunction.Clean(rCommentCell.Comment.Text)
GetCommentText = strGotIt
On Error GoTo 0
End Function
[/highlight]

Vào File ➝ Save (Ctrl+S) để lưu Module, sau đó vào File ➝ Close and Return to Microsoft Excel (ALT+Q) để trở về cửa sổ bảng tính. Bạn vào một ô trống nào đó và nhập vào:

=GetCommentText(B2)

Với B2 là ô đang có chú thích. Nhấn Enter để xem kết quả.


Chiêu 30: Sort thứ tự dựa trên nhiều hơn ba cột

Chức năng sort của Excel bị giới hạn với sort trong phạm vi 3 cột. Trong hầu hết các trường hợp, sort theo 3 cột là đủ nhưng đôi khi bạn cần sort nhiều hơn 3 cột dữ liệu. Chiêu này sẽ giúp bạn vượt qua hạn chế này.

Với ví dụ sau, chúng tôi giả sử bạn có các cột dữ liệu liên quan với nhau A, B, C, D và E, và bạn muốn sort dữ liệu này đầu tiên theo cột A, tiếp theo là cột B, kế đến là cột C, tiếp nữa là cột D và cuối cùng là cột E.

Để làm điều này, bạn sort lần lượt theo thứ tự ngược: sort theo cột cuối cùng trước và tiếp theo tuần tự ngược đến cột đầu tiên. Chọn các cột từ A đến E, sau đó chọn Data ➝ Sort. Chọn để sort theo thứ tự cột C đầu tiên, tiếp theo là đến cột D và sau đó đến cột E. Nhấn vào sort. Bây giờ chọn các cột từ A đến E và chọn Data ➝ Sort. Lúc này, sort theo thứ tự cột A trước rồi mới đến cột B. Click sort và mọi thứ sẽ được sắp xếp theo thứ tự.

Excel đã sort theo 5 cột thay vì 3 cột. Nếu bạn muốn Excel tự động làm điều này, bạn có thể sử dụng một macro mà sẽ sort theo vùng chọn và giả định rằng dữ liệu của bạn có các tiêu đề cột được xác định và định dạng ở hàng đầu tiên của vùng chọn. Nếu các tiêu đề được in đậm, Excel sẽ cho biết chúng là các tiêu đề và sẽ không sort chúng. Thay vào đó, nó sẽ sort cột đầu tiên bên trái trước rồi mới tới cột bên phải cho đến tối đa là 256 cột.

Đoạn code macro bạn cần sử dụng phải được đặt trong một module chuẩn. Để làm điều này, bạn chọn Tools ➝ Macro ➝ Visual Basic Editor (Hoặc nhấn Alt+F11), sau đó chọn Insert ➝ Module và gõ đoạn code sau vào:

PHP Code:
Sub SortByX( )
Dim i As Long
For i = Selection.Columns.Count To 1 Step -1
Selection.Sort Key1:=Selection.Cells(2, i), _
Order1:=xlAscending, Header:=xlGuess, Orientation:=xlTopToBottom
Next i
End Sub

Để quay lại excel, bạn đóng cửa sổ code này lại hoặc nhấn Alt+ Q. Ngay khi bạn dán đoạn code này vào, bạn đã có thể thực hiện được việc sort này: Tô chọn vùng cần sort, kể cả tiêu đề, rồi chạy code.

(ST)