ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 一个简单公式,不想借助辅助实现,把它搞复杂一点。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-6 14:46 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 xiangbaoan 于 2018-10-7 12:58 编辑

一个公式:
=--MID("123456765432",MOD((ROW()-1),12)+1,1)
功能是,从某列第一个单元格下拉,依次结果如下:
{1;2;3;4;5;6;7;6;5;4;3;2;1;2;3……}
现不想用mid  "123456765432" 之类,直接通过计算得到结果,能否实现?
公式长短、繁简不限,常规的、数组(区域的也行,如1—n行,n>12)的都行。
结帖:
本帖得到完美答案,楼层从后到前,附答案:

micch 老师答案 (16楼)
=7-ABS(MOD(ROW(),-12)+5)

cll1998 老师答案 (12楼)
=IF(MOD(INT((ROW()-1)/6),2),6+2-MOD(ROW()-1,6)-1,MOD(ROW()-1,6)+1)

准提部林 老师答案 (11楼)
=7-ABS(MOD(ROW(A1)-1,7*2-2)-7+1)

以上公式均能完美达到要求(通过数的运算得到结果),且本人能在实际运用中移植、变通。
感谢以上老师们的付出!学习了老师们的独到思维,一并感谢其它参与大师(laowuwyx老师、约定的童话老师)!

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-6 15:13 | 显示全部楼层
这恐怕得vba生成了吧?没辅助列函数放哪啊?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 15:23 | 显示全部楼层
约定的童话 发表于 2018-10-6 15:13
这恐怕得vba生成了吧?没辅助列函数放哪啊?

Sub test()
Dim s$, n&
s = "123456765432"
For n = 1 To 31
    Debug.Print Val(Mid(s, (n - 1) Mod 12 + 1, 1))
Next
End Sub
'这是我的VBA,不想用到"123456765432", 或 array(1,2,3,4,5,6,7,6,5,4,3,2),你看能实现吗

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-6 15:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个公式已经算简单的了,不如你输入12行,然后A13=A1,下拉

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 15:31 | 显示全部楼层
micch 发表于 2018-10-6 15:26
这个公式已经算简单的了,不如你输入12行,然后A13=A1,下拉

大仙,我是想 复杂,想通过 数的运算 得到结果,意思是 通过复杂的数的运算来实现,不想就这么简单。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-6 15:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 micch 于 2018-10-6 15:49 编辑
  1. =IF(ROW()>12,INDIRECT("r[-12]",),INDIRECT("r[-1]",)+-1^(ROW()>7))
复制代码
如果是第一行A1输入;;
换一个a2输入
  1. =IF(ROW()=2,1,A1+-1^((MOD(ROW(A11),12)+1)>6))
复制代码



点评

首次看到这种用法,学习了!  发表于 2018-10-6 15:42

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-6 15:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xiangbaoan 发表于 2018-10-6 15:31
大仙,我是想 复杂,想通过 数的运算 得到结果,意思是 通过复杂的数的运算来实现,不想就这么简单。

想法异于常人。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 15:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2018-10-6 15:31
如果是第一行A1输入;;换一个

公式学习了,很是让人受教

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 15:53 | 显示全部楼层
本帖最后由 xiangbaoan 于 2018-10-6 16:23 编辑

我还是想算出来,如
到了row() = 8 时,计算出6 来;
……
到了row() = 13 时,计算出1 来;
……
如此循环,不知能否实现?
今日鲜花紧张,稍后补上各位……
才4朵,光伟正的论坛啊,请快点赐我鲜花吧……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 16:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

呵呵,大仙见笑,闲来无事,想学一下大神们的思路。

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-10-23 22:30 , Processed in 0.042084 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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