2012-12-12 73 views
1

我試圖設定論文規則特殊手機號碼格式:Excel的數字格式 - 不同的十進制數字

  • 顯示比例
  • 顯示在最多3個數字(小數點+整數部分)

所以我可以顯示100%或99.3%或1.27%但不是100.9%或100.27%或99.27%。

當然,我可以有負數(-27.3%),它不影響我的規則。

我已經沒有成功的細胞格式化選項嘗試:

[<1]0.00%;[<10]0.0%;0% 

因爲它似乎是Excel文件(2010)不支持在小區格式化大於2分的條件(所以我不能展開去管理負數...)

它有無論如何去做我想要的嗎?

感謝

+2

您是否嘗試過'條件化'格式?在Excel 2010中,您可以根據值(在條件格式中)設置數字格式,並且條件數量沒有限制...... –

+0

在數字而不是小數點處格式化也是非常罕見的...所以你可以有1.27%或99.1%(從99.143%四捨五入),實際上第一個結果比第二個結果更準確,但在同一個數據集中。 – InContext

回答

0

在功能區中的主頁選項卡中選擇條件格式:

Conditional tile

,然後選擇新規則或管理規則(後者,那麼你可以選擇新規則,但也有所有當前規則的概述)

然後選擇使用公式來確定哪些單元格格式爲並輸入公式wi個參照細胞本身(選擇在我的情況下細胞A1,採取$跡象出來,使其能夠適用於其他的細胞本身,以及!):

New Rule

單擊格式。 ..並根據您的需要選擇所需的數字格式作爲百分比與小數位數。

對所有需要區分的情況重複此操作。

由於值可以是負值,我使用ABS()來始終測試單元絕對值的規則。

請注意,您可以使所有規則適用於2方的有限值範圍(在我的示例中,我有最小值0.1和最大值1(分別爲10%和100%)。或者,您只能確定最小值OR最大值,並在Stof If True的右邊勾選所有規則的框。

+0

我不成功使用這個:驗證對話框時(單擊確定按鈕),Excel彈出該公式是錯誤的。 – Alexxx

+0

所以我使用「僅格式化包含的單元格」,它運行良好。 – Alexxx

+1

很高興看到它現在適合你。我不知道你出了什麼問題。它實際上應該與我放入的示例一起工作。也許公式函數在您的機器上可能不同(逗號,分號等) –

0

我最近解決了這個問題,但配置了最多6位小數。請求如下:

我們要顯示多個相同的方式,由用戶輸入但 允許不超過6個小數:

  • 1 - > 1
  • 1 ,1 - > 1,1
  • 1,12 - > 1,12
  • ...
  • 1,123456 - > 1,123456
  • 1,1234567 - > 1,12345 (圓形從這點)

這可以通過使用條件格式,並從開始的整數小數每一個規則來解決。整數是一個沒有小數的數字,所以X MOD 1 = 0。我們可以應用這個邏輯乘以10^N的數字,N是我們想要的小數位數。此外,我們希望在檢測到單元格值中的小數位數時停止應用規則,因此請確保標記爲「如果爲真」,並且規則的順序是從最嚴格的(整數)到限制性較小(表示允許的最大小數位數)。

彙總,您必須配置如下方式(樣品中我做對於B柱):

  • INTEGER:=MOD(B2;1)=0
  • 一個小數:=MOD(B2*10;1)=0
  • 兩位小數:=MOD(B2*100;1)=0
  • ...
  • SIX DECIMALS:=MOD(B2*1000000;1)=0

enter image description here

enter image description here

而且設置單元格的默認格式與支持小數的最大數一個數字:

enter image description here

終於在Excel中的工作成果:

enter image description here

1

我在VBA的功能實現一個相當原始的解決方案:

Function formatStr(myVal As Double) As String 
' the smaller the number, the more digits are to be shown 
Dim retStr  As String 
Dim absVal  As Double 

    absVal = Abs(myVal) 

    If absVal >= 100 Then 
     retStr = "0" 
    ElseIf absVal >= 10 Then retStr = "0.0" 
    ElseIf absVal >= 1 Then retStr = "0.00" 
    Else ' number is between -1 and 1 
     retStr = ".000" 
    End If 

    formatStr = retStr 
End Function 

...然後可以用在VBA語句是這樣的:

myVal = 0.5555: ActiveSheet.Cells(27, 4).Value = Format(myVal, formatStr(myVal)) 

,如果你想使用一個表單元格您需要另一個小功能

Function FormatAlignDigits(myVal As Double) As Double 
    FormatAlignDigits = Format(myVal, formatStr(myVal)) 
    End Function 

=>您可以輸入= FormatAlignDigits (B27)在您想要結果的單元格中。在本例中B27是具有源數據的單元。

我的測試結果:

100.3 => 100
100.5 => 101
10.53 => 10.5
10.55 => 10.6
1.553 => 1.55
1.555 => 1.56
0.5553 = > 0.555
0.5555 => 0.556
-0.5555 => -0.556
-0.5553 => -0.555
-1.555 => -1.56
-1.553 => -1.55
-10.55 => -10.6
-10.53 => -10.5
-100.5 => -101
-100.3 => -100

我敢肯定,可以有一個更奇特的解決方案,例如函數'formatStr'的一個參數告訴數字的位數下降到0(這裏:power = 2;表示該值是> = 100)。 對我來說這個原始的東西工作得很好。

相關問題