Làm sao để nhập 98 thành 9.8.....?

Liên hệ QC
Bác quanghai1969 à vấn đề là thế này: đoạn code của em :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If TypeName(Target.Value) <> "Double" Then
Target.Value = ""
Else
Target.NumberFormat = "0.0"
If IsNumeric(Target.Value) And Target.Value > 10 Then Target.Value = Target.Value / 10
End If
End Sub

nh
ằm mục đích nhập điểm nhanh, cụ thể: em nhập 1111 máy tự hiểu 1.1; nhập 3 máy tự hiểu 3.0; nhập 3.5 máy hiểu là 3.5; nhập 34567 máy tự hiểu là 3.5; nhập 3,5 hoặc Text máy bỏ trống. Nhưng em nhập 01 thì nó chỉ hiểu là 1.0 mà em cần phải là 0.1. Rất mong được bác và mọi người giúp đỡ.
 
Lần chỉnh sửa cuối:
Bác quanghai1969 à vấn đề là thế này: đoạn code của em :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If TypeName(Target.Value) <> "Double" Then
Target.Value = ""
Else
Target.NumberFormat = "0.0"
If IsNumeric(Target.Value) And Target.Value > 10 Then Target.Value = Target.Value / 10
End If
End Sub

nh
ằm mục đích nhập điểm nhanh, cụ thể: em nhập 1111 máy tự hiểu 1.1; nhập 3 máy tự hiểu 3.0; nhập 3.5 máy hiểu là 3.5; nhập 34567 máy tự hiểu là 3.5; nhập 3,5 hoặc Text máy bỏ trống. Nhưng em nhập 01 thì nó chỉ hiểu là 1.0 mà em cần phải là 0.1. Rất mong được bác và mọi người giúp đỡ.
Mình đã chỉ ra hướng đi rồi mà bạn không cố gắng. Vậy thì code đây
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
   If TypeName(Target.Value) <> "Double" Then
      Target.Value = ""
   Else
      If IsNumeric(Target.Value) Then
         If Len(Target) > 2 Then
            Target = Application.Round((Left(Target, 3) / 100), 1)
         ElseIf Len(Target) > 1 Then
            Target.Value = Left(Target, 2) / 10
         Else
            Target.Value = Target / 10
         End If
      End If
   End If
End If
Application.EnableEvents = True
End Sub
 
Rất cảm ơn những gì bác giúp. Nhưng bác ạ em là người tự học nên phần code em viết được như vậy với em là "phi thường" đấy bác ạ. Phần code của bác mới cho em chạy thử thì khi nhập từ 1 đến 9 lại thành 0.1 đến 0.9 và nhập 3.5 thì lại thành 0.0 như vậy lại toi em mất rồi. Thôi mong bác giúp em nốt đi. Cám ơn bác nhiều
 
Rất cảm ơn những gì bác giúp. Nhưng bác ạ em là người tự học nên phần code em viết được như vậy với em là "phi thường" đấy bác ạ. Phần code của bác mới cho em chạy thử thì khi nhập từ 1 đến 9 lại thành 0.1 đến 0.9 và nhập 3.5 thì lại thành 0.0 như vậy lại toi em mất rồi. Thôi mong bác giúp em nốt đi. Cám ơn bác nhiều
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
   If IsNumeric(Target) Then
      If InStr(Target, ".") < 1 Then
            If Len(Target) > 2 Then
               Target = Application.Round((Left(Target, 3) / 100), 1)
            ElseIf Len(Target) > 1 Then
               Target.Value = Left(Target, 2) / 10
            Else
               Target.Value = Target / 10
            End If
      End If
   Else
      Target = ""
      Target.Select
   End If
End If
Application.EnableEvents = True
End Sub
 

nh
ằm mục đích nhập điểm nhanh, cụ thể: em nhập 1111 máy tự hiểu 1.1; nhập 3 máy tự hiểu 3.0; nhập 3.5 máy hiểu là 3.5; nhập 34567 máy tự hiểu là 3.5; nhập 3,5 hoặc Text máy bỏ trống. Nhưng em nhập 01 thì nó chỉ hiểu là 1.0 mà em cần phải là 0.1. Rất mong được bác và mọi người giúp đỡ.

Góp thêm 1 code cho những người "làm biếng quá độ".
Hổng đúng thì thôi nghe.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
    If IsNumeric(Target) Then
        If Target.Value > 10 Then
            Target.Value = Application.Round(Target / 10 ^ (Len(Target) - 1), 1)
        End If
    Else
        Target.ClearContents
    End If
Else
    Target.ClearContents
    MsgBox "Chi nhap tung cell", , "GPE"
End If
Target.NumberFormat = "0.0"
Application.EnableEvents = True
End Sub
 
Lần chỉnh sửa cuối:
Góp thêm 1 code cho những người "làm biếng quá độ".
Hổng đúng thì thôi nghe.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
    If IsNumeric(Target) Then
        If Target.Value > 10 Then
            Target.Value = Application.Round(Target / 10 ^ (Len(Target) - 1), 1)
        End If
    Else
        Target.ClearContents
    End If
Else
    Target.ClearContents
    MsgBox "Chi nhap tung cell", , "GPE"
End If
Target.NumberFormat = "0.0"
Application.EnableEvents = True
End Sub

Thì thiệt là hỏng đúng đó mà,,, hic. Nhập vào số 1 thì nó không chịu ra số 0.1 kìa, hic
 
Bài #24 của anh Hải cơ bản chắc đáp ứng yêu cầu chủ topic, có điều là đang sót trường hợp 10 điểm tròn trĩnh.
 
Bài #24 của anh Hải cơ bản chắc đáp ứng yêu cầu chủ topic, có điều là đang sót trường hợp 10 điểm tròn trĩnh.
Chủ topic biết viết code thì chắc sẽ biết làm thế nào để giữ lại con số 10 mà
 
Cám ơn các bác nhiều lắm. Thấy các bác gọi em là "Lười biếng quá độ" thì tội em quá. Với hàng ngàn con số phải nhập mà phải nhập chính xác tuyệt đối nữa chứ thì chỉ cần bớt một dấu chấm thôi là bạc tỷ rồi các bác ạ. Vì vậy em mới tự học viết code để sao cho vừa ngủ gật vừa nhập điểm hàng đêm vẫn ok. Cốt lõ của vấn đề em chưa giải quyết được là sao cho Excel phân biệt được 01 và 1 hay đơn giản là nhập từ 1 đến 9 máy hiểu 1.0 đến 9.0 còn nhập 01 đến 09 máy hiểu là 0.1 đến 0.9. Cám ơn các bác rất nhiều.
 
Cám ơn các bác nhiều lắm. Thấy các bác gọi em là "Lười biếng quá độ" thì tội em quá. Với hàng ngàn con số phải nhập mà phải nhập chính xác tuyệt đối nữa chứ thì chỉ cần bớt một dấu chấm thôi là bạc tỷ rồi các bác ạ. Vì vậy em mới tự học viết code để sao cho vừa ngủ gật vừa nhập điểm hàng đêm vẫn ok. Cốt lõ của vấn đề em chưa giải quyết được là sao cho Excel phân biệt được 01 và 1 hay đơn giản là nhập từ 1 đến 9 máy hiểu 1.0 đến 9.0 còn nhập 01 đến 09 máy hiểu là 0.1 đến 0.9. Cám ơn các bác rất nhiều.
Bạn đã thử Code bài #24 của anh Hải chưa? Bạn nên test kỹ các Code mọi người giúp đỡ bạn, rồi bạn phản hồi kết quả và một điều nho nhỏ đó là cảm ơn sự giúp đỡ nhiệt tình của GPE nữa nhỉ?
 
Tất nhiên em làm rồi chứ. Code đó chỉ khăc phục được 3.5 thành 3.5 còn trước đó thành 0.0 do nó hiểu đó là 3 ký tự nên chia cho 100 suy ra thành 0.0. Code đó vẫn 1 thành 0.1 và 3,5 thành 0.4 và 10 thành 1.0
Nói tóm lại theo quy định điểm học phổ thông có dạng "số dấu chấm số" nên người nhập muốn nhập kiểu gì thì nhập, miễn sao về dạng "số dấu chấm số". Còn nhập các tình huống khác thì bỏ trống hoặc đưa về dạng chuẩn để còn tính toán. Nếu sơ sảy do vô tình nhập bị sai mà làm cho học sinh này đúp hoặc thi lại thì ân hận cả đời.
Cám ơn các anh chị nhiều lắm.
 
Lần chỉnh sửa cuối:
Tất nhiên em làm rồi chứ. Code đó chỉ khăc phục được 3.5 thành 3.5 còn trước đó thành 0.0 do nó hiểu đó là 3 ký tự nên chia cho 100 suy ra thành 0.0. Code đó vẫn 1 thành 0.1 và 3,5 thành 0.4 và 10 thành 1.0
Nói tóm lại theo quy định điểm học phổ thông có dạng "số dấu chấm số" nên người nhập muốn nhập kiểu gì thì nhập, miễn sao về dạng "số dấu chấm số". Còn nhập các tình huống khác thì bỏ trống hoặc đưa về dạng chuẩn để còn tính toán. Nếu sơ sảy do vô tình nhập bị sai mà làm cho học sinh này đúp hoặc thi lại thì ân hận cả đời.
Cám ơn các anh chị nhiều lắm.
Code này khá hoàn chỉnh đây. Chú ý là phải định dạng Text cho vùng cần nhập điểm trước nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
   If InStr(Target, ",") > 1 Then Target = Replace(Target, ",", "")
   If InStr(Target, ".") > 1 Then Target = Replace(Target, ".", "")
   If IsNumeric(Target.Value) Then
         If Len(Target) > 2 Then
            Target = Application.Round((Left(Target, 3) / 100), 1)
         ElseIf Len(Target) > 1 And Target <> 10 Then
            Target.Value = Left(Target, 2) / 10
         Else
            Target = Target * 1
         End If
   Else
      Target = Empty
      Target.Select
   End If
End If
Application.EnableEvents = True
End Sub
 
Anh quanghai1969 ơi em cám ơn anh nhiều lắm nhưng em chỉ cần giải quyết 01 vấn đề thôi, đó là: Em nhập 01 đến 09 máy phải hiểu là 0.1 đến 0.9 và đương nhiên nhập 1 đến 9 thì máy phải hiểu là 1.0 đến 9.0.
Còn tất cả các trường hợp còn lại em giải quyết được rồi. Đơn gản là thế này: Khi em nhập 01 thì Excel hiều là 1 và nó đem chia cho 10 (Target.Value = Target / 10). Vậy làm sao để Excel phân biệt được 01 và 1 thôi. Đấy là cái em cần nhất. Còn code của anh v
n hiểu 01 và 1 như nhau. Mong anh và mọi người giúp em với.
Em xin nói thêm: Em không được học về CNTT nên những gì em nêu ở đây là do mình tự "lăn lộn", có "gà mờ" một chút mong các anh thông cảm.

 
Anh quanghai1969 ơi em cám ơn anh nhiều lắm nhưng em chỉ cần giải quyết 01 vấn đề thôi, đó là: Em nhập 01 đến 09 máy phải hiểu là 0.1 đến 0.9 và đương nhiên nhập 1 đến 9 thì máy phải hiểu là 1.0 đến 9.0.
Còn tất cả các trường hợp còn lại em giải quyết được rồi. Đơn gản là thế này: Khi em nhập 01 thì Excel hiều là 1 và nó đem chia cho 10 (Target.Value = Target / 10). Vậy làm sao để Excel phân biệt được 01 và 1 thôi. Đấy là cái em cần nhất. Còn code của anh v
n hiểu 01 và 1 như nhau. Mong anh và mọi người giúp em với.
Em xin nói thêm: Em không được học về CNTT nên những gì em nêu ở đây là do mình tự "lăn lộn", có "gà mờ" một chút mong các anh thông cảm.

Thay vì nhập 01 thì bạn nhập .1 đi, excel không phân biệt 1 và 01 nếu đó là kiểu số.
 
Anh quanghai1969 ơi em cám ơn anh nhiều lắm nhưng em chỉ cần giải quyết 01 vấn đề thôi, đó là: Em nhập 01 đến 09 máy phải hiểu là 0.1 đến 0.9 và đương nhiên nhập 1 đến 9 thì máy phải hiểu là 1.0 đến 9.0.
Còn tất cả các trường hợp còn lại em giải quyết được rồi. Đơn gản là thế này: Khi em nhập 01 thì Excel hiều là 1 và nó đem chia cho 10 (Target.Value = Target / 10). Vậy làm sao để Excel phân biệt được 01 và 1 thôi. Đấy là cái em cần nhất. Còn code của anh v
n hiểu 01 và 1 như nhau. Mong anh và mọi người giúp em với.
Em xin nói thêm: Em không được học về CNTT nên những gì em nêu ở đây là do mình tự "lăn lộn", có "gà mờ" một chút mong các anh thông cảm.

Bạn có định dạng Text cho vùng cần nhập dữ liệu chưa?
 
Anh vu_tuan_manh_linh

à đã gọi là nhập nhanh mà anh (nhanh mà chính xác cho mọi hoàn cảnh: 01 hay 0,1 hay 0.1 hay "dấu cách dấu cách 01 dấu cách dấu cách"... vẫn là 0.1 miễn là hoặc về 0.1 hoặc bỏ trống). Các anh ơi các anh đã nhập điểm trên phần mềm trên Edu.vn của tập đoàn VinaPhone chưa? Mình chỉ cần nhập 01 là nó tự nhảy sang 0.1 mà.

Vâng em làm thấy tạm ổn để em kiểm tra lại lần nữa. Cám ơn anh nhiều.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Anh vu_tuan_manh_linh

à đã gọi là nhập nhanh mà anh (nhanh mà chính xác cho mọi hoàn cảnh: 01 hay 0,1 hay 0.1 hay "dấu cách dấu cách 01 dấu cách dấu cách"... vẫn là 0.1 miễn là hoặc về 0.1 hoặc bỏ trống). Các anh ơi các anh đã nhập điểm trên phần mềm trên Edu.vn của tập đoàn VinaPhone chưa? Mình chỉ cần nhập 01 là nó tự nhảy sang 0.1 mà.

Vâng em làm thấy tạm ổn để em kiểm tra lại lần nữa. Cám ơn anh nhiều.
Hơi bị lạ nha!! Nhập 01 hay .1 hay ,1 thì chỉ bấm 2 phím, chứ 0,1 hay 0.1 dùng đến 3 phím thì làm sao gọi là NHẬP NHANH như bạn nói đc, chưa kể lại thêm một đống "dấu cách dấu cách" chả hiểu để làm gì. Nhập liệu thì phải có NGUYÊN TẮC của nó, chứ làm như bạn gọi là BỪA BÃI!!!
 
Em cám ơn các anh nhiều lắm. Anh quanghai1969 ơi em có thêm một dòng (phần in đậm) để nó tự chuyển sang dạng số chuẩn theo quy định của ngành giáo dục luôn anh xem có đúng không. Cám ơn anh và cả các anh trong GPE nữa.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
If InStr(Target, ",") > 1 Then Target = Replace(Target, ",", "")
If InStr(Target, ".") > 1 Then Target = Replace(Target, ".", "")
If IsNumeric(Target.Value) Then
If Len(Target) > 2 Then
Target = Application.Round((Left(Target, 3) / 100), 1)
ElseIf Len(Target) > 1 And Target <> 10 Then
Target.Value = Left(Target, 2) / 10
Else
Target = Target * 1
End If
Else
Target = Empty
Target.Select
End If
End If
Target.NumberFormat = "0.0"
Application.EnableEvents = True
End Sub
 
anh ơi anh hiểu nhầm rồi đấy là vô tình bị nhập sai hay người nhập không hiểu dấu"," và dấu "." trong Excel
 
anh ơi anh hiểu nhầm rồi đấy là vô tình bị nhập sai hay người nhập không hiểu dấu"," và dấu "." trong Excel
Đấy cũng là một thói quen không hay nữa của người dùng máy tính. Tiêu chuẩn VN, Decimal Symbol là dấu ",", còn Digit Grouping Symbol là dấu ".". Tất cả hồ sơ làm sai định dạng số đều bị trả lại hết bạn ạ!!
 
Web KT
Back
Top Bottom