ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10006|回复: 23

[Excel 函数与公式] [开_121][已结}你可以将数字按S形排列吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-9-9 14:22 | 显示全部楼层 |阅读模式
前几天看到dragonthree兄出的一道题目,是将数字按S形排列,花了些时间想了下,把这道题目改了一下,也是S形排列,不过我的这个S要大些,权称大S吧,dragonthree兄不要生气啊,要求也一样:
1.公式中不要用IF函数。
2.只允许在A1写一个公式,右拉,下拉完成!
3.不要用VBA,用函数和公式完成!
4.字符数越少越好!
5.加一条,公式适用任意行、任意列(可能是7行8列,也可能是9行13列等,拉到哪儿,算到哪儿)
闲话少说,请看附件

将数字按S形排列.rar

1.7 KB, 下载次数: 144

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-9-9 17:15 | 显示全部楼层
=CHOOSE(MOD(COLUMN()-1,4)+1,MOD(ROW()-1,21)+1+(COLUMN()-1)*11,COLUMN()*11*(MOD(ROW(),21)=0),(COLUMN()+1)*11-MOD(ROW()-1,21)-1,COLUMN()*11*(MOD(ROW(),21)=1))

不用if,可以choose不?

将数字按S形排列——moon2778.rar

3.46 KB, 下载次数: 58

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-9 17:29 | 显示全部楼层
原帖由 moon2778 于 2009-9-9 17:15 发表
=CHOOSE(MOD(COLUMN()-1,4)+1,MOD(ROW()-1,21)+1+(COLUMN()-1)*11,COLUMN()*11*(MOD(ROW(),21)=0),(COLUMN()+1)*11-MOD(ROW()-1,21)-1,COLUMN()*11*(MOD(ROW(),21)=1))

不用if,可以choose不?


可以,只是不满足第5条,这个公式只能下拉到21行,如果拉到20行或者22行或者其它行,就不行了。

TA的精华主题

TA的得分主题

发表于 2009-9-9 17:34 | 显示全部楼层
改咯,不晓得是不是这样?
用了迭代2

[ 本帖最后由 moon2778 于 2009-9-9 21:20 编辑 ]

将数字按S形排列——moon2778《改》.rar

2.96 KB, 下载次数: 54

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-9-9 22:27 | 显示全部楼层
=CHOOSE(MOD(COLUMN(),4)+1,(ROW()=1)*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(ROW(),"[=1]""RC[-1]"";""R[-1]C"""),0)+1,(A2="")*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(INDIRECT("rc[-1]",0),"""rc[-1]"";;""r[1]c"""),0)+1)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-9-10 09:40 | 显示全部楼层
原帖由 kkitt 于 2009-9-9 22:27 发表
=CHOOSE(MOD(COLUMN(),4)+1,(ROW()=1)*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(ROW(),"[=1]""RC[-1]"";""R[-1]C"""),0)+1,(A2="")*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(INDIRECT("rc[-1]",0),"""rc[-1]"";;""r[ ...


kkitt老师出手,确实不同反响。。。。这个公式不用迭代了,我第一次看见用rc单元格地址来写函数。

TA的精华主题

TA的得分主题

发表于 2009-9-10 12:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 kkitt 于 2009-9-9 22:27 发表
=CHOOSE(MOD(COLUMN(),4)+1,(ROW()=1)*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(ROW(),"[=1]""RC[-1]"";""R[-1]C"""),0)+1,(A2="")*(INDIRECT("rc[-1]",0)+1),INDIRECT(TEXT(INDIRECT("rc[-1]",0),"""rc[-1]"";;""r[ ...



学习学习了,,,,

TA的精华主题

TA的得分主题

发表于 2009-9-10 13:02 | 显示全部楼层
嗯,亮点应该是使用CHOOSE分条件实现,这样可以把问题分解开来,逐个解决。我也上一个平民化得公式,呵呵:
数字1位于B2单元格
分步1:
=CHOOSE(MOD(COLUMN(),4)+1,,,(2*8+2)*(COLUMN()-2)/4+ROW()-1,)
分步2:
=CHOOSE(MOD(COLUMN(),4)+1,,,(2*8+2)*(COLUMN()-2)/4+ROW()-1,(ROW()=9)*(A2+1))
分步3:
=CHOOSE(MOD(COLUMN(),4)+1,(ROW()=9)*(A2+1)+(B3+1)*(ROW()<>9),,(2*8+2)*(COLUMN()-2)/4+ROW()-1,(ROW()=9)*(A2+1))
最后结果:
=CHOOSE(MOD(COLUMN(),4)+1,(ROW()=9)*(A2+1)+(B3+1)*(ROW()<>9),(ROW()=2)*(A2+1),(2*8+2)*(COLUMN()-2)/4+ROW()-1,(ROW()=9)*(A2+1))

[ 本帖最后由 胡剑0227 于 2009-9-10 13:05 编辑 ]
分步1.jpg
分步2.jpg
分步3.jpg
分步4.jpg

将数字按S形排列——227.rar

8.73 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2009-9-10 13:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主的解不合题意呀

TA的精华主题

TA的得分主题

发表于 2009-9-10 14:18 | 显示全部楼层
哦,呵呵,是呀,我没仔细看楼主的要求,呵呵。
不过稍微改一下就可以了,呵呵。
=CHOOSE(MOD(COLUMN(),4)+1,IF(LEN(A2),A2+1,B3+1),IF(A1="",A2+1,""),IF(LEN(A2),A2+1,B1+1),IF(A3="",A2+1,""))

依然以B1为起点,这样可以活了。不知道是不是这个意思。

嗨,看来我又没有看要求,汗ing。。。

把if用 相等 相乘 替代吧。
不过,不是很明白那么多要求呀,呵呵。A1...算了,失败了,呵呵

[ 本帖最后由 胡剑0227 于 2009-9-10 14:48 编辑 ]

将数字按S形排列——227.rar

10.32 KB, 下载次数: 26

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 06:51 , Processed in 0.056077 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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