Xu Hướng 2/2023 # Cách Dùng Hàm If Trong Excel, Có Ví Dụ Hướng Dẫn Cụ Thể # Top 7 View | Channuoithuy.edu.vn

Xu Hướng 2/2023 # Cách Dùng Hàm If Trong Excel, Có Ví Dụ Hướng Dẫn Cụ Thể # Top 7 View

Bạn đang xem bài viết Cách Dùng Hàm If Trong Excel, Có Ví Dụ Hướng Dẫn Cụ Thể được cập nhật mới nhất trên website Channuoithuy.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Hàm IF là một trong những hàm phổ biến và quan trọng nhất trong excel. Bạn dùng hàm để yêu cầu Excel kiểm tra một điều kiện và trả về một giá trị nếu điều kiện được đáp ứng, hoặc trả về một giá trị khác nếu điều kiện đó không được đáp ứng.

Trong bài viết này, Blog Học Excel Online sẽ tìm hiểu về cú pháp và cách dùng phổ biến của hàm IF, sau đó sẽ có cái nhìn sâu hơn bằng các ví dụ về công thức mà hy vọng là sẽ bổ ích cho cả những người mới dùng Excel và những người có kinh nghiệm.

Cú pháp hàm IF và cách dùng:

Hàm IF là một trong những hàm logic cho phép đánh giá một điều kiện nhất định và trả về giá trị mà bạn chỉ định nếu điều kiện là và trả về một giá trị khác nếu điều kiện là

Cú pháp cho hàm IF như sau:

(logical_test, [value_if_true], [value_if_false])

Như bạn thấy, hàm IF có 3 tham số, nhưng chỉ có tham số đầu tiên là bắt buộc phải có, còn 2 tham số còn lại là không bắt buộc

logical_test: Là một giá trị hay biểu thức logic có giá trị (đúng) hoặc (sai). Bắt buộc phải có. Đối với tham số này, bạn có thể chỉ rõ đó là ký tự, ngày tháng, con số hay bất cứ biểu thức so sánh nào.

Value_if_true: Là giá trị mà hàm sẽ trả về nếu biểu thức logic cho giá trị hay nói cách khác là điều kiện thỏa mãn. Không bắt buộc phải có.

Value_if_false: là giá trị mà hàm sẽ trả về nếu biểu thức logic cho giá trị hay nói cách khác là điều kiện không thỏa mãn. Không bắt buộc phải có.

Những điều cần nhớ về hàm IF trong Excel:

Mặc dù hai biến cuối cùng trong hàm IF là không bắt buộc nhưng công thức có thể trả về những giá trị không mong đợi nếu như bạn không nắm vững những quy tắc cơ bản nhất

Nếu biểu thức logic được cho là và thông số value_if_false bị bỏ qua (chỉ có một giá trị duy nhất ứng với tham số value_if_false) thì hàm IF sẽ trả về giá trị . Đây quả là một điều không mong muốn phải không nào?

Nếu bạn muốn giá trị “” và “” là ký tự thì hãy đặt chúng trong dấu ngoặc kép. Trong trường hợp này, giá trị được trả về sẽ nằm bên trái và được định dạng là dạng . Không có công thức Excel nào nhận dạng “” và “” là giá trị logic cả.

Làm cho hàm IF hiển thị một phép toán và trả về một kết quả

Công thức so sánh giá trị trong cột A1 và B1, và nếu giá trị trong cột A1 lớn hơn trong cột B1 thì kết quả sẽ là việc nhân giá trị trong ô C3 với C10, còn ngược lại sẽ nhân với 5

Công thức sẽ so sánh giá trị trong các ô A1 và B1, nếu giá trị trong ô A1 không bằng B1 thì công thức sẽ trả về giá trị là tổng của tất cả các giá trị từ ô A1 tới D1, ngược lại thì sẽ là một chuỗi ký tự rỗng.

Cách sử dụng hàm IF trong Excel và các ví dụ:

Bây giờ bạn đã quen thuộc với cú pháp của hàm IF, hãy xem xét một số ví dụ về công thức và tìm hiểu cách sử dụng hàm IF như là một hàm tính toán trong Excel

Công thức ví dụ về hàm IF cho phép so sánh số học như: lớn hơn, nhỏ hơn, bằng

Ví dụ 1. Công thức hàm IF không phân biệt chữ hoa hay chữ thường cho các ký tự

Giống như phần lớn các chức năng của Excel, hàm được mặc định không phân biệt chữ hoa hay chữ thường. Điều này có nghĩa rằng các biểu thức logic có chứa ký tự không thể phân biệt được kiểu chữ hoa hay thường trong công thức hàm

Ví dụ 2. Công thức hàm IF phân biệt chữ hoa hay chữ thường cho các ký tự

Nếu như bạn muốn tạo một biểu thức logic có phân biệt kiểu chữ hoa hay thường thì dùng kết hợp hàm với hàm bằng cách so sánh hai chuỗi giá trị và trả về nếu xâu đúng, ngược lại thì trả về . Mặc dù hàm có sự phân biệt hoa hay thường nhưng vẫn bỏ qua sự khác biệt về định dạng.

Bạn sử dụng hàm EXACT bằng cách như sau:

=IF(EXACT(C2,”DELIVERED”), “No”, “Yes”)

Biểu thức logic bạn áp dụng và “DELIVERED” là giá trị văn bản in hoa mà bạn phải hiện thị một cách chính xác tương ứng với cột C.

Lưu ý. Khi sử dụng văn bản như một biến trong hàm IF thì hãy nhớ luôn phải đi kèm với dấu ngoặc kép.

Ví dụ 3. Công thức IF cho giá trị văn bản với việc tham chiếu từng phần

Nếu bạn muốn điều kiện mà bạn đưa ra dựa trên việc tham chiếu từng phần hơn mà tham chiếu chính xác, một giải pháp tức thì cho điều này đó là sử dụng ký tự đại diện (hoặc) trong biểu thức logic. Tuy nhiên cách tiếp cận đơn giản và dễ dàng này sẽ không hoạt động. Rất nhiều hàm trong Excel chấp nhận ký tự đại diện nhưng hàm IF là ngoại lệ.

Một giải pháp khác đó là dùng hàm kết hợp với hàm ISNUMBERvà SEARCH (không phân biệt chữ hoa chữ thường) hoặc hàm FIND (phân biệt chữ hoa chữ thường).

Ví dụ, nếu việc thực hiện điều kiện No là bắt buộc cho cả hai mục “Delivered” và “Out for delivery” thì công thức sau sẽ hiệu quả:

=IF(ISNUMBER(FIND(“ký tự“, nơi để tìm kiếm)), value_if_true, value_if_false)

Ví dụ về công thức hàm IF cho ngày, tháng:

Thoạt nhìn thì công thức hàm IF đối với ngày tháng giống như đối với số và ký tự chúng ta vừa đề cập. Nhưng đáng tiếc là không phải như vậy.

Ví dụ 1. Công thức hàm IF cho ngày tháng với hàm DATEVALUE

Để hàm IF có thể nhận dạng được ngày tháng trong một biểu thức logic, bạn phải đặt nó trong hàm DATEVALUE như thế này: DATEVALUE(“11/19/2014”). Công thức hoàn chỉnh có dạng như sau:

=IF(C2<DATEVALUE(“11/19/2014”), “Completed”, “Coming soon”)

Như minh họa của hình bên dưới, công thức hàm IF này đáng giá ngày tháng trong cột C và trả về giá trị “Completed” nếu như trò chơi này diễn tra trước ngày 11 tháng 11, còn ngược lại thì công thức sẽ trả về giá trị “Coming soon”.

=IF(C2<DATEVALUE(“11/19/2014”), “Completed”, “Coming soon”)

Hàm IF còn có thể hiểu những biểu thức logic phức tạp hơn như ví dụ tiếp theo:

Ví dụ 3. Công thức hàm IF mở rộng cho ngày tháng trong quá khứ và tương lai

Đôi khi bạn muốn đánh dấu ô dữ liệu hay ô trống nhất định thì bạn cần thực hiện một trong các cách sau:

Sử dụng kết hợp hàm IF với ISBLANK

Ô trống

=””

Được cho là nếu ô được chỉ định là ô trống, bao gồm cả các ô với độ dài xâu bằng 0.

Ngược lại thì là FALSE

=IF(A1=””, 0, 1)

Trả về 0 nếu A1 là ô trống. Ngược lại thì trả về 1

Nếu A1 là một chuỗi giá trị rỗng thì trả về 0

ISBLANK()

Được cho là nếu ô được chỉ định là ô rông hoàn toàn – không có công thức, không có cả chuỗi giá trị rỗng được trả về từ công thức khác.

Ngược lại thì là FALSE

=IF(ISBLANK(A1), 0, 1)

Trả lại kết quả giống với công thức trên nhưng xử lý các ô có độ dài chuỗi bằng 0 như các ô rỗng.

Tức là, nếu A1 chứa một chuỗi giá trị rỗng, công thức sẽ trả về 1.

Ô có chứa dữ liệu

Được cho là nếu ô chỉ định có chứa dữ liệu. Ngược lại thì là

Những ô với độ dài chuỗi bằng 0 thì là ô trống

Nếu A1 có chuỗi giá trị rỗng thì công thức trả về 0

ISBLANK()=FALSE

Được cho là nếu ô ấn định không phải ô rỗng. Ngược lại thì là

Ô với độ dài chuỗi bằng o thì là ô không rỗng

=IF(ISBLANK(A1)=FALSE, 0, 1)

Tương tự như các công thức trên, nhưng trả về 1 nếu A1 có bao gồm một chuỗi giá trị rỗng

Giả sử như dữ liệu trong cột C chỉ có được sau khi đã có dữ liệu trong cột B tương ứng với game đã diễn ra thì bạn có thể dùng công thức hàm IF sau để đánh dấu những game đã hoàn thành

Những kiến thức bạn đang xem thuộc khóa học Excel từ cơ bản tới nâng cao của Học Excel Online. Khóa học này cung cấp cho bạn kiến thức một cách đầy đủ và có hệ thống về các hàm, các công cụ trong excel, ứng dụng excel trong công việc… Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký tham gia khóa học này. Hãy tham gia ngay tại địa chỉ: Học Excel Online

Hàm Sum Trong Excel, Ví Dụ Và Cách Dùng Hàm Tính Tổng Theo Hàng Dọc

Nội dung hữu ích * Sửa lỗi hàm sum bằng 0 trong Excel* Sửa lỗi hàm Sum không cộng được trong Excel* Bài mẫu hàm SUM (Kết hợp các hàm khác, có lời giải) * Làm quen hàm SUMIF, hàm tính tổng có điều kiện trong Excel

Hướng dẫn dùng hàm SUM trong Excel – Ví dụ minh họa

1. Cú pháp hàm SUM trong EXCEL

– Cú pháp: =SUM (number 1, number 2, …) – Chức năng: Tính tổng number 1, number 2, …– Trong đó: number 1, number 2, … là các đối số mà bạn muốn tính tổng.

Chú ý:– Ô tính có giá trị logic TRUE được xem là 1, FALSE được xem là 0.– Nếu đối số là mảng hay tham chiếu thì chỉ các giá trị số trong mảng hay tham chiếu đó mới được tính. Các giá trị khác trong mảng hoặc tham chiếu bị bỏ qua.

2. Ví dụ cụ thể dùng hàm SUM trong EXCE

Ví dụ 1:=SUM (1, 2, 3) có giá trị bằng 6.=SUM (2, 3, TRUE) có giá trị bằng 6.=SUM (“2″,”3”,1) có giá trị bằng 6.

Ví dụ 2: Ta có bảng tính lương của nhân viên như sau

– Áp dụng hàm SUM để tính tổng tiền của nhân viên trong tháng ở cột thực lĩnh– Công thức sử dụng: F10=SUM (F5:F9) để chọn tất cả các giá trị từ ô F5 tới F9. Ta có kết quả như hình dưới

Vậy là các bạn đã có kết quả tổng tiền lương phải chi trả cho nhân viên

3. Các lỗi khi sử dụng hàm SUM trong EXCEL

Nếu gặp phải lỗi hàm Excel Sum, có thể là lỗi #VALUE!:

Lỗi phổ biến:#VALUE!: Lỗi này xảy ra nếu bất kỳ đối số nào được cung cấp trực tiếp cho hàm SUM không thể diễn giải là các giá trị số.Lưu ý: nếu một vùng dữ liệu ô được cung cấp chứa các giá trị không thể diễn giải thành các giá trị số, hàm SUM sẽ bỏ qua nó.

Các giá trị nào được đưa vào hàm SUM để tính toán?

Các giá trị số và ngày tháng được coi là giá trị số trong hàm Excel SUM. Tuy nhiên các giá trị văn bản và giá trị logic được xử lý khác nhau, tùy thuộc vào giá trị đó là giá trị được lưu trữ trong các ô của bảng tính hoặc được cung cấp trực tiếp cho hàm SUM.

4. Khắc phục lỗi khi sử dụng hàm SUM

Nếu hàm SUM tham chiếu ô có chứa lỗi #VALUE!, công thức sẽ trả về lỗi #VALUE!.

Để khắc phục lỗi #VALUE!, cách đơn giản là xây dựng một công thức bỏ qua vùng tham chiếu chứa lỗi để tính trung bình các giá trị “bình thường” còn lại.

Để thực hiện theo kịch bản này, bạn sử dụng kết hợp hàm SUM với hàm IF và hàm ISERROR để xác định xem có lỗi trong vùng tham chiếu cụ thể hay không. Kịch bản này yêu cầu công thức mảng:

=SUM(IF(ISERROR(B2:D2),””,B2:D2))

Lưu ý: vì đây là công thức mảng (array) nên bạn sẽ phải nhập bằng cách nhấn các phím CTRL + SHIFT + ENTER. Excel sẽ tự động bọc công thức trong dấu ngoặc {}. Nếu thử nhập các công thức này tự động, Excel sẽ hiển thị công thức dưới dạng văn bản.

Ngoài ra có thể sử dụng hàm trên để khắc phục lỗi #VALUE!, lỗi #N/A, #NULL, #p/0!, và một số lỗi hàm SUM khác.

Các bạn vừa tìm hiểu hàm SUM trong excel, thao tác của nó cực kỳ đơn giản. Ngoài ra bạn hãy tìm hiểu thêm một số hàm tính tổng với điều kiện cho trước như hàm SUMIF trong Exel để thực hiện tính toán trên bảng tính với các bài toán kết hợp nhiều điều kiện mới có kết quả mong muốn.

https://thuthuat.taimienphi.vn/ham-sum-trong-excel-1295n.aspx

Regex Trong Java Với Ví Dụ Cụ Thể

Regular expresstions được sử dụng để định nghĩa các chuỗi mô hình dùng trong tìm kiếm, cập nhật etc. Regular expresstions hay gọi ngắn là java regex.

Lý do sử dụng Java Regex

Lấy ví dụ nhỏ rằng cho một chuỗi str, kiểm tra nếu chuỗi có chứa các ký số thì báo là không hợp lệ, ngược lại hợp lệ.

Mã 1: Lặp từng ký tự của chuỗi và kiểm tra xem nếu có bất kỳ một ký số nào thì chuỗi không hợp lệ.

public class Main { public static void main(String[] args) { String str = "shareprog1ramming"; if (isValid(str)) { System.out.println("Hop le"); } else { System.out.println("Khong hop le"); } } private static boolean isValid(String str) { for (int i = 0; i < str.length() - 1; i++) { return false; } } return true; } }

Output:

Khong hop le

Mã 2: Vẫn là ý tưởng nếu chuỗi có bất kỳ ký số nào thì là không hợp lệ. Sử dụng java regex.

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String str = "shareprog1ramming"; String pattern = "\D+"; if (Pattern.matches(pattern, str)) { System.out.println("Hop le"); } else { System.out.println("Khong hop le"); } } }

Output:

Khong hop le

Ở trên chuỗi pattern được gọi là một chuỗi mẫu dùng để áp dụng trong java regex. Ý nghĩa “\D+” chuỗi không được chứ các ký số [0-9].

So với Mã 1 thì Mã 2 có phần ngắn gọn hơn. Đó chỉ là một trong các ứng dụng của java regex. Giờ thì đi tìm hiểu xem các tính năng và cách sử dụng của java regex nào.

Pattern class

Pattern.matches()

Ở phần đầu mình đã dùng matches() để kiểm tra xem chuỗi đầu vào không được chứa các ký số. Chuỗi mẫu pattern \D+ dùng để kiểm tra chuỗi chỉ chứa các các ký tự.

Như vậy method matches() là một method cho phép kiểm tra tính hợp lệ của chuỗi theo một chuỗi mẫu được định nghĩa trước.

Pattern.compile()

Giả sử mình có danh sách các chuỗi ký tự, mình muốn tìm các chuỗi chứ ký tự a, b, c không phân biệt chữ hoa hay chữ thường. Cho ví dụ str1 = ‘faaBcf’, str2 = ‘abcfd’ hoặc str3 = ‘ABC’ đều hợp lệ.

Vậy phải làm cách nào đây? Liệt kê các trường hợp có thể có rồi lập thành các chuỗi mẫu để matches()?

import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { strs.add("agabc"); strs.add("agg1c"); strs.add("klA13c"); strs.add("bgaBc"); strs.add("afABC"); String patternStr = ".*abc.*"; Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE); for (String str : strs) { Matcher matcher = pattern.matcher(str); if (matcher.matches()) { System.out.println(str); } } } }

Output:

Khi chúng ta sử dụng compile() sẽ nhận được một instance của Pattern. Sử dụng Matcher. matches() để kiểm tra tính hợp lệ của chuỗi.

Pattern.split()

Ngoài công dụng kiểm tra và tìm kiếm, Pattern cũng cung cấp cơ chế cắt chuỗi dựa trên chuỗi mẫu regex. Giống như matcher() split() cũng được dùng từ instance được tạo ra từ compile().

Nếu các bạn dùng cách cắt chuỗi bình thường thì chỉ cắt theo ký tự ngắt xác định. Còn với split() cắt với chuỗi mẫu sẽ giúp cho việc cắt chuỗi linh hoạt hơn.

Ví dụ mình có chuỗi “share235programming52.net” không biết vì lý do gì mà nó bị chèn các chữ số vào, bây giờ mình muốn lọc các chữ số ra để lấy lại chuỗi vốn có.

Mình sẽ dùng split() với đoạn chuỗi mẫu khớp với các chữ số, để khi gặp các chữ số thì nó sẽ cắt chuỗi. Sau đó nối mảng nhận được từ split() sẽ được chuỗi ban đầu.

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String str = "share235programming52.net"; String patternStr = "\d+"; Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE); String[] results = pattern.split(str); StringBuilder primitive = new StringBuilder(); for (String s : results) { primitive.append(s); } System.out.println(primitive.toString()); } }

Output:

shareprogramming.net

Matcher Class

Ở phần trên mình đã giới thiệu sơ qua Matcher class bằng việc sử dụng method matches(). Phần này chúng ta sẽ tìm hiểu xem thử Matcher class còn có những thứ gì nữa nào.

Để kiểm tra tính hợp lệ dựa trên chuỗi mẫu của một Matcher instance được tạo ra từ Pattern.matcher()

Matcher matcher = pattern.matcher(str); if (matcher.matches()) { System.out.println(str); }

Tương tự matches(), chỉ khác một điểm duy nhất là lookingAt() sẽ kiểm tra chuỗi regex tại đầu chuỗi, trong khi matches() sẽ kiểm tra trên toàn bộ chuỗi.

Method find() thường được dùng để tìm kiếm chuỗi con hoặc chuỗi regex trong chuỗi input

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String str = "share235programming52.net"; String patternStr = "program"; Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(str); boolean found = matcher.find(); System.out.println(found ? "Tim thay" : "Khong tim thay"); } }

Output

start() và end()

Cả 2 method này được dùng chung với find() để lấy vị đầu và cuối của chuỗi tìm kiếm được.

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String content = "ZZZ AA PP AA QQQ AAA ZZ"; String string = "AA"; Pattern pattern = Pattern.compile(string); Matcher matcher = pattern.matcher(content); while(matcher.find()) { System.out.println("Index: "+ matcher.start() + " - " + matcher.end()); } } }

Output

Nếu bạn muốn tìm một chuỗi trong mảng ứng với mỗi chuỗi cho trước. Hoặc chúng ta loop qua các phần tử của mảng và sử dụng equals() để so sánh, hoặc chúng ta có thể dùng regex như sau:

Pattern.matches("shareprogramming", "shareprogramming");

Character classes

Character class cho phép định nghĩa một tập các ký tự và cho phép trùng khớp với một ký tự trong chuỗi input đầu vào.

Cho ví dụ:

Pattern.matches(“[pqr]”, “abcd”) chúng ta sẽ nhận được false vì p, q, r đều không có trong chuỗi input. Pattern.matches(“[pqr]”, “r”) true vì r được tìm thấy trong chuỗi input.Pattern.matches(“[pqr]”, “pq”) false vì r không chứa một trong hai.

Cách sử dụng character class:

[abc]: Phù hợp với chuỗi chỉ chứa duy nhất một trong ba ký tự a, b hoặc c.

[^abc]: Phù hợp với chuỗi chỉ chứa một ký tự ngoại trừ a, b hoặc c.

[a-zA-Z]: Phù hợp với chuỗi chỉ chứa một ký tự trong khoảng a-z và A-Z.

[a-d[m-p]]: Phù hợp với chuỗi chỉ chứa một ký tự trong khoảng a-d và m-p. (phép hội)

[a-z&&[abc]]: Phù hợp với chuỗi chỉ chứa một ký tự trong các ký tự a, b hoặc c. (phép giao)

[a-z&&[^bc]]: Phù hợp với chuỗi chỉ chứa một ký tự trong trong khoảng a-z ngoại trừ b và c.

[a-z&&[^m-p]]: Phù hợp với chuỗi chỉ chứa một ký tự trong trong khoảng a-z ngoại các ký tự trong khoảng m-p.

Các Character class dựng sẵn

Để dễ dàng cho chúng ta, java xây dựng một số character class:

w

Một ký tự hoặc ký số

W

Không phải một ký tự hoặc một ký số

Note: Ở trên các bạn thấy các chuỗi regex đều chỉ chứa một dấu . Ấy vậy mà trong ví dụ thì lại có đến 2 dấu ?. Thật ra trong java một dấu là một ký tự escape. Thế nên để biểu diễn dấu chúng ta phải sử dụng đến 2 cấu đấy.

Boundary Matchers

Ở các phần trên chúng ta đã biết làm sao để tìm so khớp một chuỗi. Giờ đây, boundary matchers giúp chúng ta tìm kiếm chính xác vị trí xuất hiện trong chuỗi input.

Chúng ta một danh sách các boundary matchers sau:

^ – Đặt trước từ được khớp

$ – Đặt cuối từ đựợc khớp

b – Kiểm tra mẫu bắt đầu hay kết thúc trên word boundary.

B – Kiểm tra mẫu bắt đầu hay kết thúc không trên word boundary.

A – Bắt đầu chuỗi input.

G – Yêu cầu đối sánh chỉ xảy ra một lần vào cuối lần đối sánh trước.

Z – Cuối cùng của chuỗi input nhưng có thể cho cùng các terminators.

z – Cuối cùng của chuỗi input.

Ví dụ: Input = “hgaishga” đi tìm vị trí của str = “hga” trong chuỗi input.

^ – đặt trước từ được khớp

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "hgaishga"; String regex = "^hga"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(txt); while (matcher.find()) { System.out.println("Start: " + matcher.start()); System.out.println("End: " + matcher.end()); } } }

Output: start: 0 – end: 3

$ – đặt sau từ được khớp

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "hgaishga"; String regex = "hga$"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(txt); while (matcher.find()) { System.out.println("Start: " + matcher.start()); System.out.println("End: " + matcher.end()); } } }

Output: start 5 – end: 8

b – Kiểm tra mẫu bắt đầu hay kết thúc trên word boundary

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "hgaishga"; String regex1 = "\bhga"; Pattern pattern1 = Pattern.compile(regex1, Pattern.CASE_INSENSITIVE); Matcher matcher1 = pattern1.matcher(txt); while (matcher1.find()) { System.out.println("Start: " + matcher1.start()); System.out.println("End: " + matcher1.end()); } System.out.println(); String regex2 = "hga\b"; Pattern pattern2 = Pattern.compile(regex2, Pattern.CASE_INSENSITIVE); Matcher matcher2 = pattern2.matcher(txt); while (matcher2.find()) { System.out.println("Start: " + matcher2.start()); System.out.println("End: " + matcher2.end()); } } }

Output:

Start: 0End: 3

Start: 5End: 8

Input = hgahga hga , regex = \Dhga

Quantifiers

Quantifiers cho phép chỉ định số lần xuất hiện trong chuỗi input. Chúng ta có 3 loại quantifiers sau: Greedy, Reluctant, Possesive.

Với 3 loại trên về mặt ý nghĩa là giống nhau, thế nhưng trong một các trường hợp cụ thể chúng sẽ thực hiện theo cách riêng của nó. Chúng ta sẽ đi qua các ví dụ để xem chúng khác nhau thế nào!

Chuỗi regex: a?Input string: aTìm thấy “a” bắt đầu tại 0 kết thúc tại 1Tìm thấy “” bắt đầu tại 1 kết thúc 1

Chuỗi regex: a*Input string: aTìm thấy “a” bắt đầu tại 0 kết thúc taị 1Tìm thấy “” bắt đầu tại 1 kết thúc 1

Chuỗi regex: a+Input string: aTìm thấy “a” bắt đầu tại 0 kết thúc taị 1

Qua ví dụ trên ta thấy a? và a* đều có kết quả Tìm thấy “” bắt đầu tại 1 kết thúc 1. Tương ứng với không xuất hiện trong chuỗi input.

Chuỗi regex: a?Input string: aaaaaTìm thấy “a” bắt đầu tại 0 kết thúc tại 1Tìm thấy “a” bắt đầu tại 1 kết thúc tại 2Tìm thấy “a” bắt đầu tại 2 kết thúc tại 3Tìm thấy “a” bắt đầu tại 3 kết thúc tại 4Tìm thấy “a” bắt đầu tại 4 kết thúc tại 5Tìm thấy “” bắt đầu tại 5 kết thúc 5

Chuỗi regex: a*Input string: aaaaaTìm thấy “a” bắt đầu tại 0 kết thúc taị 5Tìm thấy “” bắt đầu tại 5 kết thúc 5

Chuỗi regex: a+Input string: aTìm thấy “a” bắt đầu tại 0 kết thúc taị 5

Sự khác nhau giữa Greedy, Reluctant, Possessive

Greedy: Mặc định nó sẽ cố gắng chuỗi dài nhất phù hợp với pattern đã cho. Trước khi xứ lý Greedy sẽ đọc toàn bộ chuỗi và cố gắng so khớp, nếu không thoả nó tiến hành bỏ ký tự cuối ra và tiếp tục so sánh cho đến khi tìm thấy.

Reluctant: Nó ngược lại với greedy. Nó bắt đầu từ ký tự đầu tiên và xử lý một ký tự tại một thời điểm.

Possessive: Tương tự như Greedy, điểm khác nhau lớn nhất là Possessive không xoá ký tự cuối cùng và tiến hành kiếm tra lại.

Chuỗi Regex: .*foo

Chuỗi Regex: .*?foo

Chuỗi Regex: .*+foo

Nhìn vào ví dụ đầu tiên sử dụng greedy quantifier, .* dùng để tìm “anything”, cho nên riêng .* nó đã tìm ra chuỗi xfooxxxxxxfoo, nhưng còn ký chuỗi foo đằng sau nên nó sẽ tiến hành bỏ đi ký tự cuối cùng, đến khi bỏ được 3 ký tự cuối chúng ta sẽ tìm thấy kết quả so sánh khớp đầu tiên là (xfooxxxxxx cho .* và foo). Tiếp tục đến cuối ta có xfoo.

Ở ví dụ thứ hai, reluctant quantifier xử lý tuần tự từ phần tử đầu tiên đến hết ta cũng có 2 chuỗi thoả xfoo, xfooxxxxxxfoo.

Và ví dụ cuối cùng chúng ta không tìm thấy bất kỳ chuỗi nào, vì .* chiếm trọn chuỗi input, vì Possessive quantifier không có cơ chế bỏ đi ký tự cuối và tiếp tục so sánh nên ta không có kết quả nào thoả mãn.

Code demo

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern p = Pattern.compile(".*?foo"); Matcher m = p.matcher("xfooxxxxxxfoo"); while (m.find()) System.out.println("Start: " + m.start() + " to " + (m.end())); } }

1, Viết chương trình kiểm tra ký tự đầu tiên của chuỗi có phải là chữ in hoa hay không?

2, Viết chương trình kiểm tra định dạng của địa chỉ email. Cho email đinh dạng đính thoả mãn các điều kiện sau:

Bắt đầu bằng ký tự a-z hoặc A-Z – (^[a-zA-Z]+).

Email không được chứa các ký tự đặt biệt – ([a-zA-Z0-9]*)

@ xuất hiện 1 lần trong sau nó là các chữ cái, ví dụ @gmail, @yahoo etc – (@{1}[a-zA-Z]+).

Email kết thúc với .com – mail.com$

Source code tham khảo

3, Kiểm tra định dạng của số điện thoại. Biết rằng số điện thoại có 10 chữ số, bắt đầu bằng số 0. Số tiếp theo không được là số 0.

Source code tham khảo

Hướng Dẫn Cách Dùng Hàm Index Trong Excel Chi Tiết Nhất

Hàm INDEX là hàm trả về giá trị hoặc tham chiếu của 01 ô trong Excel là giao nhau giữa dòng và cột được xác định bởi các thông số cho trước. Hàm này cũng được coi là một hàm tìm kiếm với khả năng vận dụng và kết hợp cùng các hàm khác khá mạnh mẽ, có thể áp dụng để giải quyết nhiều hơn các vấn đề phức tạp.

Cú pháp của hàm Index trong Excel

Hàm INDEX có 2 dạng:

Một là Hàm INDEX Dạng Mảng: Kết quả của  hàm INDEX sẽ trả về giá trị của một ô (Khi bạn đã cho các giá trị tham chiếu kèm theo)

Hai là Hàm INDEX Dạng Tham Chiếu:  Kết quả sẽ trả về một dải ô tham chiếu, được quy định bởi  [area_num]

Cách viết hàm INDEX dạng mảng trong Excel

Cú Pháp: (Array,Row_num,[Column_num])

Trong đó:

– Array: bắt buộc Phạm vi ô hoặc một hằng số mảng.

– Row_num: Thứ tự dòng cần tìm (tính từ dòng đầu tiên của Array đến dòng chứa giá trị cần tìm kiếm).

– Column_num: Thứ tự cột cần tìm (tính từ cột của Array đến cột chứa giá trị cần tìm kiếm).

Phải có ít nhất một trong hai đối số Row_num, Column_num. Nếu đối số nào để trống sẽ được hiểu là chọn vị trí cột đầu hoặc hàng đầu. 

Ví dụ 1: Cho danh sách nhóm học sinh,tìm tên học sinh biết tên học sinh đó ở hàng 2 cột 2. 

Ô C9 Công thức: =INDEX(B4:C7,2,2)

Hàm INDEX Dạng Tham Chiếu

Cú Pháp: INDEX(Reference,Row_num,[Column_num],[Area_num])

Trong đó:

– Reference: bắt buộc Vùng tham chiếu,.

– Row_num: Thứ tự dòng cần tìm (tính từ dòng đầu tiên của Array đến dòng chứa giá trị cần tìm kiếm).

– Column_num: Thứ tự cột cần tìm (tính từ cột của Array đến cột chứa giá trị cần tìm kiếm).

– Area_num: tùy chọn Số của vùng ô sẽ trả về giá trị trong reference. 

Nếu Area_num được bỏ trống thì hàm INDEX dùng vùng 1.

Tiếp ví dụ 1:

Ô C9 Công thức: =INDEX(B4:C7,2,1,1)

KẾT HỢP HÀM INDEX VÀ HÀM MATCH TRONG EXCEL

Hãy tìm hiểu hàm Index kết hợp Match với yêu cầu sau:

Tìm doanh số của cửa hàng D

Tìm tên cửa hàng khi biết trước doanh số

YÊU CẦU SỐ 1: TÌM DOANH SỐ CỦA CỬA HÀNG D

Để giải quyết yêu cầu này sử dụng Cú pháp hàm INDEX kết hợp hàm MATCH sau:

=INDEX($B$2:$C$7,MATCH(C9,$B$2:$B$7,0),2)

Trong đó:

– $B$2:$C$7: Array/ vùng dữ liệu

– MATCH(C9,$B$2:$B$7,0): Kết quả của hàm MATCH sẽ trả về số thứ tự dòng của cửa hàng D trong Array

– 2: Là cột thứ 2 tính từ cột đầu tiên mà cột đó chứa giá trị tìm kiếm = Doanh số

Kết quả ta nhận được như sau:

 Khi thay đổi giá trị trong ô C9, kết quả trong ô C10 sẽ tự động đổi theo đó bạn.

Hoặc thay đổi tương ứng doanh thu bạn sẽ thấy kết quả thay đổi theo.

YÊU CẦU SỐ 2: TÌM TÊN CỬA HÀNG KHI BIẾT TRƯỚC DOANH SỐ

Tìm vị trí của Doanh số biết trước số bằng hàm MATCH trong cột doanh 

= MATCH(C12,$C$2:$C$7,0)

Tìm trong cột tên cửa hàng: cửa hàng đang có doanh số tương ứng

$B$2:$B$7: Array/ Vùng chứa Tên cửa hàng cần tìm.

Kết hợp lại:

=INDEX($B$2:$B$7,MATCH(C12,$C$2:$C$7,0))

Cụ thể cách sử dụng hàm trong hình sau:

KẾT HỢP HÀM INDEX CÙNG HÀM SUM

Bài toán cũ, nhưng đổi yêu cầu:

Tính doanh số cột C:

=SUM(C2:C7)

=SUM(INDEX(A2:C7,,3))

Tính doanh số 3 cửa hàng trên cùng

=SUM(C2:C4)

=SUM(C2:INDEX(A2:C7,3,3))

KẾT HỢP HÀM INDEX CÙNG HÀM MIN/ MAX

Bài toán cũ, nhưng đổi yêu cầu khi kết hợp MIN/ MAX

Tìm cửa hàng doanh số thấp nhất:

=INDEX(B2:B7,MATCH(MIN(C2:C7),C2:C7,0))

Tìm cửa hàng doanh số cao nhất:

Đánh giá bài viết này

Cập nhật thông tin chi tiết về Cách Dùng Hàm If Trong Excel, Có Ví Dụ Hướng Dẫn Cụ Thể trên website Channuoithuy.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!