+ Trả Lời Ðề Tài
Trang 3/6 đầuđầu 1 2 3 4 5 6 cuốicuối
Hiển thị kết quả tìm kiếm từ 21 đến 30 trên tổng số: 51

Ðề tài: Những "tuyệt chiêu" trong Excel

Hybrid View

  1. #1
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    Chiêu số 19: Đá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.

    Cái CF và cái UDF này đơn giản mà thực sự hữu ích, bạn nhỉ!


    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 09:53 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  2. #2
    Tham gia ngày
    07 2007
    Nơi Cư Ngụ
    Dalat
    Bài gởi
    4,829
    Cảm ơn
    3,677
    Được cảm ơn 12,831 lần trong 3,688 bài viết

    Chiêu thứ 20: Đế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 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().

    Để thử nó, bạn dùng lại ví dụ ở trên: tính tổng của những giá trị trong dãy $A$2:$A$100 thỏa mãn điều kiện lớn hơn 10 và nhỏ hơn 20. Bạn hãy chọn các ô C1:D2, đặt tên cho nó là SumCriteria. Rồi chọn ô C1, nhập vào đó công thức: =$A$1, tham chiếu đến ô đầu tiên của Sheet. Copy công thức đó sang ô D1, bạn sẽ có hai bản sao cho ô tiêu đề của cột A, và những ô này (C1, D1) sẽ được dùng như những ô tiêu đề của vùng điều kiện của hàm DSUM, vùng mà bạn đã đặt tên là SumCriteria (C1:D2).

    Trong ô C2, nhập vào biểu thức >10. Trong ô D2, nhập vào biểu thức <20. Rồi tại ô mà bạn muốn có kết quả là tổng của những giá trị thỏa mãn điều kiện vừa nêu, nhập vào công thức sau:
    =DSUM($A$1:$A$100, $A$1, SumCriteria)
    DSUM là một hàm có hiệu quả nhất khi bạn làm việc với những ô thỏa mãn nhiều điều kiện; và không giống như mảng, các Hàm cơ sở dữ liệu được thiết kế riêng cho những trường hợp này. Thậm chí khi chúng tham chiếu đến những dữ liệu rất lớn, làm việc với những con số lớn, thì ảnh hưởng của chúng đến tốc độ tính toán là rất nhỏ so với việc dùng công thức mảng.

    Thêm một cách khác nữa
    Cách này, tôi học được trên Giải pháp Excel: Dùng hàm SUMPRODUCT().

    Cũng với bài toán tính tổng của những giá trị trong dãy $A$2:$A$100 thỏa mãn điều kiện lớn hơn 10 và nhỏ hơn 20. Bạn hãy chọn ô mà bạn muốn có kết quả là tổng của những giá trị thỏa mãn điều kiện vừa nêu, nhập vào công thức sau:
    =SUMPRODUCT(($A$2:$A$100>10) * ($A$2:$A$100<20) * $A$2:$A$100)
    Hoặc:
    =SUMPRODUCT(--($A$2:$A$100>10), --($A$2:$A$100<20), $A$2:$A$100)
    Diễn một cách bình dân, thì hàm SUMPRODUCT sẽ copy khối $A$2:$A$100 ra thành 3 mảng (trong bộ nhớ máy tính): Mảng thứ nhất, nếu giá trị trong một ô mà > 10, ô đó sẽ có giá trị là 1 (TRUE), còn không thì bẳng 0 (FALSE); Mảng thứ hai, cũng tương tự như vậy, nhưng áp dụng cho những ô có giá trị <20; và Mảng thứ 3 có giá trị trong mỗi ô bằng các giá trị tương ứng trong $A$2:$A$100.

    Tiếp theo, SUMPRODUCT sẽ nhân từng nhóm 3 giá trị tương ứng trong mỗi mảng với nhau. Bạn sẽ thấy, chỉ khi nào giá trị trong mảng 1 và mảng 2 là 1, thì giá trị được nhân ra mới bằng giá trị tương ứng trong $A$2:$A$100; còn nếu có một giá trị nào đó trong mảng 1 hoặc mảng 2 mà bằng 0, thì kết quả của phép nhân này sẽ bẳng 0. Nói cách khác, chỉ những giá trị nào trong $A$2:$A$100 thỏa mãn điều kiện >10 và <20 thì mới được lấy ra.

    Cuối cùng, SUMPRODUCT sẽ cộng hết các kết quả của phép nhân ở trên (SUM là phép tính tổng, PRODUCT là phép tính nhân, SUMPRODUCT là tổng của các tích), và đó chính là kết quả mà ta muốn có.


    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 09:54 PM Lý do: Thêm một cách khác nữa


  3. #3
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    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

    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 09:54 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  4. #4
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    All


    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. Trong hộ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(IsRun20)
        
    End With
        With Selection
    .Borders(xlEdgeTop)
            .
    LineStyle xlContinuous
            
    .Weight xlMedium
            
    .ColorIndex IIf(IsRun20)
        
    End With
        With Selection
    .Borders(xlEdgeBottom)
            .
    LineStyle xlContinuous
            
    .Weight xlMedium
            
    .ColorIndex IIf(IsRun02)
        
    End With
        With Selection
    .Borders(xlEdgeRight)
            .
    LineStyle xlContinuous
            
    .Weight xlMedium
            
    .ColorIndex IIf(IsRun02)
        
    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
    (11).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ự.



    Tập tin đính kèm
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 09:55 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  5. #5
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    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.
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:07 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  6. #6
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    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.


    Tập tin đính kèm
    thay đổi nội dung bởi: ptm0412, 21-12-08 lúc 12:25 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  7. #7
    Tham gia ngày
    03 2007
    Nơi Cư Ngụ
    HCM
    Bài gởi
    1,392
    Cảm ơn
    1,572
    Được cảm ơn 7,869 lần trong 1,144 bài viết

    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:



    Tập tin đính kèm
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:08 PM


  8. #8
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    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.
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:08 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


  9. #9
    Tham gia ngày
    03 2007
    Nơi Cư Ngụ
    HCM
    Bài gởi
    1,392
    Cảm ơn
    1,572
    Được cảm ơn 7,869 lần trong 1,144 bài viết

    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



    Tập tin đính kèm
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:09 PM


  10. #10
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    3,881
    Cảm ơn
    1,759
    Được cảm ơn 8,638 lần trong 3,360 bài viết

    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(sTextTo 1 Step -1
    If IsNumeric(Mid(sTextlCount1)) Then
    lNum 
    Mid(sTextlCount1) & 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 StringOptional Dautp As String) As Double
    Dim Kqng
    KqtpNeg  As DoubleKqtam As String
    Dim Sotp 
    As DoubleLe As Byte
    Neg 
    1
    Le 
    0
    For 1 To Len(Mystr)
        
    tam Mid(Mystri1)
        
    Select Case tam
            
    Case 0 To 9
                Kqtam 
    Kqtam tam
            
    Case "-"
                
    Neg = -1
            
    Case Dautp
                Kqng 
    Kqtam
                Le 
    1
                Mystr 
    Right(MystrLen(Mystr) - i)
                
    Kqtp CtoN(Mystr)
                
    Sotp Kqtp 10 ^ (-Len(Kqtp))
            
    End Select
    Next i
    Select 
    Case Le
    Case 0
    CtoN 
    IIf(Kqtam ""0Kqtam)
    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 Stringsttchuoi As ByteOptional Dautp As String) As Double
    Newstr 
    Mystr
    For 1 To sttchuoi
    If Len(Newstr) < 2 Then Exit For
    CtoNPlus CtoN1st(NewstrDautp)
    Next i
    Newstr 
    ""
    End Function 
    PHP Code:
    Function CtoN1st(ByVal Mystr As StringOptional Dautp As String) As Double
    Dim Kqng
    KqtpNeg  As DoubleKqtam As String
    Dim Sotp 
    As DoubleLe As ByteNewStr2 As String
    Neg 
    1
    Le 
    0
    For 1 To Len(Mystr)
        
    tam Mid(Mystri1)
        
    Select Case tam
            
    Case 0 To 9
                Kqtam 
    Kqtam tam
            
    If IsNumeric(Mid(Mystr11)) = False And _
            Mid
    (Mystr11) <> "," And Mid(Mystr11) <> "." Then
          Newstr 
    Right(MystrLen(Mystr) - i)

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

            
    End Select
    Next i
    Select 
    Case Le
    Case 0
    CtoN1st 
    IIf(Kqtam ""0Kqtam)
    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.


    Tập tin đính kèm
    thay đổi nội dung bởi: BNTT, 23-11-08 lúc 11:09 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm nhi giáo bất quyện dã .


+ Trả Lời Ðề Tài
Trang 3/6 đầuđầu 1 2 3 4 5 6 cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 3 người đang xem đề tài này. (0 thành viên và 3 khách)

     

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.