ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享]”多行多列”转换为“多行单列”的解题思路

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-4-15 16:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个东西 其实还是很有用的

TA的精华主题

TA的得分主题

发表于 2008-4-15 21:09 | 显示全部楼层
真不错,samsoncsr辛苦了!

TA的精华主题

TA的得分主题

发表于 2008-4-15 21:18 | 显示全部楼层
楼主真厉害,把一个复杂问题,讲得这么简单化了!

TA的精华主题

TA的得分主题

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

大家对靶标法感兴趣,那我再拓展一下靶标法的用途:如何把多行多列的数据进行列调整

  rRxVo4Lz.rar (5.7 KB, 下载次数: 113)

 

 

 

 

 




[分享]”多行多列”转换为“多行单列”的解题思路

[分享]”多行多列”转换为“多行单列”的解题思路

[分享]”多行多列”转换为“多行单列”的解题思路

[分享]”多行多列”转换为“多行单列”的解题思路

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-16 02:33 | 显示全部楼层

今天心情不错,放假一周,那就叨磕些偏离靶标法的函数话题,谈谈INDEX函数的妙用。

INDEX函数的精华是数组应用:

数组形式

INDEX(array,row_num,column_num)

在我以前的一个帖子《函数INDEX数组应用精解》有个“月产能工时图表自动排序”的应用,大家感兴趣可以看看。

INDEX函数功能是很强大的,是一个神奇的魔法师,能进行纵向变横向横向变纵向多行多列转换成多行单列多行单列转换成多行多列多行单列选择性的截取数据

  5IoMk7mT.rar (11.07 KB, 下载次数: 99)


[分享]”多行多列”转换为“多行单列”的解题思路

[分享]”多行多列”转换为“多行单列”的解题思路

TA的精华主题

TA的得分主题

发表于 2008-4-16 09:16 | 显示全部楼层

H1=INDIRECT(TEXT(SMALL(IF(B$1:E$6<>"",ROW($1:$6)*1000+COLUMN(B:E)),ROW()),"r#c000"),)

排错(假设IV999单元格是一空白单元格):

H1=INDIRECT(TEXT(SMALL(IF(B$1:E$6<>"",ROW($1:$6)*1000+COLUMN(B:E),999256),ROW()),"r#c000"),)&""

或:

H1=IF(ROW()>COUNTA(B$1:E$6),"",INDIRECT(TEXT(SMALL(IF(B$1:E$6<>"",ROW($1:$6)*1000+COLUMN(B:E)),ROW()),"r#c000"),))

公式均为数组公式,按Ctrl+Shift+Enter结束。

TA的精华主题

TA的得分主题

发表于 2008-4-16 11:21 | 显示全部楼层
QUOTE:
以下是引用samsoncsr在2008-4-11 3:20:16的发言:

昨遇一贴,要求如下:

1:H列>>用数组公式把B1:E6的多行多列字符转换成多行单列。
2:G列>>用数组公式把H列字符所对应的A列数值进行单列排列。
3:不用辅助行。

这个公式有点繁烦,还可以大大的精简。

看了看共有176个字符,而且没有防错的功能。

加上防错100个字符以内就可完成同样功能。

=INDIRECT(TEXT(SMALL(IF(B$1:E$6<>"",ROW($1:$6)*1000+COLUMN(B:E),65536001),ROW()),"R0C000"),)&""

其实还可以延伸一下,求出该区域的不重复值,以前我在2007专区发过这个公式----求多行多列的不重复值

[此贴子已经被作者于2008-4-16 11:40:30编辑过]

TA的精华主题

TA的得分主题

发表于 2008-4-16 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:

H1=INDIRECT(TEXT(SMALL(IF(B$1:E$6<>"",ROW($1:$6)*1000+COLUMN(B:E)),ROW()),"r#c000"),)

不愧是超级斑竹……每个函数都能用的这么奇妙……

TA的精华主题

TA的得分主题

发表于 2008-4-16 12:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用samsoncsr在2008-4-16 2:33:43的发言:

今天心情不错,放假一周,那就叨磕些偏离靶标法的函数话题,谈谈INDEX函数的妙用。

INDEX函数的精华是数组应用:

数组形式

INDEX(array,row_num,column_num)

在我以前的一个帖子《函数INDEX数组应用精解》有个“月产能工时图表自动排序”的应用,大家感兴趣可以看看。

INDEX函数功能是很强大的,是一个神奇的魔法师,能进行纵向变横向横向变纵向多行多列转换成多行单列多行单列转换成多行多列多行单列选择性的截取数据

 

呵呵,关键是数组的思想,用思想来引领思路就能产生一个又一个技巧.数组的灵魂就是一一对应,数组的一一对应包括值和数组元素的"位置".把握一点,无论是因变量还是最后结果,其一一对应都是对应本初变量的数组属性的.这里INDEX第二个参数的数组化用的就很灵性.

就这个思想也很好结实SUMIF中对第三个参数的特殊用法,呵呵.我想楼主,通过这个帖子的综合运用已经对数组有了比较高级的认识.呵呵,收藏学习了,呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-16 13:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

呵呵!

山版的=TEXT(M1:M17,"r#c000")这个函数用法是鲤鱼跳龙门呀,直接跳过附件中的3、4两个步骤(分离行号、分离列号)了,真是很经典。

andysky版主的=TEXT(M1:M17,"R0C000")这个函数也是鲤鱼跳龙门。

TEXT的第二参数功能很神奇的咧!

真是提炼精华之笔!

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

本版积分规则

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

GMT+8, 2024-12-5 10:16 , Processed in 0.048233 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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