計量論壇

標題: 保留位數EXCEL實現 [打印本頁]

作者: wangyiyong7703    時間: 2023-9-16 01:00
標題: 保留位數EXCEL實現
A2輸入待修約數字,B2輸入保留小數點位數,C2輸入公式

IF(B2=0,IF(OR(AND(ISEVEN(INT(A2)),A2-INT(A2)=0.5),A2-INT(A2)<0.5),INT(A2),INT(A2)+1),IF(LEN(IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))=LEN(INT(A2)),IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))&"."&REPT("0",B2),IF(LEN(INT(A2*POWER(10,B2)))+1>LEN((IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))),(IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))&REPT("0",LEN(INT(A2*POWER(10,B2)))-1-LEN((IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))))),IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))))

保留多少位小數點.xlsx

9.49 KB, 下載次數: 58, 下載積分: 金幣 -1


作者: wangyiyong7703    時間: 2023-9-16 12:39
對9.99999這種情況不適用,還待改進
作者: zcxxwxu    時間: 2023-9-18 16:23
點個贊,點個贊,點個贊,點個贊。
作者: 小阿飛飛    時間: 2023-9-28 15:34
=IF(MOD(ABS(R5*POWER(10,Y5)),2)<=0.5,ROUNDDOWN(R5,Y5),ROUND(R5,Y5))   
不用那么麻煩吧我用的是這個
作者: wangyiyong7703    時間: 2023-9-29 12:13
小阿飛飛 發表于 2023-9-28 15:34
=IF(MOD(ABS(R5*POWER(10,Y5)),2)

顯然主邏輯程序是對的,但你要考慮特殊情況,在特殊情況下如0.999995,0.100005,您還能得出您想要的答案么。這個問題的難點就是特殊情況BUG,不考慮特殊情況,答案很多。還有浮點問題。好多。但怎樣規避是個問題。
作者: 軒轅夢    時間: 2023-9-30 16:35
感謝分享,下載看看
作者: 路云    時間: 2023-9-30 23:16
本帖最后由 路云 于 2023-9-30 23:53 編輯
wangyiyong7703 發表于 2023-9-29 12:13
顯然主邏輯程序是對的,但你要考慮特殊情況,在特殊情況下如0.999995,0.100005,您還能得出您想要的答案 ...

其實沒那么復雜,只要建一個自定義函數,應用時直接調用即可。

465留雙自定義函數:

Function Yround(ByVal a As Double, Optional ByVal d As integer)

        Yround=Round(CDec(a),d)

End Function

注:參數a為傳值型雙精度變量(擬修約數),參數d為可選整型參數(需保留的小數位數)。

如您1樓的例子,只需在A2單元格輸入擬修約數,B2單元格輸入欲保留的小數位數,在C2單元格中直接調用自定義函數(輸入“=Yround(A2, B2)”)即可得到修約結果。無論A2單元格的擬修約數是正數還是負數,都會按自動按照“465留雙”的修約規則進行修約。


作者: wangyiyong7703    時間: 2023-10-1 14:12
路云 發表于 2023-9-30 23:16
其實沒那么復雜,只要建一個自定義函數,應用時直接調用即可。4舍6入5留雙自定義函數:Function Yround(ByV ...

自定義函數也用到宏代碼,不能這樣操作,一般人用起來不方便

作者: wangyiyong7703    時間: 2023-10-1 14:14
路云 發表于 2023-9-30 23:16
其實沒那么復雜,只要建一個自定義函數,應用時直接調用即可。4舍6入5留雙自定義函數:Function Yround(ByV ...

我們的目標是避開宏代碼,完全用內建函數實現
作者: wangyiyong7703    時間: 2023-10-1 14:53
本帖最后由 wangyiyong7703 于 2023-10-1 14:56 編輯

IF(IFERROR(FIND(".",IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)),1),0)=0,IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))&"."&REPT("0",B2),IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))&REPT("0",IFERROR(FIND(".",IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)),1),0)+B2-LEN(IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))))
作者: wangyiyong7703    時間: 2023-10-1 14:54
本帖最后由 wangyiyong7703 于 2023-10-1 15:16 編輯

代碼進行了優化
適應范圍更廣,不用宏代碼,完全避開了自定義函數和程序用到宏代碼。
作者: wangyiyong7703    時間: 2023-10-1 15:17
從0.0001到100.0000,全部合格,保留2位小數
作者: 路云    時間: 2023-10-1 20:30
本帖最后由 路云 于 2023-10-1 20:41 編輯
wangyiyong7703 發表于 2023-10-1 14:12
自定義函數也用到宏代碼,不能這樣操作,一般人用起來不方便

建立自定義函數,目的就是要讓普通用戶能用起來呀。用時就像內部函數一樣調用即可。你鍵入那么復雜的函數都能用,難道鍵入“=Yroug(A2, B2)”還更難?

您這個公式我試了一下,存在以下問題:

-1.035000000,修約結果沒有按照“4舍6入5留雙”的修約規則修約至-1.04,而是修約至-1.03。


作者: wangyiyong7703    時間: 2023-10-1 21:15
公式出現浮點問題,正在改進,新的方法有點問題,
作者: wangyiyong7703    時間: 2023-10-1 21:16
邏輯沒有問題,避開浮點算法已經找到

作者: wangyiyong7703    時間: 2023-10-1 21:17
路云 發表于 2023-10-1 20:30
建立自定義函數,目的就是要讓普通用戶能用起來呀。用時就像內部函數一樣調用即可。你鍵入那么復雜的函數 ...

然后有時候是正常的,兩種情況都有
作者: wangyiyong7703    時間: 2023-10-1 21:41
路云 發表于 2023-10-1 20:30
建立自定義函數,目的就是要讓普通用戶能用起來呀。用時就像內部函數一樣調用即可。你鍵入那么復雜的函數 ...

沒有那容易,必須啟用宏,如果啟用宏,會帶來很多麻煩
作者: wangyiyong7703    時間: 2023-10-1 23:15
IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2),1),0)))))

作者: wangyiyong7703    時間: 2023-10-2 10:02
=IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+1/POWER(10,B2),1),0))))) 用的新的算法歡迎指正
作者: wangyiyong7703    時間: 2023-10-2 10:19
IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0))))) 適合負數修約
作者: 路云    時間: 2023-10-2 22:45
wangyiyong7703 發表于 2023-10-1 21:41
沒有那容易,必須啟用宏,如果啟用宏,會帶來很多麻煩

不明白您說的很多麻煩到底是什么麻煩。我們單位在LIMS系統中應用這么多年,從來沒有聽說過遇到什么麻煩。網絡版office安裝時就已經進行了安全設置,自定義函數都放在安全可信路徑下,原始記錄等都已制作成了智能型空白模板,試驗/檢測人員調用模板生成原始記錄的操作非常簡單,對于選擇項只需點擊下拉列表框、復選框、控件等進行選擇,只需錄入檢測數據,所有的數據處理和結果都是自動完成,試驗/檢測人員根本沒有感覺,也無需其他任何操作,完全做成了一種“傻瓜型”的智能Excel模板。


作者: wangyiyong7703    時間: 2023-10-3 07:48
路云 發表于 2023-10-2 22:45
不明白您說的很多麻煩到底是什么麻煩。我們單位在LIMS系統中應用這么多年,從來沒有聽說過遇到什么麻煩。 ...

單機版的麻煩,您的網絡版加持當然可以。
作者: 路云    時間: 2023-10-3 11:12
wangyiyong7703 發表于 2023-10-3 07:48
單機版的麻煩,您的網絡版加持當然可以。

單機版的也一樣,又不要用戶去編輯宏代碼,就像調用普通內部函數一樣。


作者: wangyiyong7703    時間: 2023-10-3 13:53
那您發一個自定義的函數,我用二十多年了,沒見過

作者: 路云    時間: 2023-10-4 08:14
本帖最后由 路云 于 2023-10-4 10:02 編輯
wangyiyong7703 發表于 2023-10-3 13:53
那您發一個自定義的函數,我用二十多年了,沒見過

我說的“用戶”,不是指OFFICE用戶,而是指具體填寫原始記錄的檢測/校準人員。如果見過,那就不叫“自定義函數”了。


作者: 路云    時間: 2023-10-4 10:53




作者: wangyiyong7703    時間: 2023-10-5 08:48
路云 發表于 2023-10-4 10:53

謝謝,就是要多找漏洞

作者: wangyiyong7703    時間: 2023-10-5 08:51
=IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)))))
作者: wangyiyong7703    時間: 2023-10-5 08:51
路云 發表于 2023-10-4 10:53

您確認是用的我的公式。我這邊正常啊

作者: wangyiyong7703    時間: 2023-10-5 11:45
用這個試試,都是對的

保留小數位數.xlsx

119.42 KB, 下載次數: 14, 下載積分: 金幣 -1


作者: wangyiyong7703    時間: 2023-10-5 11:57
應該是版本的問題

微信圖片_20231005115604.png (118.5 KB, 下載次數: 764)

微信圖片_20231005115604.png

作者: 路云    時間: 2023-10-6 08:51
本帖最后由 路云 于 2023-10-6 12:29 編輯
wangyiyong7703 發表于 2023-10-5 08:51
您確認是用的我的公式。我這邊正常啊

您的A列的數據格式不是“數字”,而是“文本”,所以才會得出“正?!钡募傧?。

另外,擬修約數和修約后的最終結果,還應該根據實際需要,為其設置顯示格式,如:是否顯示正負號、小數位數,包括條件格式等(如7樓截圖)。


作者: 路云    時間: 2023-10-6 14:07

以下截圖示例中,E列用“45入法”修約保留3位小數的修約結果;F列用“465留雙法”(本人7樓提供的自定義函數)修約保留3位小數的修約結果。G列和H列都是用本人提供的自定義函數修約,保留2位小數的最終修約結果。



作者: wangyiyong7703    時間: 2023-10-6 14:11
1.這個當然要用文本格式來弄,電子表格是智能的,默認自動舍去后面的0,相當于修約過,按正常的情況下,是不能這樣操作的。因為用文本格式是必須的。2.您的反例要符合正常的要求,全數的有效位要大于修約后的有效位數。這個可以改進,但沒有必要。您的幾個反例再弄多一點,經典一點
作者: wangyiyong7703    時間: 2023-10-6 14:12
路云 發表于 2023-10-6 08:51
您的A列的數據格式不是“數字”,而是“文本”,所以才會得出“正?!钡募傧?。另外,擬修約數和修約后的最 ...

謝謝,后期還請您多提寶貴的反例
作者: wangyiyong7703    時間: 2023-10-6 14:16
路云 發表于 2023-10-6 14:07
以下截圖示例中,E列用“4舍5入法”修約保留3位小數的修約結果;F列用“4舍6入5留雙法”(本人7樓提供的自定 ...

正常情況下,一些文獻提供的公式基本上都能滿足,可惜的是特殊情況下是不能滿足的。0.100000009,9.99999999.我的算法正是進行文本操作,避開了浮點的問題。
作者: 路云    時間: 2023-10-6 14:37
wangyiyong7703 發表于 2023-10-6 14:11
1.這個當然要用文本格式來弄,電子表格是智能的,默認自動舍去后面的0,相當于修約過,按正常的情況下,是 ...

1.這個當然要用文本格式來弄,電子表格是智能的,默認自動舍去后面的0,相當于修約過,按正常的情況下,是不能這樣操作的。因為用文本格式是必須的。

這個理由是不成立的。如果是“文本”格式,中間有可能夾雜了其他文本字符,您的公式照樣發現不了,如:

2.您的反例要符合正常的要求,全數的有效位要大于修約后的有效位數。

修約前的全數有效位數多少,完全取決于數據處理的結果(如:多次測量結果的平均值),大于、小于、等于修約后的小數位數都是有可能的。

正常情況下,一些文獻提供的公式基本上都能滿足,可惜的是特殊情況下是不能滿足的。0.100000009,9.99999999.我的算法正是進行文本操作,避開了浮點的問題。

我提供的自定義函數,不存在浮點的問題。


作者: wangyiyong7703    時間: 2023-10-6 18:16
路云 發表于 2023-10-6 14:37
1.這個當然要用文本格式來弄,電子表格是智能的,默認自動舍去后面的0,相當于修約過,按正常的情況下, ...


您函數中有相雙精度計算,主要是沒有辦法補位,這個功能比較麻煩。不然的話是很簡單的
作者: 路云    時間: 2023-10-6 19:08
wangyiyong7703 發表于 2023-10-6 18:16
您函數中有相雙精度計算,主要是沒有辦法補位,這個功能比較麻煩。不然的話是很簡單的 ...

沒看明白什么叫“有相雙精度計算”?您說的“補位”是啥意思?我最初也是與您的想法一樣,想通過您這種方式實現。結果研究了很長時間,也沒有找到一種能夠完全自動識別與控制的方法,而且迭代、嵌套、交叉引用太多,無法做成“傻瓜型”,滿足現場檢測/校準人員的錄入操作需求。最終還是用自定義函數方式解決問題,使過程大為簡化。最終要結合單元格格式、條件格式等設置,實現數據有效性自動識別、敲錄錯誤自動攔截提醒、自動生成符合性判定結論等功能。


作者: wangyiyong7703    時間: 2023-10-6 20:37
這個也是很簡單的,f(x)是公式中要求得的結果,f(x) & "00000"即可,補0即可。我們把主函數寫出來,電腦修約過度然后根據情況進行補位即可。我們是要避開VB,只用內建函數寫
作者: wangyiyong7703    時間: 2023-10-6 20:41
路云 發表于 2023-10-6 19:08
沒看明白什么叫“有相雙精度計算”?您說的“補位”是啥意思?我最初也是與您的想法一樣,想通過您這種方 ...

還是要有一定的規范,不可能做一個適用所有情況。否則VB也做不過來。通過規范使用者的操作行為。簡化函數。
作者: 路云    時間: 2023-10-6 22:41
本帖最后由 路云 于 2023-12-15 22:25 編輯
wangyiyong7703 發表于 2023-10-6 20:37
這個也是很簡單的,f(x)是公式中要求得的結果,f(x) & "00000"即可,補0即可。我們把主函數寫出來,電腦修 ...

這個也是很簡單的,f(x)是公式中要求得的結果,f(x) & 00000”即可,補0即可。我們把主函數寫出來,電腦修約過度然后根據情況進行補位即可。我們是要避開VB,只用內建函數寫

不需要在公式中用“& 00000”方式補0,只需對修約后的測量結果所在單元格設置數字格式即可實現。

還是要有一定的規范,不可能做一個適用所有情況。否則VB也做不過來。通過規范使用者的操作行為。簡化函數。

通過VBA編制的“465留雙修約自定義函數”,本來就是適用于所有數據按此修約規則的修約。就如同求平均值的內部函數“AVERAGE( )”和求和函數“SUM( )”一樣,這么方便、高效的函數您不用,非要逐個數據采取加減乘除四則運算的辦法去求。我也實在是想不明白圖什么?

現場實際操作的檢測/校準人員,對EXCEL的操作技能并不都十分精通,尤其對各種函數的應用、單元格格式的設置、條件格式的應用更是知之甚少,甚至一無所知。VBA本身就是微軟為個性化應用提供的高效應用工具,非常方便。我們不需要把VBA看得如臨大敵,談宏色變,沒那么可怕。我們的目的,就是要根據實際需要編制相應的標準化《原始記錄》模板表單,讓所有不懂EXCEL操作人員,只要會敲入數據,經過幾分鐘的簡單培訓,就能夠掌握、編制、生成每一份數據統一、規范、美觀的《原始記錄》,而且不會出現誤操作(因為所有不讓操作人員編輯的單元格都做了屏蔽設置,未經授權是點不進去的)。


作者: wangyiyong7703    時間: 2023-10-6 23:02
一條一條的駁,高手高手。
作者: wangyiyong7703    時間: 2023-10-6 23:29
路云 發表于 2023-10-6 22:41
這個也是很簡單的,f(x)是公式中要求得的結果,f(x) & “00000”即可,補0即可。我們把主函數寫出來,電腦 ...

麻煩您做一個不用VB的函數,或者完善一個您的函數,0.1000的結果顯示為0.1,我怎么也看不明白。您的函數中如果輸入項有字母,也能智能識別用作數值處理。我說的是我不想用VB這個宏功能。您能行么

補充內容 (2023-10-9 14:46):
您 的公式行么
作者: wangyiyong7703    時間: 2023-10-7 08:45
路云 發表于 2023-10-6 22:41
這個也是很簡單的,f(x)是公式中要求得的結果,f(x) & “00000”即可,補0即可。我們把主函數寫出來,電腦 ...

那麻煩您把你的單機板的excel文件傳到壇子里面,看能否用。我們學習學習
作者: wangyiyong7703    時間: 2023-10-7 15:39
修約表現,兩個公式都有問題,表現不一樣。16-18位,24-27位有異常。VB自定義的公式10位以后就開始一直不中,但要配合高端操作設置格式

微信圖片_20231007153504.png (23.87 KB, 下載次數: 818)

微信圖片_20231007153504.png

作者: 路云    時間: 2023-10-8 17:22
本帖最后由 路云 于 2023-10-8 17:41 編輯
wangyiyong7703 發表于 2023-10-7 15:39
修約表現,兩個公式都有問題,表現不一樣。16-18位,24-27位有異常。VB自定義的公式10位以后就開始一直不中 ...

1、我的自定義函數(見7樓)您不是已經試用了嗎,單機版與網絡版都能用,只是要將文件另存為“Excel啟用宏的模板(*.xltm)”即可。

2、對于單元格來說,其默認的數字格式是“G/通用格式”(即“常規”格式),這種“常規”格式,其默認的有效顯示的數字位數只能10位。鍵入的數值位數超過15位時則會截尾,且數值在10[sup]-10[/sup]10[sup]10[/sup]時,最多顯示前10位。若數值大于10[sup]10[/sup]或小于10[sup]-10[/sup]時,則以科學計數法顯示。所以必須配合單元格的數字格式設置(即:將數字格式設置為“自定義”格式),才能正常顯示。

3、除了科學研究,一般的檢測/校準領域,基本上不會遇到需要保留10位及以上“有效數字”的情形,所以該自定義函數在10[sup]-10[/sup]10[sup]10[/sup]數值范圍內應用,是沒有任何問題的。如果真有這種需求,那恐怕就不是VBA宏能夠解決的了。

4、您是將數值轉換成文本來處理,修約結果也是文本,無法顯示正數的符號“+”。且數字中夾雜有其他字符,也同樣會在修約結果中顯示。所以這種處理方式實質上是“文本字符的截取與組合”


作者: wangyiyong7703    時間: 2023-10-8 18:03
路云 發表于 2023-10-8 17:22
1、我的自定義函數(見7樓)您不是已經試用了嗎,單機版與網絡版都能用,只是要將文件另存為“Excel啟用宏的 ...

還是不了解。您的自定義函數盡然比不上內建函數的表現。還說vbA解決不了這個問題,您敢打賭么,解決了怎么辦
作者: 路云    時間: 2023-10-8 19:35
wangyiyong7703 發表于 2023-10-8 18:03
還是不了解。您的自定義函數盡然比不上內建函數的表現。還說vbA解決不了這個問題,您敢打賭么,解決了怎 ...

打賭就沒有意思了。我只是說“恐怕就不是VBA宏能夠解決的了”。EXCEL的數值處理范圍區間大小是有限的。您所提供的公式中,除了“POWER()”是數學類“工作表函數”外,基本上全是文字處理類或邏輯判斷類的“工作表函數”,而不是數值處理的內建函數。

本主題討論的是數據(非文本數據)的修約問題,EXCEL中與數值修約相關的,就只有“ROUND()”、“ROUNDDOWN()”和“ROUNDUP()”三個“工作表函數”。最為接近的就是“ROUND()”函數,僅僅是修約規則有那么一點點差異?!?/font>ROUND()”函數的修約規則是“四舍五入”,自定義函數的修約規則是“四舍六入五留雙”。

其實“ROUND()”函數有兩個,一個就是“工作表函數”(即您所說的“內建函數”),另一個是“VB函數”,盡管這兩個函數名稱一模一樣,但兩者的算法規則是不同的。


作者: wangyiyong7703    時間: 2023-10-8 19:52
路云 發表于 2023-10-8 17:22
1、我的自定義函數(見7樓)您不是已經試用了嗎,單機版與網絡版都能用,只是要將文件另存為“Excel啟用宏的 ...

1.麻煩您舉一些實質性的問題進行討論,這樣很累,沒有意義,之前您找到的很多有意義的反例很好;
2.純數字文本也可以參與其它計算,強制進行轉換。這里解決的是尾數補0的情況,用文本表示是不得已的事。
3.修約后尾數0后,系統自動去除,您的自定義函數是一個致命的問題。如果靠設置去解決,那您的公式確實看起來很好。
4.但是實際上不用設置格式,如果要用vb的話,徹底解決位數過大的問題。VB輕松解決。
5.你用設置格式解決尾數補0問題,確實不是很高端,我也是想避開。其實有很多內建函數配合格式設置可以做到,完全不用VB,這個早就實現了。
6.發揮內建函數作用,不靠其他方法是我追求的。因為您用vb做的自定義函數沒多大意思,我實不屑取,避開vb,才是我們想要的。用vb超百位的修約我也可以做到,早就做到了。
作者: wangyiyong7703    時間: 2023-10-8 19:56
這個是150的修約

微信圖片_20231008195555.png (8.74 KB, 下載次數: 529)

微信圖片_20231008195555.png

微信圖片_20231008195603.png (47.5 KB, 下載次數: 531)

微信圖片_20231008195603.png

作者: wangyiyong7703    時間: 2023-10-8 19:58
上面是vb做的,容易實現
作者: wangyiyong7703    時間: 2023-10-8 20:13
路云 發表于 2023-10-8 19:35
打賭就沒有意思了。我只是說“恐怕就不是VBA宏能夠解決的了”。EXCEL的數值處理范圍區間大小是有限的。您 ...

1.POWER()這個函數是有點問題,我的公式目前的缺陷就是它帶來的。
2.暫時沒有想到更好的辦法,如果你有好的算法,歡迎提出來。
3.用他來定位小數點確實是個好辦法,但缺陷是數位過大的時候問題就來了。如果只是解決數位小的問題,這個不在話下。
4.關鍵要提出一些好的反例,利于優化公式,給網友們提供方便實用的公式,
作者: wangyiyong7703    時間: 2023-10-10 08:38
避開格式設置問題公式如下:f(A1,B1)為網上或文獻中提供的各種數值計算處理的四舍六入五成雙公式,text(f(A1,B1),"0." & rept("0",B1).這樣不用格式設置。A1為待修約全數值,B1為修約要求的保留小數點位數

補充內容 (2023-10-10 16:33):
text(f(A1,B1),"0." & rept("0",B1))
作者: 路云    時間: 2023-10-13 23:58
wangyiyong7703 發表于 2023-10-8 19:52
1.麻煩您舉一些實質性的問題進行討論,這樣很累,沒有意義,之前您找到的很多有意義的反例很好;
2.純數 ...

2.純數字文本也可以參與其它計算,強制進行轉換。這里解決的是尾數補0的情況,用文本表示是不得已的事。

3.修約后尾數0后,系統自動去除,您的自定義函數是一個致命的問題。如果靠設置去解決,那您的公式確實看起來很好。

5.你用設置格式解決尾數補0問題,確實不是很高端,我也是想避開。其實有很多內建函數配合格式設置可以做到,完全不用VB,這個早就實現了。

EXCEL中“設置單元格格式”功能模塊,就是為了解決各種數據格式的顯示問題,運用公式、函數的目的,是解決“四舍六入五留雙”的問題。修約后的尾數補0,不是修約的問題,而是顯示格式的問題。所有的格式顯示問題,都可以用文本處理的方式去解決,那還需要“設置單元格格式”這一模塊嗎?有現成的、簡單的、適用的工具你不用,非要用文本處理的方式去解決,那是你的自由。

6.發揮內建函數作用,不靠其他方法是我追求的。因為您用vb做的自定義函數沒多大意思,我實不屑取,避開vb,才是我們想要的。用vb超百位的修約我也可以做到,早就做到了。

你可以有你的追求,你認為自定義函數沒多大意思那也是你個人的看法,我只是提供一種思路與方法,供您參考,我又沒有逼你一定要用。我不知道研究超百位的修約又有何意思,難道我們要去研究圓周率?現實當中超過10位小數的修約應用有多少?

POWER()函數只是解決實數的乘冪問題,解決不了修約后的尾數補0問題。自定義函數已經解決了修約的問題,無需用到這個函數。

避開格式設置問題公式如下:f(A1,B1)為網上或文獻中提供的各種數值計算處理的四舍六入五成雙公式,Text(f(A1,B1),"0." & rept("0",B1).這樣不用格式設置。A1為待修約全數值,B1為修約要求的保留小數點位數

所謂公式f(A1,B1),我也在網上找了很多,但最簡單易用的,就是我7樓提供的這個。用這個自定義函數,TEXT()公式就不靈了。

您的公式最大的問題是改變了數值的性質,將其變成了“文本”,解決不了帶符號顯示的問題,也避免不了37截圖所示的非數值問題。


作者: wangyiyong7703    時間: 2023-10-14 10:13
路云 發表于 2023-10-13 23:58
2.純數字文本也可以參與其它計算,強制進行轉換。這里解決的是尾數補0的情況,用文本表示是不得已的事。 ...

1.=TEXT(yround(A7,B7),"0."&REPT("0",B7)……原來顯示0.1,現在為0.100.用您的公式很好用呀,配合我提供的 TEXT(...rept..)公式,只是用了VB也要用公式設置,覺得太LOW了。
2.用vb我早就實現了上百位的修約,還不用格式設置,單元格有255個字符顯示,說明我可以修約2百多位數是沒有問題的。
3.用簡單的公式無法實現超多位數的修約,不然沒有必要在您的面前弄斧頭了,那不是丟人現眼,沒有必要發這個貼了。
4.文獻和網上好多公式沒有解決尾數為0自動不顯示,另一個超大位數的問題。我希望您也來提供一些好的算法。
5.尾數為0自動舍去,補零是須要的,文本是解決方法之一,用text也相當于手動設置改為公式設置,充分利用rept這個函數后,可以自動設置了。您用手動格式設置也可以。
6.因為之前很多有很多公式是用的數值處理,數值處理天然會帶有位數限制,修約結果受到影響。所以想到將數字進行文本方式處理,vb設計結果顯示是成功的。但用內建函數沒有找到很好的辦法,POWER相對來說表現效果好一點,但還是只能到15位,其它的基本只能到10位。當然目前只是想到用分段處理算法,但效果可能有限,只能到30位,而且公式很長。目前沒有好的算法。

微信圖片_20231014095513.png (21.64 KB, 下載次數: 511)

微信圖片_20231014095513.png

作者: wangyiyong7703    時間: 2023-10-14 10:23
本帖最后由 wangyiyong7703 于 2023-10-14 10:29 編輯
路云 發表于 2023-10-13 23:58
2.純數字文本也可以參與其它計算,強制進行轉換。這里解決的是尾數補0的情況,用文本表示是不得已的事。 ...


1.至于您說的符號顯示問題,我覺不是個問題,就是正號顯示問題,負數修約到我這不成為問題,您用負數算一下就可以了。
2.您要舉一個實例,哪個地方要顯示正號;我是沒有見過必須要在修約之后顯示正號的;您自己的公式也沒有正號啊,為什么要求我的公式顯示正號。
3.我之所以不想理會正號問題,是覺得這個問題提的有點怪。一般人不會提出這種問題,到您這里成為問題????。?!
4.if(A1>0,"+" & f(A1,b1),f(A1,b1))如果你須要這個的話,我給提供您這個方法f(A1,b1)為無法顯示正號的公式。這種問題太LOW。
=IF(A15*1>0,"+" & IF(OR(AND(ISEVEN(MID(A15,FIND(".",A15)+B15,1)*1),MID(A15,FIND(".",A15)+B15+1,1)="5",IFERROR(RIGHT(A15,LEN(A15)-FIND(".",A15)-B15-1)*1,0)=0),MID(A15,FIND(".",A15)+B15+1,1)*1<5),LEFT(A15,FIND(".",A15,1)+B15),IF(IFERROR(FIND(".",LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15),1),0)=0,LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15)&"."&REPT("0",B15),LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15)&REPT("0",B15-(LEN(LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15))-IFERROR(FIND(".",LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15),1),0))))),IF(OR(AND(ISEVEN(MID(A15,FIND(".",A15)+B15,1)*1),MID(A15,FIND(".",A15)+B15+1,1)="5",IFERROR(RIGHT(A15,LEN(A15)-FIND(".",A15)-B15-1)*1,0)=0),MID(A15,FIND(".",A15)+B15+1,1)*1<5),LEFT(A15,FIND(".",A15,1)+B15),IF(IFERROR(FIND(".",LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15),1),0)=0,LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15)&"."&REPT("0",B15),LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15)&REPT("0",B15-(LEN(LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15))-IFERROR(FIND(".",LEFT(A15,FIND(".",A15,1)*1+B15)*1+IF(A15*1<0,-1,1)/POWER(10,B15),1),0))))))

微信圖片_20231014102913.png (29.61 KB, 下載次數: 511)

微信圖片_20231014102913.png

作者: wangyiyong7703    時間: 2023-10-14 10:42
1.至于您提的非數值問題,那這個問題你的公式也做到了嗎?把一個參有字母數字串去修約,這個反例夠可以了的。
2.A1里面輸入的待修約全數值是公式算出來的結果,比如平均值公式什么的,搞檢測的公式復雜一點,怎么會含有字母,除非您跳出了十進制。
3.A1里面手動輸入才會有帶字母的全數值。那是輸入的問題。要解決的是輸入規范的問題。不是這里要解決的。
4.如果您提出的反例只能到這個層次,那說明我的公式在處理數值上是沒有大的漏洞了。
5.之前其它貼子里面有人也提出了輸入問題,經過多次運算之后 的浮點問題,遺傳到我的公式里面,但我作出了合理解決。輸入階段的問題,在輸入階段解決。不能要求修約公式是萬能的。當然用vb可以解決有效性輸入的問題,但這個效率低了一點。在其它地方解決輸入問題可能好一點。
作者: 路云    時間: 2023-10-15 01:39
本帖最后由 路云 于 2023-10-15 13:53 編輯
wangyiyong7703 發表于 2023-10-14 10:13
1.=TEXT(yround(A7,B7),"0."&REPT("0",B7)……原來顯示0.1,現在為0.100.用您的公式很好用呀,配合我提供 ...

1.=TEXT(yround(A7,B7),"0."&REPT("0",B7)……原來顯示0.1,現在為0.100.用您的公式很好用呀,配合我提供的 TEXT(...rept..)公式,只是用了VB也要用公式設置,覺得太LOW了。

不是公式設置,而是格式設置,不要把概念給搞混了。

2.用vb我早就實現了上百位的修約,還不用格式設置,單元格有255個字符顯示,說明我可以修約2百多位數是沒有問題的。

3.用簡單的公式無法實現超多位數的修約,不然沒有必要在您的面前弄斧頭了,那不是丟人現眼,沒有必要發這個貼了。

4.文獻和網上好多公式沒有解決尾數為0自動不顯示,另一個超大位數的問題。我希望您也來提供一些好的算法。

我早就說了,實際應用中,我幾十年也沒有遇到過超多位數的修約案例與需求。不想在已經能夠滿足實際需求的情況下,再去研究這種不切實際的問題。位數0自動不顯示,本就是單元格格式沒有設置所致。有了簡單易用的單元格格式設置功能模塊,我為什么還要去動這個腦筋呢?假如我現在要改成百分比的格式顯示,你是不是要重新修改公式呀?

2.您要舉一個實例,哪個地方要顯示正號;我是沒有見過必須要在修約之后顯示正號的;您自己的公式也沒有正號啊,為什么要求我的公式顯示正號。

3.我之所以不想理會正號問題,是覺得這個問題提的有點怪。一般人不會提出這種問題,到您這里成為問題???!?。?/font>

我33樓的實際案例,“示值誤差”的計算,其最終的修約結果,不就是要求除0誤差外,必須帶正負號嗎。

1.至于您提的非數值問題,那這個問題你的公式也做到了嗎?把一個參有字母數字串去修約,這個反例夠可以了的。

你的擬修約數是“文本”,誤敲入字母或其他符號完全是有可能的。

2.A1里面輸入的待修約全數值是公式算出來的結果,比如平均值公式什么的,搞檢測的公式復雜一點,怎么會含有字母,除非您跳出了十進制。

既然是公式算出來的,那么計算結果的小數位數,完全有可能會少于你需要保留的小數位數。

3.A1里面手動輸入才會有帶字母的全數值。那是輸入的問題。要解決的是輸入規范的問題。不是這里要解決的。

你的單元格格式就是“文本”,誤操作完全是有可能的,而且輸入的其他字符完全符合“文本”的要求,是你沒有對輸入的數據進行“有效性控制”、攔截。

另外強調一點,實際應用中,第二列的“保留小數位數”,根本就無需在原始記錄的表格中出現,也無需去輸入。相應單元格的數據處理后的最終結果的保留小數位數,應該是在編制“原始記錄表”模板時,就已經是確定,可以固化的。




作者: wangyiyong7703    時間: 2023-10-15 08:09
你的反例舉得很好啊,之前跟你講過,后面輸入數據處理即可,即對于待修約數有效數字比修約要求的少,包括浮點輸入,誤輸入都可以對其進行過慮,通過加round過濾浮點問題,通過f(x)&"000000"解決待修約位數少的問題。
作者: wangyiyong7703    時間: 2023-10-15 08:20
從實際角度講應盡量減少修約后精度提高的問題,不能拿這個說事。誤差確須帶正負符號的話,你加我的算法不就可以了。如果把這個算法也加到普通修約公式里面去,那不還要增加一個支鏈判定是不是誤差。搞笑,正確方向提反例好不好
作者: wangyiyong7703    時間: 2023-10-15 08:24
增加位數,不用vb,不用手動設置公式是我個人增加難度,不在這里惡心我,好不好,交待多少回了。你要知道excel愛好者有這么一群人就愛干這個事。
作者: wangyiyong7703    時間: 2023-10-15 08:28
路云 發表于 2023-10-15 01:39
1.=TEXT(yround(A7,B7),"0."&REPT("0",B7)……原來顯示0.1,現在為0.100.用您的公式很好用呀,配合我提供 ...

有質量的反例希望你多提點,重復提有什么意思。提了那么多,還不如別人提的一個浮點問題有質量。
作者: 路云    時間: 2023-10-15 14:31

你的反例舉得很好啊,之前跟你講過,后面輸入數據處理即可,即對于待修約數有效數字比修約要求的少,包括浮點輸入,誤輸入都可以對其進行過慮,通過加round過濾浮點問題,通過f(x)&"000000"解決待修約位數少的問題。

如果工作表函數ROUND()能夠解決問題的話,也就用不著去用VB函數ROUND()去編制自定義函數了。

從實際角度講應盡量減少修約后精度提高的問題,不能拿這個說事。誤差確須帶正負符號的話,你加我的算法不就可以了。如果把這個算法也加到普通修約公式里面去,那不還要增加一個支鏈判定是不是誤差。搞笑,正確方向提反例好不好

數據處理的函數公式都一樣,僅僅是顯示格式(是否帶正負號)的要求不同,我為什么要去重新修改函數公式?是否帶正負號顯示,與數據處理的函數公式沒有任何關系。計算過程與步驟完全一致,通過單元格格式設置,你需要顯示符號(如“示值誤差”)就顯示符號,不需要顯示符號(如“示值重復性”)就不顯示符號。這個信息在編制原始記錄模板時,還不知道嗎?需要你去另加支鏈來判定是否需要顯示符號嗎?

增加位數,不用vb,不用手動設置公式是我個人增加難度,不在這里惡心我,好不好,交待多少回了。你要知道excel愛好者有這么一群人就愛干這個事。

我沒有惡心你。追求難度是你的事,我無權干預。提供參考方案是我的事,采不采納是你的自由,沒有人強迫你一定要怎么樣。你覺得你的方法好,你就用你的方法好了,有什么好糾結的呢。

你的這種思路和方案,我不是沒有研究嘗試過,編制的原始記錄模板也不下幾十上百份。最終的體驗感覺是不靈活,通用性差,還需要在表格中輸入并不需要在原始記錄中出現的“保留小數位數”,以及需要根據不同的顯示格式需求來修改公式。我這里只是談我個人的體驗感,不代表其他人的體驗感。

有質量的反例希望你多提點,重復提有什么意思。提了那么多,還不如別人提的一個浮點問題有質量。

我不清楚您所說的“質量反例”是啥意思。如果您認為我提出的問題都不是問題,那就只當我沒說好了。浮點問題我早就說了,用VBROUND()函數,取代工作表函數ROUND()就可以解決。還要怎么說呢?


作者: wangyiyong7703    時間: 2023-10-15 14:49
路云 發表于 2023-10-15 14:31
你的反例舉得很好啊,之前跟你講過,后面輸入數據處理即可,即對于待修約數有效數字比修約要求的少,包括浮 ...

這個貼子不歡迎你好不好,不是真心為廣大網友考慮,你另開一貼吧,讓別人評價你那無敵的修約公式。不要回復了,知趣點

作者: 路云    時間: 2023-10-15 15:51

放心好了,不會再回復你了。

我并沒有說我的自定義函數無敵,但愿你搭臺唱戲能吸引更多的量友,受益你那萬能的修約公式。


作者: wangyiyong7703    時間: 2023-10-16 13:07
歡迎善意的網友們提出好的意見和建議。多提出在制作模版中遇到的修約公式問題,一起探討解決方案。公式原創不易,希望得到網友推動進步
作者: 銀光戰火    時間: 2024-12-23 15:18
我的天爺啊,兩位大神中的大神,我記得wps里有個公式roundbanke,就是四舍六入五留雙啊

微信圖片_20241223151730.png (12.24 KB, 下載次數: 21)

微信圖片_20241223151730.png

作者: lo452355    時間: 2024-12-27 16:33
銀光戰火 發表于 2024-12-23 15:18
我的天爺啊,兩位大神中的大神,我記得wps里有個公式roundbanke,就是四舍六入五留雙啊 ...

這是尋根問底了,roundbanke的來源了
作者: woaijiliang666    時間: 2024-12-28 17:16
1111111不錯呀
作者: wangyiyong7703    時間: 2025-1-4 15:21
銀光戰火 發表于 2024-12-23 15:18
我的天爺啊,兩位大神中的大神,我記得wps里有個公式roundbanke,就是四舍六入五留雙啊 ...

roundbank的表現還是有漏洞的,沒有我的公式表現好。正是因為目前開發的好多自動修約的公式有問題,才想到改進。漏洞推動進步,歡迎提出反例。

56542c1dc46c1ce8dfee2f3ed175f68.png (8.49 KB, 下載次數: 23)

56542c1dc46c1ce8dfee2f3ed175f68.png

作者: wangyiyong7703    時間: 2025-1-4 15:25
標題: 一般不是超長的數值,這個足以應付了
本帖最后由 wangyiyong7703 于 2025-1-4 15:26 編輯
銀光戰火 發表于 2024-12-23 15:18
我的天爺啊,兩位大神中的大神,我記得wps里有個公式roundbanke,就是四舍六入五留雙啊 ...


IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)))))
作者: 靜心養氣    時間: 2025-6-20 08:46
提示: 作者被禁止或刪除 內容自動屏蔽
作者: 我要吃板面    時間: 2025-6-21 17:29
直接選擇保留小數位默認的應該是四舍五入吧  也沒人查這個
作者: 步云風    時間: 2025-6-23 21:39

感謝分享,下載看看
作者: wangyiyong7703    時間: 5 天前
靜心養氣 發表于 2025-6-20 08:46
公式太長沒有應用的意義。除非特定的超高細度精確計算,一般情況ROUNDBANK足夠用,當然ROUNDBANK存在位數為 ...

對于操作來說,沒有長短之分,復粘即可。正是之前的公式不滿意才想到要完善。其實可以用vb自定義函數的,這樣用起來,不必要知道編碼了。
作者: wangyiyong7703    時間: 5 天前
我要吃板面 發表于 2025-6-21 17:29
直接選擇保留小數位默認的應該是四舍五入吧  也沒人查這個

這個是基本概念,可大可小的問題




歡迎光臨 計量論壇 (http://www.bkd208.com/) Powered by Discuz! X3.4
主站蜘蛛池模板: 久久久国产乱子伦精品| 国产精品亲子乱子伦xxxx裸| 中文在线观看免费网站| 大乳女人做受视频免费观看| 三上悠亚在线观看免费| 国产精品区免费视频| 美女黄频免费网站| 国产免费爽爽视频在线观看| 狠狠精品干练久久久无码中文字幕 | 四虎永久免费地址ww1515| 青草视频入口在线观看| 亚洲精品自产拍在线观看动漫| 男人桶女人的肌肌30分| 久久久久久久亚洲AV无码| 国产黄网在线观看| 亚洲激情小视频| 人妖欧美一区二区三区四区| 日韩国产欧美成人一区二区影院| 乱中年女人伦av三区| 成人免费福利视频| 黑人巨茎大战欧美白妇免费| 国产91久久精品一区二区| 最近高清中文在线字幕在线观看| 丰满少妇人妻久久久久久| 亚洲无码在线播放| 女性生殖殖器特级表演| 18无码粉嫩小泬无套在线观看| 强奷乱码中文字幕| 冬月枫在线观看| 欧美一区二区三区久久综合 | 国产老熟女网站| 老司机天堂影院| 久久久国产成人精品| 国产男女猛视频在线观看| 欧美精品偷自拍另类在线观看| 久久精品美女视频| 2020天堂中文字幕一区在线观| 国产免费a级片| 欧美日韩精品久久免费| 久久久亚洲av波多野结衣| 在线看无码的免费网站|