ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 静听溪流

[讨论] 【函数小题】进制转换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-1 18:37 | 显示全部楼层
本帖最后由 cinlo 于 2021-5-1 18:41 编辑

原来可以用分数啊。。。我想了老半天没想出来怎么用TEXT把一个数和原数相加,只好把MOD()用两次了。。。

TA的精华主题

TA的得分主题

发表于 2021-5-6 19:08 | 显示全部楼层
虽然对进制转换的原理不太明白,不过好像做出来了:
=SUBSTITUTE(SUBSTITUTE(TRIM(TEXTJOIN("",1,MID(" 123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",INT(MOD(A2/62^(6-ROW($1:$6)),62))+1,1))&"卓")," ",0),"卓",)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-5-6 19:10 | 显示全部楼层
cinlo 发表于 2021-5-1 18:23
SUBSTITUTE(TRIM(SUBSTITUTE(CONCAT(CHAR(TEXT(MOD(INT(A2/62^{5,4,3,2,1,0}),62),"[

老师太厉害了

TA的精华主题

TA的得分主题

发表于 2021-5-6 20:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
@刘卓 发表于 2021-5-6 19:08
虽然对进制转换的原理不太明白,不过好像做出来了:
=SUBSTITUTE(SUBSTITUTE(TRIM(TEXTJOIN("",1,MI ...

还有问题,后面有多个0的时候会出错

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 23:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
@刘卓 发表于 2021-5-6 20:42
还有问题,后面有多个0的时候会出错

这是算法的问题
可以采用前面各位老师的方法
修改之后:=RIGHT(CONCAT(MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",INT(MOD(A2/62^(6-ROW($1:$6)),62))+1,1)),LOG(A2,62)+1)

因为题目数值的限制 转化之后最长也就6位    所以大家的做法是统一转化成6位,不足部分以0补位,此时有点类似base(25,2,6)的操作     
然后因为题目要求需要去除多余的0   这时通过运算计算转化后该62进制的长度   通过right函数进行截取就可以了

TA的精华主题

TA的得分主题

发表于 2021-5-12 10:38 | 显示全部楼层
静听溪流 发表于 2021-5-11 23:13
这是算法的问题
可以采用前面各位老师的方法
修改之后:=RIGHT(CONCAT(MID("0123456789ABCDEFGHIJKLMN ...

感谢静听溪流老师的帮助,对我有很大的启发,原来可以用log判断62进制的长度,方便了不少。另外我看静老师在处理0时的公式log(0+1/(0&1),62)也很厉害,不过我还没有理解。还是log(a2,62)+1比较好理解。

ps:要是每次都有老师给解释就更好了

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-12 11:24 | 显示全部楼层
@刘卓 发表于 2021-5-12 10:38
感谢静听溪流老师的帮助,对我有很大的启发,原来可以用log判断62进制的长度,方便了不少。另外我看静老 ...

之前初看你的公式也没在意到那个bug
昨天刚好看到你回帖说有问题   就研究了一下bug产生的原因,发现原来是算法逻辑的问题
就在你公式的基础上修改了下   并简单解释了下

我那样处理是为了处理0的情况   因为log(0,62)返回错误,通过a1+1/(a1&1)的方式可以将0变成1,1变成2,而>=3的数字在原基础加上一个小于1的小数   这样可以解决0报错的情况   以及像61这种处于临界情况的数字加上小于1的数字后结果不变  而加上1或者大于1的数字后会结果多1   如:log(61+1/611,62)<1  ,log(61+1,62)=1  因为我们需要的是<1,而不是=1或者>1   因此我采用的是log(a1+a1/(a1&1),62)这种方式

TA的精华主题

TA的得分主题

发表于 2021-5-12 11:42 | 显示全部楼层
静听溪流 发表于 2021-5-12 11:24
之前初看你的公式也没在意到那个bug
昨天刚好看到你回帖说有问题   就研究了一下bug产生的原因,发现原 ...

感谢解释,再慢慢消化下,
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-5 13:48 , Processed in 0.039176 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表