Sunday, May 23, 2021

ExcelEasy1.blogspot.com: Hướng dẫn cập nhật thời gian nhập liệu tự động bằng VBA


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Text <> "" Then
Target.Offset(0, 1) = Format(Now, "dd")
Target.Offset(0, 2) = Format(Now, "mm")
Target.Offset(0, 3) = Format(Now, "yyyy")
End If
End Sub

Download File: Driver

Monday, April 26, 2021

Làm Thế Nào Để Kiểm Tra Xem Số Có Phải Là Số Nguyên Tố Trong Excel Hay Không?

Như chúng ta đã biết, số nguyên tố là số tự nhiên chỉ chứa hai ước số tự nhiên phân biệt: Một và chính nó. Nếu bạn có một danh sách các số trong một trang tính, làm thế nào bạn có thể kiểm tra xem các số đó có phải là số nguyên tố hay không.


mũi tên màu xanh bong bóng bên phải Kiểm Tra Xem Một Số Có Phải Là Số Nguyên Tố Hay Không Bằng Công Thức Mảng

Công thức sau có thể giúp bạn xác định số đó có phải là số nguyên tố hay không, vui lòng thực hiện như sau:

1. Nhập công thức sau vào một ô trống - ví dụ C2 bên cạnh dữ liệu của bạn:

=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime")) (A2 là ô chứa số mà bạn muốn kiểm tra), rồi nhấn Ctrl + Shift + Enter các phím với nhau và bạn sẽ nhận được kết quả, nếu số là số nguyên tố, nó sẽ hiển thị “Số nguyên tố” trong ô, nếu không, “Không phải số nguyên tố” sẽ được hiển thị, xem ảnh chụp màn hình:

doc kiểm tra xem số nguyên tố 1

2. Sau đó, chọn ô C2 và kéo chốt điền xuống các ô mà bạn muốn áp dụng công thức này và tất cả các số sẽ được xác định xem có phải là số nguyên tố hay không. Xem ảnh chụp màn hình:

doc kiểm tra xem số nguyên tố 2


mũi tên màu xanh bong bóng bên phải Kiểm Tra Xem Một Số Có Phải Là Số Nguyên Tố Hay Không Bằng Hàm Do Người Dùng Xác Định

Sau đây Chức năng do người dùng xác định cũng có thể giúp bạn kiểm tra số nguyên tố hay không, vui lòng làm như sau:

1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: Kiểm tra xem một số có phải là số nguyên tố hay không:

1
2
3
4
5
6
7
8
9
10
Function CheckPrime(Numb As SingleAs Boolean
'Updateby Extendoffice
    Dim As Long
    If Numb < 2 Or (Numb <> 2 And Numb Mod 2 = 0) _
     Or Numb <> Int(Numb) Then Exit Function
    For X = 3 To Sqr(Numb) Step 2
        If Numb Mod X = 0 Then Exit Function
    Next
    CheckPrime = True
End Function

3. Sau đó, lưu và đóng mã này, quay lại trang tính và nhập công thức này: = checkprime (A2) vào một ô trống bên cạnh danh sách số của bạn, sau đó kéo chốt điền xuống các ô bạn muốn chứa công thức này, nếu số là số nguyên tố, nó sẽ hiển thị TRUE, nếu không, nó sẽ hiển thị FALSE, xem ảnh chụp màn hình:

doc kiểm tra xem số nguyên tố 3

Saturday, July 20, 2019

P2. Hướng dẫn lập trình SQL Server Transact-SQL

6- Các kiểu dữ liệu đặc biệt trong T-SQL

6.1- Kiểu dữ liệu TABLE (Dạng tường minh)

T-SQL cho phép bạn khai báo một biến có kiểu dữ liệu TABLE.
Cú pháp:
1
2
3
4
5
6
-- Định nghĩa một biến có kiểu TABLE.
-- Chú ý: Các giàng buộc cũng có thể tham gia vào khai báo biến kiểu TABLE (Xem trong ví dụ).
Declare @v_variable_name  TABLE  (
  Column1 DataType1,
  Column2 DataType2
);
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- Ví dụ khai báo một biến có kiểu TABLE.
Declare @v_Table TABLE  (
First_Name Varchar(30),
Last_Name Varchar(30),
Dept_ID Integer,
Salary Float
);
 
 
-- Các giàng buộc cũng có thể tham gia vào trong định nghĩa biến kiểu TABLE:
-- Ví dụ:
Declare @v_table TABLE  (
  Product_ID Integer IDENTITY(1,1) PRIMARY KEY,
  Product_Name  DataType2 NOT NULL Default ('Unknown'),
  Price Money CHECK (Price < 10.0)
);
Ví dụ: Insert dữ liệu vào biến có kiểu TABLE.
1
2
3
4
5
6
Insert Into
    @v_Table (First_Name, Last_Name, Dept_ID, Salary)
Select Emp.First_Name, Emp.Last_Name, Emp.Dept_Id, 1000
From
    Employee Emp
Where Emp.Emp_ID < 4;
Bạn cũng có thể Update trên biến có kiểu TABLE:
1
2
3
4
Update
   @v_Table
Set Salary = Salary + 100
Where Dept_Id = 10;
Delete trên biến có kiểu TABLE:
1
Delete From @v_Table Where Dept_ID = 10;
Query dữ liệu trên biến có kiểu TABLE:
1
2
3
Select * from @v_Table
Where Dept_ID = 10
Order by First_Name;
Ví dụ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
BEGIN
 
 DECLARE @v_Emp_ID integer = 1;
 
 -- Khai báo một biến kiểu TABLE.
 DECLARE @v_Table TABLE (
   First_Name varchar(30),
   Last_Name varchar(30),
   Dept_Id integer,
   Salary float DEFAULT 1000
 );
 
 -- Sử dụng INSERT INTO để trèn dữ liệu vào @v_Table.
 INSERT INTO @v_Table (First_name, Last_Name, Dept_ID)
   SELECT
     emp.First_Name,
     emp.Last_Name,
     emp.Dept_Id
   FROM Employee Emp
   WHERE Emp.Emp_ID < 4;
 
 -- Update @v_Table
 UPDATE @v_Table
 SET Salary = Salary + 100
 WHERE First_name = 'Susan';
 
 -- Duyệt các giá trị trên @v_Table.
 SELECT
   *
 FROM @v_Table;
 
END;
Kết quả chạy ví dụ:

6.2- Kiểu dữ liệu TABLE (Dạng không tường minh)

T-SQL cho phép bạn khai báo một biến kiểu TABLE không tường minh. Tên biến bắt đầu bởi #.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BEGIN
 
-- Sử dụng SELECT INTO để trèn dữ liệu vào #v_My_Table. 
SELECT
 emp.First_Name,
 emp.Last_Name,
 emp.Dept_Id,
 1000 Salary INTO #v_My_Table
FROM Employee Emp
WHERE Emp.Emp_ID < 4;
 
-- Update #v_My_Table
UPDATE #v_My_Table
SET Salary = Salary + 100
WHERE First_name = 'Susan';
 
-- Duyệt các giá trị trên #v_My_Table.
SELECT
 *
FROM #v_My_Table;
 
END;
Kết quả chạy ví dụ:

7- Con trỏ (Cursor)

7.1- Con trỏ là gì?

Cursor là kiểu biến có cấu trúc, cho phép bạn xử lý dữ liệu gồm nhiều dòng. Số dòng phụ thuộc vào câu lệnh truy vấn dữ liệu. Trong quá trình xử lý, bạn có thể thao tác với cursor thông qua từng dòng dữ liệu. Dòng dữ liệu này được định vị bởi một con trỏ. Với việc dịch chuyển con trỏ, bạn có thể truy cập tất cả các dòng dữ liệu.

7.2- Khai báo con trỏ

Cú pháp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- ISO Syntax
DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR
    FOR select_statement
    [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
[;]
 
-- Transact-SQL Extended Syntax
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
    [ FORWARD_ONLY | SCROLL ]
    [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
    [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
    [ TYPE_WARNING ]
    FOR select_statement
    [ FOR UPDATE [ OF column_name [ ,...n ] ] ]
[;]

7.3- Ví dụ với Con trỏ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

USE learningsql;
 
BEGIN
 
-- 
-- Khai báo biến:
DECLARE @v_Emp_ID integer;
DECLARE @v_First_Name varchar(50);
DECLARE @v_Last_Name varchar(50);
 
DECLARE @v_Count integer;
 
-- Khai báo một con trỏ (CURSOR).
DECLARE My_Cursor CURSOR FOR
SELECT
 Emp.EMP_ID,
 Emp.FIRST_NAME,
 Emp.LAST_NAME
FROM Employee Emp
WHERE Emp.EMP_ID < 3;

-- Mở Cursor
OPEN My_Cursor;
 
-- Di chuyển con trỏ từ đến dòng đầu tiên.
-- Và gán các giá trị cột vào các biến.
FETCH NEXT FROM My_Cursor INTO @v_Emp_ID, @v_First_Name, @v_Last_Name;
 
-- Trong trường hợp còn bản ghi @@FETCH_STATUS = 0.
WHILE @@FETCH_STATUS = 0
BEGIN
 PRINT 'First Name = '+ @v_First_Name+' / Last Name = '+ @v_Last_Name;
 
 -- Di chuyển đến bản ghi tiếp theo.
 -- Và gán các giá trị cột vào các biến.
 FETCH NEXT FROM My_Cursor INTO @v_Emp_ID, @v_First_Name, @v_Last_Name;
END
 
-- Đóng Cursor.
CLOSE My_Cursor;
DEALLOCATE My_Cursor;
 
END;
Kết quả chạy ví dụ:

7.4- Ví dụ sử dụng Con trỏ (Khai báo dạng biến)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
USE learningsql;
 
BEGIN
 
-- 
-- Khai báo biến:
DECLARE @v_Emp_ID integer;
DECLARE @v_First_Name varchar(50);
DECLARE @v_Last_Name varchar(50);
 
-- Khai báo một biến kiểu con trỏ.
DECLARE @My_Cursor CURSOR;
 
-- Sét câu lệnh truy vấn cho con trỏ.
Set @My_Cursor = CURSOR FOR
SELECT
 Emp.EMP_ID,
 Emp.FIRST_NAME,
 Emp.LAST_NAME
FROM Employee Emp
WHERE Emp.EMP_ID < 3;
 
 
-- Mở Cursor
OPEN @My_Cursor;
 
-- Di chuyển con trỏ đến dòng đầu tiên.
-- Và gán các giá trị cột vào các biến.
FETCH NEXT FROM @My_Cursor INTO @v_Emp_ID, @v_First_Name, @v_Last_Name;
 
-- Trong trường hợp có bản ghi @@FETCH_STATUS = 0.
WHILE @@FETCH_STATUS = 0
BEGIN
 PRINT 'First Name = '+ @v_First_Name+' / Last Name = '+ @v_Last_Name;
 
 -- Di chuyển đến bản ghi tiếp theo.
 -- Và gán các giá trị cột vào các biến.
 FETCH NEXT FROM @My_Cursor INTO @v_Emp_ID, @v_First_Name, @v_Last_Name;
END
 
-- Đóng Cursor.
CLOSE @My_Cursor;
DEALLOCATE @My_Cursor;
 
END;
Kết quả chạy ví dụ:

8- Điều khiển ngoại lệ

Khi lập trình T-SQL có thể có những lỗi xuất hiện trong Code của bạn, chẳng hạn như lỗi chia cho 0. Hoặc lỗi khi bạn trèn một bản ghi trùng lặp khóa chính, ... Bạn cần phải xử lý các tình huống này.
Hãy xem một ví dụ đơn giản, xử lý lỗi chia cho 0.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
USE learningsql;
 
BEGIN
 
-- 
-- Khai báo biến:
DECLARE @v_a float = 20;
DECLARE @v_b float = 0;
DECLARE @v_c float;
DECLARE @v_Error_Number integer;
 
-- Sử dụng BEGIN TRY .. END TRY để bẫy lỗi.
-- Nếu lỗi xẩy ra trong khối này
-- nó sẽ nhẩy vào khối BEGIN CATCH .. END CATCH.
BEGIN TRY
 
  ---
  PRINT '@v_a = ' + CAST(@v_a AS varchar(15));
  PRINT '@v_b = ' + CAST(@v_b AS varchar(15));
  --Lỗi chia cho 0 xẩy ra tại đây.
  SET @v_c = @v_a / @v_b;
 
  -- Dòng bên dưới này sẽ không được chạy.
  -- Chương trình nhẩy vào khối BEGIN CATCH .. END CATCH
  PRINT '@v_c= ' + CAST(@v_c AS varchar(15));
 
END TRY
-- BEGIN CATCH .. END CATCH phải được đặt ngay
-- phía sau của khối BEGIN TRY .. END TRY.
BEGIN CATCH
  -- Mã lỗi.
  SET @v_Error_Number = ERROR_NUMBER();
  -- In ra mã lỗi:
  PRINT 'Error Number: ' + CAST(@v_Error_Number AS varchar(15));
  -- Nguyên nhân lỗi:
  PRINT 'Error Message: ' + ERROR_MESSAGE();
  --  Mức độ nghiêm trọng của lỗi:
  PRINT 'Error Severity: ' + CAST(ERROR_SEVERITY() AS varchar(15));
  -- Mã trạng thái:
  PRINT 'Error State: ' + CAST(ERROR_STATE() AS varchar(15));
  -- Dòng bị lỗi:
  PRINT 'Error Line: ' + CAST(ERROR_LINE() AS varchar(15));
  -- Tên của thủ tục (hoặc function) hoặc trigger, có code gây ra lỗi này.
  PRINT 'Error Procedure: ' + ERROR_PROCEDURE();
END CATCH;
 
END;
Kết quả chạy ví dụ:
Thông tin lỗi:
HàmMô tả
ERROR_NUMBER()Trả về mã lỗi.
ERROR_MESSAGE()Trả về văn bản đầy đủ của các thông báo lỗi. Các văn bản bao gồm các giá trị đã cung cấp cho các tham số, chẳng hạn như độ dài, tên đối tượng, hoặc thời gian.
ERROR_SEVERITY()Trả về mức độ nghiêm trọng của lỗi.
ERROR_STATE()Trả về trạng thái lỗi
ERROR_LINE()Trả về số vị trí dòng code gây lỗi.
ERROR_PROCEDURE()Trả về tên của stored procedure hoặc trigger nơi mà lỗi phát ra.



Over 50 Ebooks Excel and VBA free Download

1. Statistics and Probability for Engineering Applications With Microsoft Excel by W.J. DeCoursey - PDF Free Download Download Siz...