ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 二维表转一维表之TEXT函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-10 21:50 | 显示全部楼层 |阅读模式
本帖最后由 edwin11891 于 2024-4-10 21:51 编辑

如题,在REDUCE等365循环函数之前,二维表转为一维表,使用TEXT({1,-1},。。)是比较常用的方法。

但是,在表中数据为纯字母的情况下,转换结果会出错,如图左,数字、中文字符则正确无误,如图中、右。
本论坛上对TEXT({1,-1},。。)方法曾经有此一论,但最终也没有说明其原因,因此有此一问,欲知其然。
其中公式是:
=TEXT({1,-1},TOCOL(A1:C1&";"&IF(A2:C6<>"",A2:C6,1/0),3,1))
微信图片_20240410214205.png

二维表转一维之Text.zip

10.96 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-4-10 21:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =TEXT({1,-1},""""&TOCOL(A1:C1&""";"""&IF(A2:C6<>"",A2:C6,1/0),3,1)&"""")
复制代码

TA的精华主题

TA的得分主题

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

这相当于强制转换,原因呢?

TA的精华主题

TA的得分主题

发表于 2024-4-10 22:05 | 显示全部楼层
edwin11891 发表于 2024-4-10 22:02
这相当于强制转换,原因呢?

只会套路,原因就不太清楚了

TA的精华主题

TA的得分主题

发表于 2024-4-10 22:53 | 显示全部楼层
本帖最后由 boyuanoffice 于 2024-4-10 22:55 编辑

找到一篇文章, 可以参考一下:
Excel Text函数用法的18个实例,含文本日期、条件范围格式与数组{0,1}/{1,-1}详解
http://www.liangshunet.com/ca/201901/236448754.htm

TA的精华主题

TA的得分主题

发表于 2024-4-10 22:56 | 显示全部楼层
edwin11891 发表于 2024-4-10 22:02
这相当于强制转换,原因呢?

=TEXT({1,-1},TOCOL(A1:C1&";"&IF(A2:C6<>"","!"&A2:C6,1/0),3,1))

这样试试。

部分字符在自定义格式代码中有特殊含义,比如 D 表示天,H 表示 时,S 表示秒,M表示月(分钟)等等。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 08:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 edwin11891 于 2024-4-11 08:39 编辑
祝洪忠- 发表于 2024-4-10 22:56
=TEXT({1,-1},TOCOL(A1:C1&";"&IF(A2:C6"","!"&A2:C6,1/0),3,1))

这样试试。

经检验,对一半。
1. 确实,对于Y、M、D、H、S、M等有特殊含义的字母,原公式出错,此外,G、H也会出错,祝版的公式正确。
2. 错一半的是,祝版的公式,对于DDD、GG、HH、SS、MM、YY、YYYY、DD等字符,依然出错。
现在原因大概是找到了,可公式要怎么避免呢?二楼的方法均正确,但作为通用公式,似乎不那么理想。

TA的精华主题

TA的得分主题

发表于 2024-4-11 09:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 咔咔乱坠 于 2024-4-11 09:08 编辑

就题,不考虑通项
=TEXT({1,-1},TOCOL(A1:C1&";\"&IF(A2:C6>0,A2:C6,\),3,1))
=REDUCE(E1,A1:C1,LAMBDA(x,y,VSTACK(x,IF({1,0},y,TOCOL(OFFSET(y,1,,9),3)))))

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 09:14 | 显示全部楼层
咔咔乱坠 发表于 2024-4-11 09:05
就题,不考虑通项
=TEXT({1,-1},TOCOL(A1:C1&";\"&IF(A2:C6>0,A2:C6,\),3,1))
=REDUCE(E1,A1:C1,LAMBDA(x ...

经检验,公式2没问题,只是需要套一个 DROP 函数去掉第一行即可。

公式1对于DDD、GG、HH、SS、MM、YY、YYYY、DD等字符还是出错;
此外出现新问题,对于A列的数字10,转换后变为11,祝版的公式同样为11。如图。
微信图片_20240411091008.png

TA的精华主题

TA的得分主题

发表于 2024-4-11 09:15 | 显示全部楼层
edwin11891 发表于 2024-4-11 09:14
经检验,公式2没问题,只是需要套一个 DROP 函数去掉第一行即可。

公式1对于DDD、GG、HH、SS、MM、YY ...

{1,-1}%
                     
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-26 09:27 , Processed in 0.043373 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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