Xin giúp nhập nhanh điểm lẻ trong Excel (6 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

phanhongtaigmail

Thành viên mới
Tham gia
31/12/11
Bài viết
24
Được thích
4
tôi muốn viết macro hay VBA để thực hiện nhập nhanh điểm của học sinh như sau:
bảng excel gồm cột stt, ho ten, diem mieng, diem 15 phut, diem 1 tiet, diem thi
trong đó cột điểm 15 phút và 1 tiết thì có chữ số thập phân, ví dụ: 2.5 và 5.0
tôi muốn người dùng chỉ cần nhập 25 và 5 sau đó những số này tự chuyển thành 2.5 và 5.0
các bạn có thể chỉ mình cách viết code hay làm macro nhé. Cảm ơn nhiều
(tôi chưa biết gì về VBA)
 

File đính kèm

sao chưa thấy hồi âm, thư gửi đi mấy lần, đợi hồi âm không thấy@!##
 
Đơn giản nhất là cho thêm cột phụ, cột này chuyển điểm nhập sang điểm thật.
 
tôi muốn viết macro hay VBA để thực hiện nhập nhanh điểm của học sinh như sau:
bảng excel gồm cột stt, ho ten, diem mieng, diem 15 phut, diem 1 tiet, diem thi
trong đó cột điểm 15 phút và 1 tiết thì có chữ số thập phân, ví dụ: 2.5 và 5.0
tôi muốn người dùng chỉ cần nhập 25 và 5 sau đó những số này tự chuyển thành 2.5 và 5.0
các bạn có thể chỉ mình cách viết code hay làm macro nhé. Cảm ơn nhiều
(tôi chưa biết gì về VBA)
Đoạn code như sau: (Chỉ có giá trị trong Sheet1, các Sheet khác cần gõ như bình thường, vd bảng thống kê cần gõ số lớn hơn 10,......)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Sh.Name <> "Sheet1" And Sh.Name <> "Sheet2" Then
If Target.Value > 10 Then Target.Value = Target.Value / 10
End If
End Sub

(Chiêu này mình học được của bạn HỮU THẮNG)
 
Nếu thích dùng code thì bạn có thể dùng cái này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A100")) Is Nothing _
    And Target.Value > 10 Then Target.Value = Target.Value / 10
End Sub
trong đó "A1:A100" là vùng bạn muốn nhập điểm.
 
Nếu thích dùng code thì bạn có thể dùng cái này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A100")) Is Nothing _
    And Target.Value > 10 Then Target.Value = Target.Value / 10
End Sub
trong đó "A1:A100" là vùng bạn muốn nhập điểm.
Phải có đoạn code để bẫy lỗi (On Error Resume Next), nếu không, khi xóa dữ liệu sẽ bị báo lỗi
 
cảm ơn đã giúp đỡ. nhưng tui vẫn chưa biết cách sử dụng code trên
tui vào tool->macro->VBE rồi insert modul rồi chép code trên vào phải không?
tui đã làm thử rồi không biết làm gì tiếp theo.
xin các thầy hướng dẫn cụ thể hơn. cảm ơn
 
nếu được thì các anh có thể làm trực tiếp lên file excel tui kèm theo rồi gửi kèm lên để xem nhé
 
cảm ơn đã giúp đỡ. nhưng tui vẫn chưa biết cách sử dụng code trên
tui vào tool->macro->VBE rồi insert modul rồi chép code trên vào phải không?
tui đã làm thử rồi không biết làm gì tiếp theo.
xin các thầy hướng dẫn cụ thể hơn. cảm ơn
Bạn chép code đó vào sheet nào muốn nhập điểm số, sau đó bạn đóng cửa sổ Microsoft VBA ra ngoài bạn nhập số tại cột A thử coi được chưa.
 

File đính kèm

cảm ơn bạn phan ngoc lan, ngodany13
tui biết rồi. thì ra nhập code vào sheét đó luôn. còn tui thì chèn modul rồi nhập code vào modul nên không được. cảm ơn mọi người:yahoo:

cho hỏi mình có thể bổ sung lệnh: nếu người dùng nhập điểm lớn 10 thì tự động xuống dòng không cần nhấn enter được không? nếu được thì bổ sung lệnh nào?
ví dụ: nhập điểm 25 thì tự xuống dòng
vì tui thấy các phần mềm cung cấp dịch vụ báo điểm làm được việc này như: biển đen, xschool, ....
 
Chỉnh sửa lần cuối bởi điều hành viên:
cảm ơn các bạn đã giúp đỡ!
sau vài ngày học VBA tui đã biết tạo macro thực hiện theo yêu cầu trên được rồi.
gửi các bạn xem

Sub VD_Cells()
Dim myCell As Range

For Each myCell In Worksheets("Sheet1").Range("A2.C10").Cells
If myCell.Value > 10 Then myCell.Value = myCell.Value / 10
Next myCell

End Sub
 
bạn lephuongvan ơi có thể thêm code để khi nhập 2 ký tự thì tự động xuống ô dưới được không?
 
Các bác hướng dẫn bằng VBA nó sẽ phức tạp cho người không biết về lập trình. Có 1 cách đơn giản nhất mà những người không biết lập trình cũng có thể làm được... Đó là tạo thêm 1 cột phụ để xử lý dữ liệu nhập vào, sau khi nhập điểm xong chỉ việc copy\paste special... là xong.

Ví dụ: tại cột nhập điểm bạn không cần phải nhập phần thập phân (như điểm là 5.5 bạn cứ nhập là 55), sau đó tại cột phụ ta dùng hàm: value(left(đ/c ô chứa điểm đã nhập,1)&"."&right(đ/c ô chứa điểm đã nhập,1))

(Tôi toàn làm giúp cho vợ cách như thế cho nhanh:-=)
 
Các bác hướng dẫn bằng VBA nó sẽ phức tạp cho người không biết về lập trình. Có 1 cách đơn giản nhất mà những người không biết lập trình cũng có thể làm được... Đó là tạo thêm 1 cột phụ để xử lý dữ liệu nhập vào, sau khi nhập điểm xong chỉ việc copy\paste special... là xong.

Ví dụ: tại cột nhập điểm bạn không cần phải nhập phần thập phân (như điểm là 5.5 bạn cứ nhập là 55), sau đó tại cột phụ ta dùng hàm: value(left(đ/c ô chứa điểm đã nhập,1)&"."&right(đ/c ô chứa điểm đã nhập,1))

(Tôi toàn làm giúp cho vợ cách như thế cho nhanh:-=)

Nhỡ mà có điểm lẻ là 2 chữ số thì sao (VD 5.25, 6.75,...)?
Hay trường hợp nửa điểm (0.5) thì sao?
Hoặc nhỡ mà lúc này (hoặc ở máy khác) cách cài đặt dấu thập phân (decimal symbol) là dấu phẩy (,) - VD 5,5 - thì kết quả của bạn "toi" đấy nha, vì có thể lúc này có thể xảy ra các trường hợp sau:
+ 5.5 không còn là giá trị của 5,5 nữa mà sẽ chuyển sang giá trị khác;
+ Hoặc nó không còn là kiểu Number (hoặc có thể ra thành một định dạng khác) nữa
và như vậy thì bạn không thể tính toán với nó được nữa đâu!

Và ngược lại nếu bạn gán "," vào công thức thì cũng tương tự các trường hợp như thế xảy ra nếu decimal symbol lại đặt là dấu chấm (.)

Nếu điểm quy định chỉ cho 1 chữ số thập phân thì sao bạn không làm cột phụ với công thức chia cho 10 cho gọn vậy?!
 
Lần chỉnh sửa cuối:
Bạn click phải vào tên sheet (sheet1, sheet2....) trong file bạn mở đó, bạn sẽ thấy có dòng chữ view code, nhấn vào đó, cửa sổ vba xuất hiện, bạn chỉ việc dán đoạn vba trên vào, sau đó ra e x cel và nhập vào xem thử
thân
 
Nhỡ mà có điểm lẻ là 2 chữ số thì sao (VD 5.25, 6.75,...)?
Hay trường hợp nửa điểm (0.5) thì sao?
Hoặc nhỡ mà lúc này (hoặc ở máy khác) cách cài đặt dấu thập phân (decimal symbol) là dấu phẩy (,) - VD 5,5 - thì kết quả của bạn "toi" đấy nha, vì có thể lúc này có thể xảy ra các trường hợp sau:
+ 5.5 không còn là giá trị của 5,5 nữa mà sẽ chuyển sang giá trị khác;
+ Hoặc nó không còn là kiểu Number (hoặc có thể ra thành một định dạng khác) nữa
và như vậy thì bạn không thể tính toán với nó được nữa đâu!

Và ngược lại nếu bạn gán "," vào công thức thì cũng tương tự các trường hợp như thế xảy ra nếu decimal symbol lại đặt là dấu chấm (.)

Nếu điểm quy định chỉ cho 1 chữ số thập phân thì sao bạn không làm cột phụ với công thức chia cho 10 cho gọn vậy?!

Bạn cho mình xin công thức xử lý được vấn đề này đi. Cám ơn trước
 
Web KT

Bài viết mới nhất

Back
Top Bottom