Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4214|回复: 19

[已解决]公式求解和特殊情况

[复制链接]
发表于 2014-2-10 08:43 | 显示全部楼层 |阅读模式
本帖最后由 暗夜男 于 2014-2-10 14:17 编辑

用函数实现分列功能

描述如下
http://www.excelpx.com/thread-318616-1-1.html

公式如下

=TRIM(MID(SUBSTITUTE($A$1,",",REPT(" ",99)),99*ROW()-98,99))

现在有3个问题

1.这个函数到底是什么意思? 几个函数的意思帮助里说的很清楚,但是合在一起我就不认识了

2.公式REPT(" ",99)代表什么? 我在公式求值里看到的是换行符,这是固定用法不? 把99换成了999,公式没有出错

3.公式99*ROW()-98是什么意思? 表面意思是99×公式所在行号-98
最佳答案
2014-2-10 11:45
暗夜男 发表于 2014-2-10 11:29
试过,ok了
请问如果字长不到100是不是就可以不用数组公式了?

想在B1输入公式,
公式改为如下;
=IF(ROW()=1,LEFT(A$1,SEARCH(",",A$1)-1),TRIM(MID(SUBSTITUTE(A$1,",",REPT(" ",100)),100*ROW()-99+SUM(LEN($B$1:INDIRECT("B"&ROW()-1))),100)))

**数组公式不是为了计算字符长度
而是计算已提出字符数量   --  SUM(LEN($B$1:INDIRECT("B"&ROW()-1)))
如果不加入这个累计计算
肯定还要出现
到一定位置出错的现象。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-2-10 09:34 | 显示全部楼层
1、函数几个意思这个问题太奇葩。
2、REPT(" ",99)这个函数是把一个空格重复99次,不是换行~
3、公式在第一行:99*1-98=1  放在公式里就是MID(所需要操作的文本,1,99),在第二行1变成了100,就是说从第100(开始的1+99个空格)个开始,取99个。
总体这样理解:公式先用SUBSTITUTE把A1单元格的逗号(,)换成了99个空格,然后开始上边第三步,这个时候在第一行就取出了1和99个空格,最后用TRIM去掉空格  就剩下1.
PS:之所以是99个空格,是取一个相对比较大的数来减少误差,数越大,得的出来的结果就越可能正确。明白公式原理之后你可以理解一下第二第三就明白了~!
回复

使用道具 举报

发表于 2014-2-10 09:41 | 显示全部楼层
本帖最后由 baksy 于 2014-2-10 10:01 编辑

借鉴as0810114公式,
B2输入以下公式,下拉。
只要单数字长度不超过100字符(比如:1,22222,3.4,111,4,5,6中的22222为5字符),
再长的数字组合都可以适用(A2单元格字符数超过100个就能看出来),
如果单数字长度超过100字符,
稍微调整公式即可。

B2=TRIM(MID(SUBSTITUTE(A$1,",",REPT(" ",100)),100*(ROW()-1)-99+SUM(LEN($B$1:B1)),100))
三键回车(同时按下Ctrl、Shift和Enter三个键)

说明:公式 REPT(" ",100) 为重复空格100次,即;A2单元格字符中的每个“,”用100个空格替换。
回复

使用道具 举报

 楼主| 发表于 2014-2-10 09:45 | 显示全部楼层
蓝粆 发表于 2014-2-10 09:34
1、函数几个意思这个问题太奇葩。
2、REPT(" ",99)这个函数是把一个空格重复99次,不是换行~
3、公式在第 ...

但是只用了100个数,44和45之间就出现了一个空白,这又是为什么呢?
  1. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-2-10 10:05 | 显示全部楼层
baksy 发表于 2014-2-10 09:41
借鉴as0810114公式,
B2输入以下公式,下拉。
只要单数字长度不超过100字符(比如:1,22222,3.4,111,4,5,6 ...

数组公式有点复杂,如果单数字不超过100位是什么样的?
回复

使用道具 举报

发表于 2014-2-10 10:08 | 显示全部楼层
暗夜男 发表于 2014-2-10 10:05
数组公式有点复杂,如果单数字不超过100位是什么样的?

上面所说
单字符长度是指两个逗号之间的数字长度。
回复

使用道具 举报

 楼主| 发表于 2014-2-10 10:19 | 显示全部楼层
baksy 发表于 2014-2-10 10:08
上面所说
单字符长度是指两个逗号之间的数字长度。

是啊,就是不超过100位字长
回复

使用道具 举报

发表于 2014-2-10 10:29 | 显示全部楼层
暗夜男 发表于 2014-2-10 10:19
是啊,就是不超过100位字长

你先试试3楼的公式,
看看44/45有没有问题再说吧~
回复

使用道具 举报

 楼主| 发表于 2014-2-10 10:30 | 显示全部楼层
本帖最后由 暗夜男 于 2014-2-10 10:35 编辑
baksy 发表于 2014-2-10 10:29
你先试试3楼的公式,
看看44/45有没有问题再说吧~

没问题,但是我希望在b1输入公式,且不想用数组

= = 发现问题了,比如这28个2

2014-02-10_103514.jpg
回复

使用道具 举报

发表于 2014-2-10 10:34 | 显示全部楼层
蓝粆 发表于 2014-2-10 09:34
1、函数几个意思这个问题太奇葩。
2、REPT(" ",99)这个函数是把一个空格重复99次,不是换行~
3、公式在第 ...

所言甚是
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 17:55 , Processed in 0.312699 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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