題 在Excel中編輯結束時舍入單元格值


我想構建一個工作表,當數字輸入到單元格中並且用戶結束該單元格上的編輯時,它們會自動舍入到最接近的0.25。我不想有兩列,一列是原始值,另一列是捨入值。這是可能的,如果是的話;怎麼會做到這一點?

這就是工作流程:

  • 用戶在單元格中鍵入2.30
  • 用戶選項卡到下一個單元格或命中輸入以離開單元格
  • 細胞值從2.3變為2.25

我也希望單元格的值為2.25,我不希望該值為2.30但格式化為2.25。


3
2017-07-02 23:42


起源


就地解決方案需要VBA代碼。因此,這屬於StackOverflow。此外,他們不會編寫代碼,並會問:“你有什麼嘗試?” - Steven
我是一個堆棧溢出用戶,我知道它在那裡是如何工作的。如果您使用VBA代碼,那是否意味著在打開文檔時您將收到有關允許宏的消息? - Aran Mulholland
默認情況下,是的。您可以調整計算機上的宏安全性。單元格可以包含值或公式,而不是兩者。這就是你需要VBA的原因。 - Steven


答案:


這在VBA中非常簡單。只需創建此子例程:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target.Value = Round(4 * Target.Value) / 4
    Application.EnableEvents = True
End Sub

只要表單上的任何內容髮生變化,Excel就會調用此例程。 該

Application.EnableEvents = False

語句暫時關閉此自動調用, 防止 Target.Value = … 聲明 從導致例程被遞歸調用。 看到 如何在MS Office中添加VBA? 有關使用VBA的一般信息。


2
2017-07-03 06:02





沒有VBA,我可以得到最接近的是使用數據驗證。它不會更改值,但會提醒用戶他們輸入的值無效。請注意,您可以通過從數據驗證範圍外部粘貼來“欺騙”Excel中的數據驗證,因此如果它至關重要,那麼這可能不是理想的解決方案。

應選擇相關單元格,然後轉到數據/驗證,然後選擇 允許 “自定義”,和  的 =MOD(A2,0.25)=0 (此公式對單元格A2有效)。然後,您可以轉到“錯誤警報”選項卡並將錯誤消息更改為“請輸入以0.25,0.5,0.75結尾的值或此單元格中的整數”

將其推送到整個列的最佳方法是單個單元格,然後將其複製到許多其他單元格。數據驗證應該相應地移動(因此它不會總是基於單元格A2 - 儘管這可能是使用$ A $ 2)


1
2017-07-03 05:00