計量論壇

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

四舍六入函數模板

查看數: 40665 | 評論數: 32 | 收藏 5
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-7-28 09:11

正文摘要:

本人根據四舍六入奇進偶不進原則,利用vba做了個自定義的函數,希望對大家有用。 函數語音是    Round2(被修約數據,小數位數) 例如把3.45修約保留一位小數,就是    =round(3.45,1) 此表格 ...

回復

yuanxu2021 發表于 2024-11-30 14:53:18
感謝樓主分享。
Mia 發表于 2023-12-3 20:23:17
感謝樓主分享
songliangyu 發表于 2023-11-26 11:00:14
感謝樓主分享
luocx 發表于 2023-11-23 17:03:54
謝謝樓主的分享,最近也在開始自學用宏,正好用你的來學習下。
sunrry 發表于 2023-11-23 13:44:46
路云 發表于 2023-11-15 00:17
您說得沒錯。那不是數值修約,而是文本處理??梢詤㈤單遗c他的討論:保留位數EXCEL實現 ...

而且他只考慮輸入一個小數的情況,如果是運算的結果,他無法避免浮點數字的影響。
路云 發表于 2023-11-15 00:17:23
sunrry 發表于 2023-9-22 14:57
你不覺得你的公式很麻煩么。。。。

您說得沒錯。那不是數值修約,而是文本處理??梢詤㈤單遗c他的討論:保留位數EXCEL實現

wangyiyong7703 發表于 2023-10-7 18:12:32
sunrry 發表于 2021-7-29 11:48
取消禁止就可以用了。

正因為宏代碼容易被殺毒軟件干掉,才一直追求避開宏代碼。如果用自定義函數和格式設置就方便多了。跟尺規作圖類似,故意增加難度。
wangyiyong7703 發表于 2023-10-7 18:08:39
wangyiyong7703 發表于 2023-10-7 15:05
謝謝,,,,,,

幫我分析一下,16-18有出現問題了

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

微信圖片_20231007153504.png
wangyiyong7703 發表于 2023-10-7 18:07:26
sunrry 發表于 2023-10-7 13:09
1、小數點有效位數為0直接報錯
2、多次計算后的浮點小數無法避免,后面一堆錯誤。(可以看圖,B2=A2+0.1, ...

我看了一下,不是我要解決浮點問題,是你的輸入本來就有問題,6.94999999999999,不是顯示的6.95

微信圖片_20231007180624.png (14.14 KB, 下載次數: 710)

微信圖片_20231007180624.png
wangyiyong7703 發表于 2023-10-7 15:17:07
本帖最后由 wangyiyong7703 于 2023-10-7 15:29 編輯
sunrry 發表于 2023-10-7 13:20
=IF(ABS(ABS(A2/1*10^B2-TRUNC(A2/1,B2)*10^B2)-0.5)


我設計的是保留多少位小數的,1位以上,不含0位的。0位及以上可以再設計。主要是出現整數后的加零補位。你說的浮點問題具體指出來,我的是沒有的
wangyiyong7703 發表于 2023-10-7 15:05:41
sunrry 發表于 2023-10-7 13:09
1、小數點有效位數為0直接報錯
2、多次計算后的浮點小數無法避免,后面一堆錯誤。(可以看圖,B2=A2+0.1, ...

謝謝,,,,,,
sunrry 發表于 2023-10-7 13:20:27
=IF(ABS(ABS(A2/1*10^B2-TRUNC(A2/1,B2)*10^B2)-0.5)<10^-7,CEILING(ABS(TRUNC(A2/1,B2)),2*10^-B2)*SIGN(A2/1)*1,ROUND(A2/1,B2)*1)
wangyiyong7703 發表于 2023-10-2 13:06:19
sunrry 發表于 2023-9-25 13:21
對對對,你說的都對。

新的算法做的,麻煩抽空指正一下。
wangyiyong7703 發表于 2023-10-2 13:05:28

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)))))
sunrry 發表于 2023-9-25 13:21:15
wangyiyong7703 發表于 2023-9-22 17:11
開始設計有點麻煩而已,你直接復制使用有什么麻煩的。如果你用宏去做才真的麻煩。這個公式避開了宏代碼, ...

對對對,你說的都對。
wangyiyong7703 發表于 2023-9-22 17:11:10
sunrry 發表于 2023-9-22 14:57
你不覺得你的公式很麻煩么。。。。

開始設計有點麻煩而已,你直接復制使用有什么麻煩的。如果你用宏去做才真的麻煩。這個公式避開了宏代碼,也相當于宏代碼
sunrry 發表于 2023-9-22 14:57:15
wangyiyong7703 發表于 2023-9-18 18:34
A2輸入待修約數值,B2輸入保留小數點位數,C2輸入公式。對9.9999多的情況不適用,還待改進

IF(B2=0,IF(OR ...

你不覺得你的公式很麻煩么。。。。
wangyiyong7703 發表于 2023-9-18 18:34:09

A2輸入待修約數值,B2輸入保留小數點位數,C2輸入公式。對9.9999多的情況不適用,還待改進

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)))))
wangyiyong7703 發表于 2023-9-18 18:32:41
特殊情況適應了么,3.001,8.9999。還是用了編程,要全部用內建函數。編程可以把很多漏洞補上
sunrry 發表于 2021-8-11 11:45:05
難者不會  會者不難
連長 發表于 2021-8-11 08:47:36
可以按照規則,結合excel的數據處理,自己寫個function,費點勁,但不難。

修約間隔.png (89.79 KB, 下載次數: 846)

修約間隔.png
sunrry 發表于 2021-8-10 12:13:12
excel里面的修約函數也沒有2間隔、5間隔之類的
sunrry 發表于 2021-8-10 12:12:51
連長 發表于 2021-7-30 15:05
修約間隔為10,你這函數就扒瞎了

修約間隔為5和10的可以再搞個函數,或者直接拿這個數除相應的數以后修約再乘回來

小黑屋|Archiver|計量論壇 ( 閩ICP備06005787號-1—304所 )
電話:0592-5613810 QQ:473647 微信:gfjlbbs閩公網安備 35020602000072號

GMT+8, 2025-7-20 18:21

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产又黄又硬又粗| 亚洲一二区视频| 皇夫被迫含玉势女尊高h| 无码人妻精品一区二| 国产精品观看在线亚洲人成网 | 亲密爱人在线观看韩剧完整版免费 | 精品人妻少妇一区二区三区不卡| 欧美性生活网址| 久久99精品久久久久久动态图| 一级特黄aaa大片大全| 老鸭窝在线免费视频| 无码不卡中文字幕av| 国产一区二区三区不卡在线观看| 久久久久国色av免费观看| 蜜桃视频在线观看免费网址入口 | 杨幂下面好紧好湿好爽| 很黄很污的视频在线观看| 国产日韩欧美精品一区| 久久精品视频一区二区三区| A级毛片内射免费视频| 美女扒开内裤无遮挡网站| 日韩欧美黄色大片| 国产免费私拍一区二区三区| 亚洲另类激情专区小说图片| aaaa级少妇高潮大片在线观看| 老师那里好大又粗h男男| 成人a视频片在线观看免费| 免费黄色网址在线观看| 丰满少妇人妻无码| 精品人妻一区二区三区四区| 天堂а√在线官网| 亚洲日韩久久综合中文字幕| ankhazone度盘| 欧美老妇bbbwwbbww| 国产综合久久久久久鬼色| 公和我做好爽添厨房在线观看| 丰满大白屁股ass| 精品亚洲一区二区三区在线播放| 在线观看日本www| 亚洲av无码国产综合专区| 宅男噜噜噜66|