ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_140] 区域转换练习题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-30 20:37 | 显示全部楼层 |阅读模式
本帖最后由 wangg913 于 2013-1-6 17:25 编辑

=============================================================
区域转换:
数据源 A2:E11 可能为整数数字或空,数值在1-99之间。 区域大小不变,数据可变;
将数据源转换成 A15:E43(绿色区域)的形式
=============================================================
转换要求:
1,蓝色区一行内有两个或以上数时,转换两行或多行,一行一个数,位置与原位置对应;
2,蓝色区没有数时,不转换;
3,蓝色区的数值大于10时,按10折分,转换多行;
    如15,转换成10,5两行; 23则换成10,10,3三行;45则转换成10,10,10,10,5五行.
4,不用VBA、不要辅助列、不用自定义名称、2003版验证通过;
    A15输入公式右拉下拉、或 A15:E15输入公式下拉、或 A15:E43 多单元格数组公式皆可。
    公式需有容错处理。
5,题目截止 2012-12-30 12:00 。
=============================================================
建议评分规则:
暂不确定,待开贴时情况汇总。
2012-12-1 13-50-02.png

20121201区域转换.rar

6.02 KB, 下载次数: 142

点评

因有事,题目截止期限延期至 2013-1-6  发表于 2012-12-24 16:43
题目结束之前,请楼主不要修改帖子,以免“楼主可见功能”失效!!  发表于 2012-12-1 14:03
题目开始!  发表于 2012-12-1 14:00

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-2 21:13 | 显示全部楼层
本帖最后由 delete_007 于 2012-12-27 16:54 编辑
  1. =IF(SUM(A$14:E14)<SUM(A$2:E$11),IF(COLUMN()=5-MOD(MATCH(-1%-SUM(A$14:E14),SUBTOTAL(9,OFFSET(F$12,-ROW($1:$50)/5,,,-MOD(ROW($5:$54),5)-1))-SUBTOTAL(9,OFFSET(A$2,,,11-ROW($1:$50)/5,5)))-1,5),-TEXT(SUM(A$14:E14)+LOOKUP(-1%-SUM(A$14:E14),SUBTOTAL(9,OFFSET(F$12,-ROW($1:$50)/5,,,-MOD(ROW($5:$54),5)-1))-SUBTOTAL(9,OFFSET(A$2,,,11-ROW($1:$50)/5,5))),"[>-10];-1!0"),""),"")
复制代码
A15:E15数组公式。
先给个长的公式,有空再来简化。
区域转换(delete_007).zip (14.33 KB, 下载次数: 35)
简化一下,A15数组公式:
  1. =TEXT((1-COUNT(-T(OFFSET(A15,,-{1,2,3,4}))))*SUM(A$2:A$11*(SUM(--TEXT($A$14:$E14,"0;;;!0"))>=SUMIF(OFFSET($A$1,,,ROW($1:$10),5),"<>")),-TEXT(A$14:A14,"0;;;!0")),"[>9]1!0;[>];")
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-3 11:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 swyrlbq 于 2012-12-4 10:59 编辑

先上个出结果的,慢慢优化。

充分考虑极端情况,源数据区全为空,源数据区全为99,如果源数据区全为99,那么就要占据500行。公式为区域数组公式;
A15:E514=IF(MOD(SMALL(IF(MOD(SMALL((ROW(2:11)&COLUMN()/1%)+A2:E11,ROW(1:50)),100)-(COLUMN(A:J)-1)*10>0,ROW(1:50)*10+MOD(ROW(5:54),5)+1,999),ROW(1:500)),10)=COLUMN(),MOD(SMALL(ABS(TEXT(MOD(SMALL((ROW(2:11)&COLUMN()/1%)+A2:E11,ROW(1:50)),100)-(COLUMN(A:J)-1)*10,"[>10]1!0;[<=]"&7^9))+ROW(1:50)/1%%+COLUMN(A:J)/1%,ROW(1:500)),100),"")


改换一下思路,化整为零,动态引用各列,公式变为下拉式,不受行数量限制。285字符。
=IF(MOD(SMALL(IF(N(OFFSET($A$1,INT(ROW($5:$54)/5),MOD(ROW($5:$54),5)))+10>COLUMN($A:$J)*10,ROW($1:$50)*10+MOD(ROW($5:$54),5)+1,999),ROW(1:1)),10)=COLUMN(),MOD(SMALL(ROW($1:$10)/1%%+COLUMN($A:$J)/1%+ABS(TEXT(A$2:A$11-COLUMN($A:$J)*10+10,"[>10]1!0;[<=]"&9^9)),COUNT(A$14:A14)+1),100),"")

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-6 11:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lishengping666 于 2012-12-6 11:28 编辑

20121201区域转换.zip (21.74 KB, 下载次数: 22)

20121201区域转换_情景测试.zip (52.25 KB, 下载次数: 12)

公式如附件。
方法比较笨,不过测试了几组情景可以通过验证。
说明:未模拟所有的情景,不过此方法思路是可行的,关键是控制行列值构成的内存数组的设置。
主要思路如下:
1、将待转换的区域数据,数值大于10的按10拆分;
2、通过由行、列值放大一定倍数组成的内存数组,将上步拆发后的数据用large排序(达到的目标是:行数越靠前、列数越靠前的数据放大后越大)
3、用Index函数将上步转换后得到的一维数组按要求读到对应的单元格

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-24 22:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 E贝贝 于 2012-12-27 11:54 编辑
  1. =TEXT((0=COUNT(-T(OFFSET($A15,,COLUMN($A:A)-2))))*(SUM(OFFSET(A$2,,,MATCH(ROW()-15,MMULT(N(ROW($1:$10)>COLUMN($A:$J)),MMULT(INT(($A$2:$E$11-1)/10)+1,{1;1;1;1;1})))))-SUM(--IF(A$14:A14<"A",0&A$14:A14))),"[>10]!1!0;[>0]0;")
复制代码
  1. =TEXT((1-COUNT(-T(OFFSET(A15,,-{1,2,3,4}))))*SUM($A$2:A$12*(SUM(--TEXT($A$14:$E14,"0;;;!0"))>=SUBTOTAL(9,OFFSET($A$1,,,ROW($1:$11),5))),-TEXT($A$14:A14,"0;;;!0")),"[>9]1!0;[>]0;")
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-25 11:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不用VBA,可以,但“不要辅助列、不用自定义名称”却似乎太难了。
绞尽脑汁,给一个用了辅助列及自定义名称的。
期待高手

截图1.jpg

Book121.rar (8.81 KB, 下载次数: 18)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-27 11:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 w83365040371 于 2013-1-4 21:00 编辑
  1. =TEXT(MID(LARGE(TEXT((N(OFFSET($A$1,ROW($5:$54)/5,MOD(ROW($5:$54),5)))-COLUMN($A:$J)*10+10)%/100^MOD(ROW($5:$54),5),"[>];-100")+90-ROW($5:$54),ROW(A1))&0,2*COLUMN(B1),2),"[>9]1!0;[>];")
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-1-11 17:40 | 显示全部楼层
本帖最后由 delete_007 于 2013-1-13 10:24 编辑

受wangg913版主委托,由我来做这个题目的总结。
评分建议如下:
开140评分建议.jpg
(开-140)评分建议及总结.zip (924.43 KB, 下载次数: 83)


如有任何疑问或问题,请及时联系我或者wangg913版主。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-12 14:48 | 显示全部楼层
delete_007 发表于 2013-1-11 17:40
受wangg913版主委托,由我来做这个题目的总结。
评分建议如下:

辛苦了,这段时间忙,很久没空上来.

TA的精华主题

TA的得分主题

发表于 2013-1-13 00:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 13:26 , Processed in 0.053668 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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