Board logo

標題: [發問] 數字尾數調整問題 [打印本頁]

作者: spermbank    時間: 2012-3-16 16:01     標題: 數字尾數調整問題

本帖最後由 spermbank 於 2012-3-16 16:02 編輯

大家好:
想請問一個設計巨集的問題:

我在test檔案中的工作表sheet1中的A區與B區
我要如何把這些數字用下列規則:
數字區間0-10           跳動+-0.01   
數字區間10-50         跳動+-0.05
數字區間50-100      跳動+-0.1
數字區間100-500    跳動+-0.5
數字區間500-1000  跳動+-1
數字區間1000以上   跳動+-5

例如:
數字  6.7894  取 6.79  (只要數字大於6.78就進位取6.79)
數字  10.68    取10.7   (只要數字大於10.65就進位取10.7)
數字  56.92    取57      (只要數字大於56.9就進位取57)
數字  103.42 取103.5    (只要數字大於103就進位取103.5)
...等等

然後按下巨集就把運算後的規則數字送入C區和D區
不知道如何寫,請大大們幫忙一下,謝謝。
作者: Hsieh    時間: 2012-3-16 22:56

回復 1# spermbank
試試看
  1. Sub nn()
  2. For Each a In Range("A:B").SpecialCells(xlCellTypeConstants, xlNumbers)
  3. b = Application.Lookup(a, Array(0, 11, 51, 101, 501, 1001), Array(0.01, 0.05, 0.1, 0.5, 1, 5))
  4. a.Offset(, 3) = Application.Ceiling(a, b)
  5. Next
  6. End Sub
複製代碼

作者: spermbank    時間: 2012-3-17 01:34

回復 2# Hsieh


謝謝H大,程式跑來完全符合想法。

想在請問一下
若是我想改變一下規則,想利用捨去法,把多餘的刪除
例如:
數字  6.7894  取 6.78  
數字  10.68    取10.6  
數字  56.92    取56.9      
數字  103.42 取103   
程式要怎麼修改,謝謝。
作者: Hsieh    時間: 2012-3-17 09:04

回復 3# spermbank
試試看
  1. Sub nn()
  2. For Each a In Range("A:B").SpecialCells(xlCellTypeConstants, xlNumbers)
  3. b = Application.Lookup(a, Array(0, 11, 51, 101, 501, 1001), Array(0.01, 0.05, 0.1, 0.5, 1, 5))
  4. a.Offset(, 3) = Application.Ceiling(a, b)
  5. a.Offset(, 5) = Application.RoundDown(Application.Floor(a, b / 10), 2) '無條件捨去
  6. Next
  7. End Sub
複製代碼

作者: spermbank    時間: 2012-3-18 00:54

回復 4# Hsieh

H大你好:
我利用
a.Offset(, 5) = Application.RoundDown(Application.Floor(a, b / 10), 2) '無條件捨去
跑出來的結果似乎不太對
例如:
12.33 還是12.33 沒辦法無條件捨去變成12.3
45.47 變成45.46 沒辦法無條件捨去變成45.45
15.27 變成15.26 沒有辦無條件捨去變成15.25
...等等

可不可請H大再幫我看看,謝謝。
作者: Hsieh    時間: 2012-3-19 08:29

回復 5# spermbank
  1. Sub nn()
  2. For Each a In Range("A:B").SpecialCells(xlCellTypeConstants, xlNumbers)
  3. b = Application.Lookup(a, Array(0, 11, 51, 101, 501, 1001), Array(0.01, 0.05, 0.1, 0.5, 1, 5))
  4. a.Offset(, 3) = Application.Ceiling(a, b)
  5. a.Offset(, 5) = Application.Floor(a, b) '無條件捨去
  6. Next
  7. End Sub
複製代碼

作者: spermbank    時間: 2012-3-19 15:22

回復 6# Hsieh
感謝,謝謝H大幫忙。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)