Cách Làm Việc Với Excel / Top 9 # Xem Nhiều Nhất & Mới Nhất 6/2023 # Top View | Rafs.edu.vn

Làm Việc Với Các Công Thức Ngày Và Giờ Trong Excel

Nếu bạn thường xuyên sử dụng Excel, tôi chắc chắn rằng bạn đã từng bắt gặp ngày và giờ trong các ô của bạn. Dữ liệu thường có một bản ghi khi nó được tạo ra hoặc cập nhật, vì vậy, biết cách làm thế nào để làm việc với dữ liệu này là điều cần thiết.

Cách định dạng ngày trong Excel để chúng xuất hiện theo định dạng ưa thích của bạn

Các công thức để tính toán số ngày, tháng, và năm giữa hai thời điểm

Một công thức date trong Excel để xuất ra thời điểm của ngày hôm nay, và một phím tắt để thêm thời điểm hiện tại

Microsoft Excel cơ bản có thể làm bất cứ điều gì với dữ liệu, miễn là bạn chỉ cần biết cách làm. Hướng dẫn này là một bước quan trọng khác để thêm những kỹ năng vào bộ công cụ Excel của bạn. Hãy bắt đầu nào.

Các hàm ngày và giờ trong Excel (Video hướng dẫn)

Video hướng dẫn này sẽ hướng dẫn bạn đi qua cách để làm việc với ngày tháng và giờ trong Excel. Tôi khái quát định dạng ngày tháng với các kiểu khác nhau, cũng như các công thức ngày trong Excel để tính toán và làm việc với ngày. Hãy chắc chắn tải về cuốn bài tập bảng tính Excel miễn phí với các bài tập mà tôi đã đính kèm với hướng dẫn này.

Hãy đọc tiếp tài liệu tham khảo hướng dẫn về cách định dạng ngày và giờ trong Excel, và làm việc với chúng trong các công thức của bạn. Tôi còn sẽ chia sẻ một vài lời khuyên mà không được khái quát ở trong video hướng dẫn.

Nhập ngày tháng và giờ trong Excel

Đối với phần này của hướng dẫn, sử dụng tab có tiêu đề “Typing Dates & Times” trong bài tập ví dụ.

1. Cách nhập ngày

Tôi khuyên bạn nên nhập ngày theo cùng một định dạng được sử dụng trong hệ thống của bạn. Đối với độc giả người Mỹ của chúng tôi, một ngày đầy đủ sẽ trong định dạng ” ngày/tháng/năm“. Kiểu châu Âu là ” tháng/ngày/năm.”

Khi tôi nhập ngày, tôi luôn luôn nhập vào ngày đầy đủ cùng với tháng, ngày và năm. Nếu tôi chỉ muốn hiển thị tháng và năm, tôi sẽ chỉ cần định dạng nó theo cách đó (Bạn sẽ rõ trong chốc lát nữa).

2. Cách nhập thời gian

Rất dễ dàng để nhập thời gian trong Excel. Chúng ta có thể chỉ định bất cứ điều gì từ chỉ là một giờ trong ngày, đến chính xác từng giây mà một thứ gì đã diễn ra.

Nếu tôi muốn nhập thời gian là 4PM, tôi gõ “4 pm” vào một ô trong Excel và sau đó nhấn Enter:

Lưu ý sau khi chúng ta nhấn Enter, Excel chuyển đổi những gì chúng tôi đã nhập vào thành một định dạng dữ liệu giờ:phút:giây.

Đây là cách để nhập một thời gian cụ thể trong bảng tính của bạn:

Điều quan trọng là sử dụng các dấu hai chấm để phân chia phần dữ liệu thời gian, và sau đó thêm một khoảng trắng cộng với “AM” hoặc “PM.”

3. Cách nhập ngày và giờ kết hợp

Bạn cũng có thể nhập kết hợp ngày và giờ trong Excel cho các timestamp cụ thể.

Để nhập một sự kết hợp ngày giờ, chỉ cần sử dụng những gì chúng ta đã học được về cách nhập ngày và cách nhập giờ.

Chú ý rằng Excel chuyển đổi giờ sang một định dạng 24 giờ khi nó được sử dụng kết hợp với một ngày, theo mặc định. Nếu bạn muốn thay đổi kiểu của ngày này, hãy đọc tiếp.

Bonus: Phím tắt Excel cho thời gian hiện tại

Một trong những phím tắt yêu thích của tôi Excel để chèn vào thời gian hiện tại vào một bảng tính. Tôi thường sử dụng công thức này, khi tôi để ý thấy khi tôi đã thực hiện một thay đổi dữ liệu của tôi. Hãy thử nó:

Control + Shift + ;

Định dạng ngày tháng trong Excel

Phần này của hướng dẫn, sử dụng tab có tiêu đề “Formatting Dates & Times” trong bài tập ví dụ.

Bạn có thể làm gì khi ngày tháng của bạn theo kiểu châu Âu? Có nghĩa là, chúng đang ở trong một định dạng ngày-tháng-năm, và bạn cần phải chuyển đổi chúng sang các định dạng quen thuộc hơn tháng-ngày-năm?

Tất cả các ô này có chứa cùng một dữ liệu, chúng chỉ đang định dạng theo những cách khác nhau.

Trong ảnh chụp màn hình ở trên, những thứ làm bạn ngạc nhiên là tất cả sáu ô đều có chứa chính xác cùng một dữ liệu – “1/22/2017.” Những sự khác nhau là cách chúng đang được định dạng trong Excel. Các dữ liệu ban đầu là giống hệt nhau, nhưng nó có thể được định dạng để hiển thị theo nhiều cách khác nhau.

Trong hầu hết các trường hợp, tốt hơn là sử dụng định dạng để thay đổi kiểu hiển thị ngày tháng của chúng ta. Chúng ta không cần phải sửa đổi bản thân các dữ liệu – chỉ cần thay đổi cách trình bày.

Định dạng các ô Excel

Để thay đổi định dạng của dữ liệu ngày tháng và giờ của chúng ta, hãy chắc chắn rằng bạn đang làm việc trên tab Home của Excel. Trên Ribbon (trình đơn ở bên trên của Excel), tìm phần có nhãn Number.

Có một mũi tên nhỏ ở góc dưới bên phải của phần đó. Nhấp vào nó để mở menu Format Cells.

Để định dạng các ô trong Excel với kiểu có sẵn, hãy chắc chắn rằng bạn đang làm việc trên tab Home và nhấp vào mũi tên thả xuống bên cạnh từ “Number” trong ảnh chụp màn hình này.

Menu Format Cells có các tuỳ chọn khác nhau cho các kiểu ngày và giờ. Bạn có thể biến “1/22/2017” thành “Sunday, January 22nd” chỉ với định dạng. Sau đó, bạn có thể lấy format painter và thay đổi tất cả các định dạng trên các ô của bạn.

Menu Format Cells cho phép bạn thay đổi kiểu hiển thị của ngày tháng và giờ mà không cần thay đổi ngày ban đầu của bạn.

Dành chút thời gian để khám phá menu này và thử các kiểu khác nhau cho ngày và giờ Excel của bạn.

Lấy dữ liệu từ ngày và giờ

Giả sử rằng chúng ta có một danh sách các dữ liệu có ngày và giờ rất cụ thể, và chúng ta muốn để có được phiên bản đơn giản của những công thức đó. Có thể chúng ta có một danh sách các ngày giao dịch chính xác, nhưng chúng ta muốn làm việc với chúng ở một mức độ cao hơn, nhóm chúng theo năm hoặc tháng.

Bạn có thể lấy năm từ một ngày với công thức Excel này:

Chỉ lấy tháng từ một ô ngày, sử dụng công thức Excel sau:

Tìm sự khác biệt giữa ngày và giờ

Đối với phần này của hướng dẫn, sử dụng tab có tiêu đề “DATEDIF” trong bài tập ví dụ.

Trong khi các định dạng được sử dụng để thay đổi cách ngày và giờ được trình bày, thì công thức trong Excel được sử dụng để sửa đổi, tính toán, hoặc làm việc với ngày tháng và thời gian bằng cách lập trình.

Công thức DATEDIF là công thức mạnh mẽ để tính toán khoảng cách giữa các ngày. Nhập vào công thức hai ngày và và nó sẽ trả về số ngày, tháng, và năm giữa hai ngày này. Hãy xem cách làm thế nào để sử dụng nó.

1. Số ngày giữa hai ngày

Công thức ngày này trong Excel sẽ tính toán số ngày giữa hai ngày:

Công thức lấy hai ô, ngăn cách bởi dấu phẩy, và sau đó sử dụng một “d” để tính toán khoảng cách giữa hai ngày.

Công thức DATEDIF lấy hai ô ngày và tính toán số ngày giữa chúng.

Tính toán sự khác nhau giữa hôm nay và ngày sinh của bạn để bắt đầu đếm ngược ngày sinh nhật

2. Số tháng giữa hai ngày

DATEDIF cũng tính toán số tháng giữa hai ngày. Công thức ngày trong này trong Excel là rất giống, nhưng thay thế “d” bằng một “m” để tính toán sự khác biệt bằng số tháng:

Với tôi, có ba tháng giữa ngày 1 tháng 1 và ngày 31 tháng 3 (Tất cả các ngày của tháng một, tháng hai, và tháng ba.) Tuy nhiên, vì Excel sử dụng các tháng đủ, nó chỉ sẽ xem tháng một và tháng hai là tháng đầy đủ, toàn bộ tháng, do đó, kết quả là “2.”

Đây là cách ưa thích của tôi để tính toán số tháng giữa hai ngày. Chúng ta sẽ tìm thấy sự khác biệt bằng ngày, và sau đó chia nó bằng số ngày trung bình trong một tháng – 30.42.

Hãy áp dụng công thức DATEDIF tuỳ biến cho hai ngày:

Tốt hơn rồi. Kết quả 2,99 là rất gần 3 tháng đầy đủ, và điều này sẽ hữu ích hơn nhiều trong các công thức sau này.

Tài liệu chính thức của Excel có một phương pháp phức tạp để tính toán tháng giữa các ngày, nhưng đây là một cách gần giống nhưng đơn giản và dễ dàng. Viết một công thức Excel tốt là việc tìm kiếm điểm chính xác và đơn giản, và công thức này đã làm được cả hai.

3. Các năm giữa hai ngày

Cuối cùng, hãy tính số năm giữa hai ngày. Cách chính chủ để tính toán năm giữa các ngày là với công thức sau:

Lưu ý rằng điều này giống như các công thức DATEDIF trước đây của chúng ta, nhưng chúng ta đơn giản chỉ cần thay thế phần cuối cùng của công thức với “y” để tính toán số năm giữa hai ngày. Hãy xem nó bằng ví dụ sau:

Lưu ý rằng công thức này hoạt động như DATEDIF cho các tháng: nó chỉ đếm năm đủ đã trôi qua. Tôi thích bao gồm năm đã đi qua một phần. Đây là công thức DATEDIF tốt hơn cho năm:

=(DATEDIF(A1,B2,"d")/365)

Về cơ bản, chúng ta chỉ lấy ngày khác nhau trong các ngày, và sau đó chia cho 365 để tính toán nó như là một năm. Đây là kết quả:

DATEDIF cực kỳ mạnh mẽ, nhưng đề phòng cách nó hoạt động: nó sẽ chỉ tính toán các tháng đủ hoặc năm đủ theo mặc định. Sử dụng các phiên bản sửa đổi của tôi để các kết quả chính xác hơn .

Bonus: Số ngày làm việc giữa hai ngày

Các công thức Excel ngày đã khái quát ở trên tập trung vào số ngày giữa hai ngày. Tuy nhiên, đôi khi rất hữu ích chỉ cần tính toán số ngày làm việc (về cơ bản là các ngày trong tuần) giữa hai ngày.

Trong trường hợp này, chúng ta sẽ sử dụng =NETWORKDAYS để tính toán số lượng các ngày làm việc giữa hai ngày.

Nếu bạn đã biết những ngày lễ mà bạn muốn loại trừ, hãy xem tài liệu chính thức của NETWORKDAYS.

Tóm tắt và tìm hiểu thêm

Ngày và giờ phổ biến đối bảng tính. Các công thức ngày trong Excel và các tùy chọn định dạng là hữu ích. Các kỹ thuật trong hướng dẫn này có thể nâng cao các kỹ năng Excel lên cấp độ cao hơn do đó bạn có thể kết hợp dữ liệu ngày liên tục vào trong các bảng tính của bạn.

Bạn đã thêm một kỹ năng vào hộp công cụ Excel của bạn – tại sao phải ngừng ở đây? Hãy kết nối các công thức và các kỹ năng Excel để tạo ra bảng tính mạnh mẽ. Để tiếp tục tìm hiểu thêm về làm việc với bảng tính Excel, hãy kiểm tra các tài nguyên khác:

Câu lệnh IF là câu lệnh logic được tích hợp trong bảng tính của bạn hiển thị kết quả dựa trên điều kiện. Bạn có thể kết hợp một câu lệnh IF với một phạm vi ngày để hiển thị dữ liệu dựa trên thời gian hoặc ngày. Hãy xem hướng dẫn này để tìm hiểu chúng.

Bạn có thể kết hợp hướng dẫn VLOOKUP với các công thức ngày và giờ để chọn các giá trị dựa trên ngày hoặc giờ.

Tìm và loại bỏ trùng lặp là một chức năng Excel được sử dụng trong việc kết hợp với dữ liệu ngày và giờ, vì nó thường là một trong các mảng dữ liệu tốt nhất để kiểm tra các trùng lắp.

Làm Việc Với File Trong Pascal

Làm việc với File trong Pascal Var f:text; m,n:integer; Begin Assign(f,'son.inf'); Reset(f); Readln(f,m,n); Close(f); Writeln(m:4,n:4); Readln; End. 4 5 Em hãy viết đoạn chương trình nhập hai số này từ file trên và in kết quả ra màn hình. Var f:text; m,n:integer; Begin assign(f,'sod.inf');reset(f); Readln(f,m); Readln(f,n); close(f); Writeln(m); Writeln(n); Readln; End. 3. Một file văn bản có tên chúng tôi lưu trữ số liệu của một mảng n số và có dạng sau: - Dòng đầu tiên của DATA ghi số n. - n dòng tiếp theo của file ghi n số, mỗi số trên một dòng. Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của mảng trên sau khi đã sắp lại theo thứ tự tăng dần. Var f: text; n, i, j, jmax,atg,: integer; a: array[1..100] of integer; Begin assign(f, 'data.txt'); reset(f); Readln(f, n); For i:=1 to n do Readln(f,a[i]); close(f); For i:=1 to n-1 do Begin jmax:=i; For j:=i to n do atg:=a[i]; a[i]:=a[jmax]; a[jmax]:=atg; End; For i:=1 to n do Writeln(a[i]); Readln; End. 4. Một file văn bản có tên chúng tôi lưu trữ số liệu của một mảng n số và có dạng sau: - Dòng đầu tiên của DATA ghi số n. - Dòng tiếp theo của file ghi n số, các số cách nhau bởi tối thiểu một dấu cách. Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của mảng trên Var f:text; n,i:integer; a:array[1..100] of integer; Begin assign(f,'data.txt'); reset(f); Readln(f,n); For i:=1 to n do Read(f,a[i]); For i:=1 to n do Write(a[i]:8); Readln; End. 6. Làm bài tương tự bài 3. Điểm khác biệt là ở chỗ file dữ liệu không có dòng đầu tiên ghi tổng số dữ liệu như trong bài 3. Chương trình phải tự kiểm tra và tính số n đó. Var f:text; n,i:integer; a:array[1..100] of integer; Begin assign(f,'data.txt'); reset(f); i:=1; Repeat Readln(f,a[i]); inc(i); Until seekEof(f); n:=i-1; For i:=1 to n do Writeln(a[i]); Readln; End. 7. Làm bài tương tự bài 4. Điểm khác biệt là ở chỗ file dữ liệu không có dòng đầu tiên ghi n, chương trình phải tự kiểm tra và và tính số đó. Var f:text; n,i:integer; a:array[1..100] of integer; Begin assign(f,'data.txt'); reset(f); i:=1; Repeat Read(f,a[i]); inc(i); Until Eoln(f); n:=i-1; For i:=1 to n do Write(a[i]:8); Readln; End. 8. Cho file văn bản ghi số liệu của một bảng số N x M và có dạng sau: - Dòng đầu tiên ghi hai số N, M cách nhau bởi dấu cách. - N dòng tiếp theo ghi số liệu của N hàng, mỗi dòng bao gồm M số cách nhau bởi dấu cách. Sau đây là ví dụ một file như vậy: 4 5 3 5 -1 12 10 -1 2 3 6 1 1 4 5 10 -11 2 -1 4 5 7 Viết chương trình nhập dữ liệu từ file trên vào một mảng số N x M. Var f:text; n,m,i,j:integer; a:array[1..100,1..100] of integer; Begin assign(f,'data.txt'); reset(f); Readln(f,n,m); For i:=1 to n do Begin For j:=1 to m do Read(f,a[i,j]); Readln(f); End; close(f); For i:=1 to n do Begin For j:=1 to m do Write(a[i,j]:8); Writeln; End; Readln; End. 9. Một file văn bản ghi số liệu của học sinh có dạng sau: Nguyen Van Hung    15 G Bui Quang Than        14 K Tran Minh Quang      16 G Le Van Minh              15 T Dữ liệu ghi trong file này có ý nghĩa như sau: - Dòng đầu tiên ghi đúng một số n chỉ số lượng học sinh trong lớp. - n dòng tiếp theo mỗi dòng ghi dữ liệu của một học sinh. - Mỗi học sinh được ghi các dữ liệu sau: Họ và tên: 20 ký tự; Tuổi: 3 ký tự; Xếp loại: 1 ký tự Hãy viết chương trình nhập dữ liệu học sinh từ file trên và đưa vào các mảng dữ liệu tương ứng, tên file cũng được đọc từ bàn phím. Var f: text; fn: string; {Tên file} n, i: integer; ht: array[1..100] of string[20]; t: array[1..100] of string[3]; xl: array[1..100] of char; Begin Write('Tên file cần đọc: '); Readln(fn); assign(f,fn); reset(f); Readln(f,n); For i:=1 to n do Readln(f, ht[i], t[i], xl[i]); close(f); {kiểm tra} For i:=1 to n do Writeln(ht[i],t[i]:4,xl[i]:3); Readln; End. 10. Làm tương tự bài trên, điểm khác biệt là không có dòng đầu tiên ghi số lượng học sinh. Chương trình phải tự nhận biết và tính được số n đó. Var f: text; fn: string; {Tên file} n, i: integer; ht: array[1..100] of string[20]; t: array[1..100] of string[3]; xl: array[1..100] of char; Begin Write('Tên file cần đọc: ');Readln(fn); assign(f,fn); reset(f); i:=1; While not(eof(f)) do Begin Readln(f,ht[i],t[i],xl[i]); inc(i); End; n:=i-1; close(f); {kiểm tra} For i:=1 to n do Writeln(ht[i],t[i]:4,xl[i]:3); Readln; End. 11. Thực hiện tất cả các thao tác với các dạng file văn bản như trong phần Câu hỏi, ví dụ, bài tập nhưng theo chiều ngược lại, tức là thực hiện các thao tác ghi. (Bai 1) Var f:text; m,n:integer; Begin m:=10; n:=4; assign(f, 'son.inf'); reWrite(f); Writeln(f, m,' ',n); close(f); assign(f, 'son.inf'); reset(f); Readln(f, m, n); close(f); Writeln(m:4, n:4); Readln; End. (Bai 2) Var f:text; m,n:integer; Begin m:=4; n:=5; assign(f, 'sod.inf'); reWrite(f); Writeln(f, m); Writeln(f, n); close(f); assign(f, 'sod.inf'); reset(f); Readln(f, m); Readln(f, n); close(f); Writeln(m); Writeln(n); Readln; End. (Bai 3) Var f:text; n,i:integer; a:array[1..100] of integer; Begin Write('Nhập số n: ');Readln(n); Writeln('Nhập dãy n số : '); For i:=1 to n do Begin Write('a[',i:2,'] = ');Readln(a[i]); End; assign(f,'data.txt'); rewrite(f); Writeln(f,n); For i:=1 to n do Begin Writeln(f,a[i]); End; close(f); assign(f, 'data.txt'); reset(f); Readln(f, n); For i:=1 to n do Readln(f,a[i]); close(f); For i:=1 to n do Writeln(a[i]); Readln; End. (Bai 4) Var f:text; n,i:integer; a:array[1..100] of integer; Begin Write('Nhập số n: ');Readln(n); Writeln('Nhập dãy n số: '); For i:=1 to n do Begin Write('a[',i:2,'] = ');Readln(a[i]); End; assign(f,'data.txt'); rewrite(f); Writeln(f,n); For i:=1 to n do Begin Write(f,a[i],' '); End; Writeln(f); close(f); assign(f,'data.txt'); reset(f); Readln(f,n); For i:=1 to n do Read(f,a[i]); close(f); For i:=1 to n do Writeln(a[i]); Readln; End. (Bai 6) Var f: text; n, i: integer; a: array[1..100] of integer; Begin Write('Nhập số n: '); Readln(n); Writeln('Nhập một dãy số n: '); assign(f,'data.txt'); rewrite(f); i:=1; Repeat Write(' a[',i:2,'] = '); Readln(a[i]); Writeln(f,a[i]); inc(i); close(f); assign(f,'data.txt'); reset(f); While not(seekeoln(f)) do Begin Readln(f,a[i]); Writeln(a[i]); End; close(f); Readln; End. (Bai 9) Var f: text; fn: string; {Tên file} n, i, l, j: integer; ht: array[1..100] of string[20]; t: array[1..100] of string[3]; xl: array[1..100] of char; Begin Write('Tên file cần đọc: '); Readln(fn); Write('Số lượng học sinh: '); Readln(n); assign(f,fn); rewrite(f); Writeln(f,n); For i:=1 to n do Begin Write('Nhập họ và tên: '); Readln(ht[i]); l:=length(ht[i]); If (l<20) then For j:=l+1 to 20 do ht[i]:=ht[i]+' '; Write('Nhập tuổi: '); Readln(t[i]); l:=length(t[i]); If (l<3) then For j:=l+1 to 3 do t[i]:=' '+t[i]; Write('Nhập xếp loại: '); Readln(xl[i]); Writeln(f, ht[i], t[i], xl[i]); End; close(f); assign(f, fn); reset(f); Readln(f, n); For i:=1 to n do Begin Readln(f, ht[i], t[i], xl[i]); Writeln(ht[i], t[i]:4, xl[i]:3); End; close(f); Readln; End. 13. Số liệu được nhập từ một file văn bản chúng tôi và có dạng sau: - Dòng đầu tiên ghi số tự nhiên N (N <20). - N dòng tiếp theo, mỗi dòng ghi một dãy số, các số cách nhau bởi dấu cách. Số lượng phần tử của các dãy có thể khác nhau. Viết chương trình nhập số liệu từ file trên, sắp xếp n dãy trên theo thứ tự tăng dần và ghi kết quả ra file chúng tôi có dạng tương tự như file nhập liệu. Var fin, fou: text; n, m, i, j, k, kmax: integer; a: array[1..100] of real; atg: real; Begin assign(fin, 'input.txt'); reset(fin); assign(fou, 'output.txt'); rewrite(fou); Readln(fin, n); Writeln(fou, n); For i:=1 to n do Begin j:=1; {đọc dòng thứ i của input.txt} While not(seekeoln(fin)) do Begin Read(fin,a[j]); inc(j); End; Readln(fin); {sắp xếp lại dòng thứ i đó} m:=j-1; For j:=1 to m-1 do Begin kmax:=j; For k:=j to m do atg:=a[j]; a[j]:=a[kmax]; a[kmax]:=atg; End; {ghi dòng đó ra output.txt} For j:=1 to m do Write(fou,a[j]:8:2); Writeln(fou); End; close(fin); close(fou); {kiểm tra} assign(fou,'output.txt'); reset(fou); Readln(fou,n); For i:=1 to n do Begin While not(seekeoln(fou)) do Begin Read(fou,atg); Write(atg:8:2); End; Readln(fou); Writeln; Writeln; End; close(fou); Readln; End. 14. Một danh sách lớp được ghi trong một File văn bản có dạng sau: Nguyen Van Minh        Nam Nguyen Tung Chau     Nu Tran Quang Thu            Nam Bui Van Ngo                  Nam ................................................... Trong đó họ và tên học sinh được ghi trên độ dài 20 ký tự, 3 ký tự tiếp theo sẽ ghi Nam hoặc Nu chỉ giới tính của học sinh đó. Số dòng của file này sẽ bằng số học sinh trong lớp. Em hãy viết chương trình thực hiện các công việc sau: Nhập tên File số liệu từ bàn phím, sau đó nhập dữ liệu từ File vào bộ nhớ máy tính. Thực hiện việc sắp xếp lại danh sách học sinh trong lớp sao cho các bạn Nữ lên trước, các bạn Nam sau. Nhập tên File kết quả từ bàn phím và ghi danh sách lớp sau khi đã sắp xếp lại ra File đó theo mẫu giống như lúc đọc vào. Var tfin, tfou: string; fin, fou: text; n, i, j: integer; a: array[1..100] of string[23]; atg: string[23]; Begin Write('Đọc số liệu từ file:'); Readln(tfin); assign(fin, tfin); reset(fin); i:=1; {đọc file tfin} While not(seekeof(fin)) do Begin Readln(fin,a[i]); inc(i); End; {sắp xếp lại} n:=i-1; For i:=1 to n-1 do If (copy(a[i],21,3)='Nam') then For j:=i to n do Begin atg:=a[i]; a[i]:=a[j]; a[j]:=atg; End; close(fin); {ghi rafile tfou} Write('Ghi số liệu ra file: '); Readln(tfou); assign(fou,tfou); rewrite(fou); For i:=1 to n do Writeln(fou, a[i]); close(fou); {kiểm t ra} assign(fou,tfou); reset(fou); For i:=1 to n do Begin Readln(fou,atg); Writeln(atg); End; close(fou); Readln; End. 15. Đầu bài giống bài trên. Hãy viết chương trình để thực hiện các công việc sau: - Đếm xem trong lớp có bao nhiêu bạn là Nam, bao nhiêu bạn là Nữ. - Kiểm tra xem lớp có hai bạn nào cùng họ hay không? Nếu có liệt kê tất cả các bạn có chung họ. Var tfin: string; fin: text; n, i, j, snam, snu: integer; a: array[1..100] of string[23]; t: boolean; (*==========================================*) Function ho(hvt:string):string; Var i: byte; h: string; Begin i:=1; While (hvt[i]=' ') do inc(i); h:=''; While (hvt[i]' ') do Begin h:=h+upcase(hvt[i]); inc(i); End; ho:=h; End; (*==========================================*) Begin Write('Đọc số liệu từ file: '); Readln(tfin); assign(fin, tfin); reset(fin); i:=1; {đọc file tfin} While not(seekeof(fin)) do Begin Readln(fin, a[i]); inc(i); End; close(fin); {tính số nam, nữ} n:=i-1; snam:=0; snu:=0; For i:=1 to n do If (copy(a[i],21,3)='Nam') then snam:=snam+1 Else snu:=snu+1; Writeln('Số nam: ',snam,'. Số nữ : ',snu,'.'); {Tìm người chung họ} For i:=1 to n do Begin j:=1; t:=false; Repeat If (ho(a[j])=ho(a[i]))and(ji) then t:=true; inc(j); If t then Writeln(a[i]); End; Readln; End. 16. Đầu bài giống bài trên. Hãy viết chương trình đọc dữ liệu và in kết quả ra File sau khi đã sắp xếp các bạn trong lớp theo trật tự sau: trước tiên sắp xếp theo giới tính, các bạn Nữ trước, Nam sau, sau đó sắp tiếp trong số các bạn cùng giới theo tên theo thứ tự ABC, sau đó sẽ sắp tiếp theo họ. Trong ví dụ của bài trên file kết quả sẽ có dạng Nguyen Tung Chau     Nu Nguyen Van Minh        Nam Bui Van Ngo                  Nam Tran Quang Thu           Nam Var tfin, tfou: string; fin, fou: text; n, i, j: integer; a: array[1..100] of string[23]; atg: string[23]; (*==========================================*) Function thutu(hvt:string):string; Var i, j, l, l1: byte; ten: string[8]; g, tg: char; Begin For i:=1 to 23 do hvt[i]:=upcase(hvt[i]); If (copy(hvt,21,3)='NAM') then g:='b' else g:='a'; ten:=' '; i:=20; While (hvt[i]=' ') do dec(i); j:=1; While (hvt[i]' ') do Begin ten[j]:=hvt[i]; dec(i); inc(j); End; l1:=i; l:=j-1; For i:=1 to (l div 2) do Begin tg:=ten[i]; ten[i]:=ten[l-i+1]; ten[l-i+1]:=tg; End; thutu:=g+ten+copy(hvt,1,l1); End; (*==========================================*)) Begin Write('Đọc số liệu ghi từ file: '); Readln(tfin); assign(fin, tfin); reset(fin); i:=1; {Đọc file tfin} While not(seekeof(fin)) do Begin Readln(fin, a[i]); inc(i); End; n:=i-1; For i:=1 to n-1 do For j:=i+1 to n do Begin atg:=a[i];a[i]:=a[j];a[j]:=atg; End; close(fin); Write('Ghi số liệu ra file: '); Readln(tfou); {ghi ra file tfou} assign(fou, tfou); rewrite(fou); For i:=1 to n do Writeln(fou, a[i]); close(fou); assign(fou,tfou); {kiểm tra} reset(fou); For i:=1 to n do Begin Readln(fou, atg); Writeln(atg); End; close(fou); Readln; End. 17. Cho trước một xâu nhị phân độ dài bất kỳ được đưa vào từ file văn bản chúng tôi Cần biến - Biến đổi xâu con 11 thành 00. - Biến đổi xâu con 010 thành 000. Hãy chỉ một cách biển đổi xâu đã cho thành xâu có toàn 0. Kết quả thể hiện trong file chúng tôi như sau: Dòng đầu tiên của chúng tôi chứa xâu ban đầu, sau đó mỗi dòng là một xâu tiếp theo sau một phép biến đổi, xâu cuối cùng là xâu toàn 0.đổi xâu nhị phân này về dạng toàn số 0. Các phép biến đổi có thể chỉ là một trong các loại sau: Const st1='11'; st2='010'; Var fin, fou: text; l, p: integer; st: string; (*==========================================*) Procedure ghi1(i:integer); Begin st[i]:='0'; st[i+1]:='0'; Writeln(fou, st); End; (*==========================================*) Procedure ghi2(i:integer); Begin st[i+1]:='0'; Writeln(fou, st); End; (*==========================================*) Begin assign(fin, 'input.txt'); reset(fin); Readln(fin, st); close(fin); l:=length(st); If ((st[l]='1')and(st[l-1]='0'))or((st[1]='1')and(st[2]='0')) then Writeln('Không thể biến đổi được!') Else Begin assign(fou,'output.txt'); rewrite(fou); Writeln(fou,st); If (st[l]='1')and(st[l-1]='1') then ghi1(l-1); Repeat { biến đổi xâu con '11' } p:=pos(st1,st); If (p0) then ghi1(p); Until (p=0); Repeat {biến đổi xâu con '010' } p:=pos(st2,st); If (p0) then ghi2(p); Until (p=0); close(fou); {kiểm tra} assign(fou,'output.txt'); reset(fou); While not(seekeof(fou)) do Begin Readln(fou,st); Writeln(st); End; close(fou); End; Readln; End. 18. Một văn bản có tên chúng tôi chứa một chương trình Pascal hoàn chỉnh. Trong chương trình này trên một dòng có thể chứa nhiều lệnh. Em hãy viết chương trình in ra file mới có tên chúng tôi chương trình Pascal trên sao cho thỏa mãn điều kiện mỗi lệnh phải nằm trên một hàng. Var fin, fou: text; st, st1: string; l, p: byte; Begin assign(fin, 'p4216.pas'); reset(fin); assign(fou, 'blmoi.pas'); rewrite(fou); st1:=''; While not(seekeof(fin)) do Begin Readln(fin,st); st1:=st1+' '+st; Repeat l:=length(st1); p:=pos(';', st1); If (p0) then Begin st:=copy(st1, 1, p); Writeln(fou, st); st1:=copy(st1, p+1, l-p); End; Until (p=0); End; Writeln(fou, st1); close(fin); close(fou); assign(fou, 'blmoi.pas'); reset(fou); While not(seekeof(fou)) do Begin Readln(fou, st); Writeln(st); End; close(fou); Readln; End.

Mẹo Nhỏ Khi Làm Việc Với Arduino

Bài viết đầu tay của mình trên diễn đàn chúng tôi mời các bạn đón đọc: Cách xuất file .HEX từ Arduino IDE và mô phỏng Arduino trên phần mềm Proteus.

Trường hợp 1: Báo lỗi “avrdude: stk500_getsync(): not in sync: resp=0x00”

Nguyên nhân:Lỗi này là do bạn chọn Board hoặc Port kết nối không đúng. Có nhiều nguyên nhân dẫn đến lỗi này:

Do bạn mới tiếp xúc với Arduino nên thiếu kinh nghiệm, quên mất bỏ qua bước quan trọng là Board và Port đã khớp chưa. (Lúc mới làm quen với Arduino mình cũng hay mắc phải lỗi này )

Do bạn đang sử dụng board Arduino này nhưng vì lý do nào đó lại chuyển qua sử dụng board Arduino khác dẫn đến sự thay đổi thông số của Board hoặc Port mà bạn lại quên điều chỉnh lại. Lỗi này người có kinh nghiệm mà sơ ý cũng mắc phải và thường gặp ở những người “giàu” có tiền mua nhiều board khác nhau

hoặc

Sau đó các bạn mở Arduino IDE lên, kiểm tra lại xem đã khớp chưa, nếu chưa khớp thì vào Tools – Board/Port để chỉnh lại cho đúng. Một mẹo nhỏ nữa là các bạn cũng có thể nhìn hàng chữ nhỏ mép dưới của Arduino IDE để xem nhanh thông tin đã thiết lập.

Trường hợp 2: Báo lỗi “avrdude: ser_open(): can’t open device “\.COM5″: The system cannot find the file specified.​”

Nguyên nhân: Lỗi này thường xảy ra khi bạn lập trình nút nhấn. Do quên pinMode nút nhấn là pinMode(nut_nhan, INPUTPULLUP) dẫn đến pin nút nhấn là mức cao mà khi bạn ấn nút nhấn sẽ kéo xuống mass và điều gì xảy ra, bạn biết đấy – ngắn mạch (bạn có thể xem bài viết này để hiểu hơn về lập trình nút nhấn). Cũng tương tự như vậy chỉ cần bạn nối pin 5V với pin GND cũng có thể tạo ra hiện tượng ngắn mạch (để có được hình ảnh trên mình đã phải “hi sinh” chập 5V với GND đấy – tuy nhiên mình không khuyến khích bạn thử, bạn đọc qua bài viết này sẽ rõ). Khi xảy ra hiện tượng ngắn mạch máy tính của bạn sẽ lập tức ngắt kết nối giữa board Arduino và máy tính, dẫn đến bạn không thấy cổng COM5 hồi nãy ở đâu.

Nhiều bạn theo quán tính sẽ rút cổng USB ra khỏi máy tính, đợi một lúc và gắn lại xem có nhận cổng USB không, tuy nhiên sẽ thất vọng. Bạn khác cao thủ hơn thì sẽ Reset máy. OK tất nhiên là được rồi. Tuy nhiên nếu chẳng may bị 3-4 lần thì bạn sẽ “ức chế” cho mà xem. Có một mẹo nho nhỏ sẽ tiết kiệm rất nhiều thời gian và công sức của bạn khi gặp tình trạng này. Mời bạn đọc mẹo.

Sau khi làm xong các bước trên thì chắc chắn cổng USB của bạn sẽ hoạt động trở lại và bạn có thể tiếp tục công việc lập trình của mình.

Bạn hãy ấn Ctrl + Shift + N. Sau đó nhập tên thư viện vào khung Name for new file sau đó ấn OK. Ví dụ: gõ “test.h” vào khung. Bạn cũng có thể tạo 1 file khác bất kì .c, .cpp chẳng hạn. Bạn xem bài Bài 12: Phát nhạc bằng Arduino với một cái loa hoặc buzzer sẽ thấy được ứng dụng của nó 😀

Nguyên nhân: thường là do Arduino không chấp nhận tên thư viện có khoảng trắng ” ” hoặc kí tự lạ.

Mẹo: Ta chỉ cần sửa lại tên thư viện một chút là được ấy mà 😀

Ví dụ trong bài viết Infrared remote control (điều khiển bằng hồng ngoại) với Arduino có đoạn như sau:

Bạn làm theo y chang luôn nhưng add xong nó sẽ báo lỗi như thế này:

Vậy là cơ bản chỉnh sửa xong, giờ thì bạn add file Arduino_IRremote_master.zip này là sẽ không còn báo lỗi nữa :D.

Bỏ một chút thời gian mỗi tối để tìm hiểu về ngôn ngữ C cơ bản. Chỉ cần chút kiến thức về C cơ bản là bạn đã có thể lập trình Arduino rồi đấy.

Đọc qua Ngôn ngữ lập trình trên Arduino

Có điều kiện thì hãy mua một board Arduino thực tế để “vọc” và làm. Nếu không có điều kiện thực hành thực tế thì bạn có thể mô phỏng trên máy tính, thông qua bài viết của mình chắc chắn bạn sẽ làm được: Cách xuất file .HEX từ Arduino IDE và mô phỏng Arduino trên phần mềm Proteus

Mẹo V: Sau một thời gian việc khởi động Arduino bị chậm và những thứ khác cũng chậm luôn?

Chào các bạn, sau một thời gian sử dụng chắc nhiều bạn sẽ cảm thấy chương trình arduino IDE của mình chạy chậm hơn rất nhiều so với lúc mới cài đặt. Những biểu hiện của nó như khởi động chậm, load chậm, chạy thử chậm, nạp vào rất chậm, mở cổng serial cũng chậm nốt. Qua tìm hiểu thì cách khắc phục rất đơn giản như sau. Vào link sau: http://k1.arduino.vn/img/2014/11/14/0/861_123450-1415962849-0-rxtxserial.zip và tải về file chúng tôi . Sau đó bạn copy đè file này vào thư mục gốc cài đặt của arduino IDE. Như vậy là bạn có thể khắc phục được sự chậm chạp của chương trình không rõ nguyên nhân sau một thời gian sử dụng.

17:55 14/10/2014 Rất hân hạnh khi bạn đón đọc bài viết! (To be Continued…)

Làm Việc Với Bảng Trong Word 2007

Bài viết này kế toán Đức Minh hướng dẫn các bạn cách Làm việc và thao tác với bảng trong Word 2007 một cách chi tiết và cụ thể

I. CHÈN BẢNG

Đặt con trỏ tại vị trí cần chèn bảng.

Insert → Table → xuất hiện hộp thoại → Chọn Insert Table

Nhập số cột của bảng trong mục Number of columns

Nhập số hàng của bảng trong mục Number of rows.→ OK

Lưu ý: Khi chèn bảng chỉ cần quan tâm đến số cột của bảng là bao nhiêu, số hàng ta có thể nhấn Tab để thêm hàng ở cuối của bảng

II. NHẬP DỮ LIỆU CHO BẢNG

Việc nhập dữ liệu cho từng ô trong bảng hoàn troàn được xử lý độc lập. Muốn chuyển qua ô kế bên dùng phím Tab, Phím mũi tên hoặc kích chuột vào ô đó. Nếu muốn dùng Tab để tạo bước nhảy cần nhấn tổ hợp phím Ctrl + Tab.

Tên học viên

Chương trình học

Ca học

Nguyễn Đăng Sơn

THVP

1.2

Nguyễn Minh Hiền

Lập trình Pascal

5

Nguyễn Ngọc Thiện

C++

4

 

Yêu cầu:

Nhập văn bản theo mẫu, định dạng và lưu nội dung.

Tính cột Trung bình và dòng Tổng

STT

Họ và tên

Giới tính

Điểm

Trung bình

Word

Excel

Lý thuyết

1

Chu Đức Bình

Nam

9.0

7.0

6.5

2

Lê Tiến Luân

Nam

8.0

6.5

9.0

3

Lưu Trường Hà

Nam

4.0

4.5

8.0

4

Phạm Hải Minh

Nữ

3.0

5.5

6.5

5

Nguyễn Thị Hà

Nữ

9.0

5.5

6.5

6

Phạm Trọng Tuấn

Nam

9.0

6.5

7.5

7

Phạm Hoàng

Nam

8.5

7.0

8.5

8

Trịnh Thị Hoài

Nữ

5.5

7.0

8.5

9

Nguyễn Thị Huệ

Nữ

6.5

8.0

9.5

10

Nguyễn Ngân

Nữ

7.5

8.0

9.5

11

Nguyễn Thanh Hoa

Nữ

8.5

9.5

8.5

12

Lưu Thị Nhung

Nữ

8.0

10

7.5

13

Phạm Nha Trang

Nữ

8.0

10

7.5

14

Nguyễn Thu Trang

Nữ

9.0

6.5

6.5

15

Đỗ Hữu Vị

Nam

8.5

5.5

5.5

Tổng

 

III. ĐỊNH DẠNG BẢNG

Định dạng kích thước

Đưa con trỏ đến đường phân cách giữa các dòng hoặc cột → con trỏ chuyển thành mũi tên 2 chiều → Nhấn + giữ + kéo chuột đến kích thước mong muốn.

  • Chèn dòng cột:

    Đặt con trỏ tại ô cần chèn → Nhấn chuột phải →Insert

    Columns to the left: Chèn thêm cột bên trái.

    Columns to the right: Chèn thêm cột bên phải

    Rows Above: Chèn thêm dòng bên trên

    Rows below: Chèn thêm dòng bên dưới

    Để chèn thêm hàng ở cuối bảng: Đặt con trỏ ở ô cuối dòng cuối cùng của bảng → Nhấn Tab.

  • Xóa dòng, cột:

    Chọn dòng, cột cần xóa

    Tích chuột phải → Delete Rows, Delete Columns.

  • Trộn ô, chia ô:

        Trộn

       Chia ô

    Chọn các ô cần trộn.

    Chọn Layout → Merge Cells, hoặc kích chuột phải chọn Merge Cells.

    Đặt con trỏ tại ô cần chia

    Chọn Layout → Split Cells…, hoặc kích chuột phải chọn Aplit Cells → Nhập số hàng, số cột cần chia.

  • Đường viền màu nền

    Chọn các ô cần định dạng hoặc cả bảng.     

    Design → DrawBorders→ Borders and Shading…, xuất hiện hộp thoại

    Định dạng dữ liệu trong ô:

    Chọn các ô cần định dạng → Kích chuột phải, chọn:

    Cell Aligment: Để căn chỉnh dữ liệu trong ô.

    Text Direction: Để quay chữ trong ô.

  • Sắp xếp dữ liệu trong bảng: