|
發(fā)布時(shí)間: 2021-7-28 09:11
正文摘要:本人根據(jù)四舍六入奇進(jìn)偶不進(jìn)原則,利用vba做了個(gè)自定義的函數(shù),希望對(duì)大家有用。 函數(shù)語(yǔ)音是 Round2(被修約數(shù)據(jù),小數(shù)位數(shù)) 例如把3.45修約保留一位小數(shù),就是 =round(3.45,1) 此表格 ... |
| 感謝樓主分享。 |
| 感謝樓主分享 |
| 感謝樓主分享 |
| 謝謝樓主的分享,最近也在開(kāi)始自學(xué)用宏,正好用你的來(lái)學(xué)習(xí)下。 |
路云 發(fā)表于 2023-11-15 00:17 而且他只考慮輸入一個(gè)小數(shù)的情況,如果是運(yùn)算的結(jié)果,他無(wú)法避免浮點(diǎn)數(shù)字的影響。 |
sunrry 發(fā)表于 2023-9-22 14:57 您說(shuō)得沒(méi)錯(cuò)。那不是數(shù)值修約,而是文本處理。可以參閱我與他的討論:保留位數(shù)EXCEL實(shí)現(xiàn) |
sunrry 發(fā)表于 2021-7-29 11:48 正因?yàn)楹甏a容易被殺毒軟件干掉,才一直追求避開(kāi)宏代碼。如果用自定義函數(shù)和格式設(shè)置就方便多了。跟尺規(guī)作圖類(lèi)似,故意增加難度。 |
|
幫我分析一下,16-18有出現(xiàn)問(wèn)題了 |
微信圖片_20231007153504.png (23.87 KB, 下載次數(shù): 413)
sunrry 發(fā)表于 2023-10-7 13:09 我看了一下,不是我要解決浮點(diǎn)問(wèn)題,是你的輸入本來(lái)就有問(wèn)題,6.94999999999999,不是顯示的6.95 |
微信圖片_20231007180624.png (14.14 KB, 下載次數(shù): 794)
本帖最后由 wangyiyong7703 于 2023-10-7 15:29 編輯 sunrry 發(fā)表于 2023-10-7 13:20 我設(shè)計(jì)的是保留多少位小數(shù)的,1位以上,不含0位的。0位及以上可以再設(shè)計(jì)。主要是出現(xiàn)整數(shù)后的加零補(bǔ)位。你說(shuō)的浮點(diǎn)問(wèn)題具體指出來(lái),我的是沒(méi)有的 |
sunrry 發(fā)表于 2023-10-7 13:09 謝謝,,,,,, |
| =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) |
sunrry 發(fā)表于 2023-9-25 13:21 新的算法做的,麻煩抽空指正一下。 |
|
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 發(fā)表于 2023-9-22 17:11 對(duì)對(duì)對(duì),你說(shuō)的都對(duì)。 |
sunrry 發(fā)表于 2023-9-22 14:57 開(kāi)始設(shè)計(jì)有點(diǎn)麻煩而已,你直接復(fù)制使用有什么麻煩的。如果你用宏去做才真的麻煩。這個(gè)公式避開(kāi)了宏代碼,也相當(dāng)于宏代碼 |
wangyiyong7703 發(fā)表于 2023-9-18 18:34 你不覺(jué)得你的公式很麻煩么。。。。 |
|
A2輸入待修約數(shù)值,B2輸入保留小數(shù)點(diǎn)位數(shù),C2輸入公式。對(duì)9.9999多的情況不適用,還待改進(jìn) 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))))) |
| 難者不會(huì) 會(huì)者不難 |
| excel里面的修約函數(shù)也沒(méi)有2間隔、5間隔之類(lèi)的 |
連長(zhǎng) 發(fā)表于 2021-7-30 15:05 修約間隔為5和10的可以再搞個(gè)函數(shù),或者直接拿這個(gè)數(shù)除相應(yīng)的數(shù)以后修約再乘回來(lái) |
小黑屋|Archiver|計(jì)量論壇
( 閩ICP備06005787號(hào)-1—304所 )
電話(huà):0592-5613810 QQ:473647 微信:gfjlbbs
閩公網(wǎng)安備 35020602000072號(hào)
GMT+8, 2025-12-3 18:55
Powered by Discuz! X3.4
Copyright © 2001-2023, Tencent Cloud.