作者JieJuen (David)
看板Office
标题Re: [问题] Excel的相对应问题
时间Wed Mar 19 16:53:04 2008
您好:
首先,搜寻板上文章"集中"
● 1 11/07 JieJuen □ [算表] EXCEL:依条件集中资料
2 111/24 JieJuen □ [算表] EXCEL:1.产生ABCD... 2.资料集中公式
3 212/09 JieJuen □ [算表] EXCEL:筛选-使用资料集中公式
4 2/15 JieJuen □ [算表] Excel:依条件集中资料-直转横
或是参考
│ 文章代码(AID):
#17JjZjF4 (Office) [ptt.cc] Re: [算表] Excel较少被提及的? │
● 3973 11/29 JieJuen R: [算表] Excel较少被提及的函数与小技巧
集中资料,常使用SMALL(IF())式
不过每次虽然核心相同
总有小部分不同
您的想法可以套用此式
※ 引述《matryoshka (俄罗斯娃娃)》之铭言:
: 您所使用的软体为:Excel
: 版本:2003
: 问题:
: 请教板上各位高手
: 假设我现在有一个总表如下
: Name DataA DataB DataC
: Mary A DE_277412 自由歌
: John B DE_277492 以为你都知道
: Peter C DE_277503 我的未来不是梦
: Kitty A DE_277683 一天到晚游泳的鱼
: Kitty B DE_277811 烈火青春
: Peter C DE_277812 带我去月球
: John A DE_278633 永远不回头
: Mary B DE_278637 爱从不轻易的来
: Peter C DE_278639 天天想你
: Kitty A DE_523963 和天一样高
: John B DE_631451 大海
: Peter C DE_631518 如果你冷
: John A DE_621852 没有烟抽的日子
: Mary B DE_624398 湖心草深长
: Mary C DE_626238 我是一棵秋天的树
: Peter A DE_627932 我呼吸我感觉我存在
: 总表里其中AB栏可能会有重覆,唯一确定百分百不会重覆的是C栏
: 然後我要另外弄一个分表叫Mary(或Peter,Kitty等)
: 把这个总表里筛选出来的Mary资料丢到[Mary]里去
: 分表里的格式跟栏位跟总表一样
: 我本来尝试在分表里以姓名栏做索引,用vlookup去抓
: 可是发现这样做的话,不管怎麽拉都只会显示第一笔而已
: 後来在网上问到说可以利用枢纽分析表栏位编排产生分类好的资料表
: 但是用一用又发现问题....这样产生出来的储存格只能丢255个字元
: 而我原始资料里有一拖拉库是超过255的....
: (别人系统产生出来的报表就是超过255的,我们要拿这些东西再加上我们自己的栏位)
: 原本我们是用在总表筛选条件,把相同人名列出来後再copy到各对应分表去
: 只是说後来看看这样觉得蛮有点没效率的
: 因为我们总共有近十个分表、总表光栏位就2x个、列数也是有数百,这样copy贴上很难拉
: 所以想请教有没有其它比较好的方式....
: 我自己是想到,分表那边如果以C栏做索引值带资料是很好带
依据您的想法 需要得到合条件的C栏
{=OFFSET($C$1,SMALL(IF($A$2:$A$20="Mary",ROW($1:$19)),ROW(1:1)),)}
如此可依序得到"Mary"的各个索引值
: 可是问题在於我要如何先把C栏做分类让它可以知道这是属於谁的资料..?
: 本来有尝试过开一个新的工作表专门丢分类或公式函数索引一类的(变成工作表互带公式)
: 试一试发现问题还是会卡在以人名做分类这里...
: 想请各位帮忙解答一下,看有没有除了巨集以外更好的方式呢
: (因为我不会写巨集...orz)
: 感恩!!~
这样算解决了,没问题的话以下可省略不看^^"
如果工作表名称已经打好
"Mary"处引用工作表名称
MID(CELL("filename",C2),FIND("]",CELL("filename"))+1,31)
如此可选取多个工作表一起编辑
或用 编辑/填满/跨表填满(填满工作表) 完成
另可定义动态范围 自动调整资料表长度
写公式时也比较清楚 例如
Name =OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A$2:$A$65536))
若资料有空列 有别的写法
│ 文章代码(AID):
#17IL5XKA (Office) [ptt.cc] [算表] EXCEL:求一栏最後一个位 │
● 3926 11/25 JieJuen □ [算表] EXCEL:求一栏最後一个位置
现在最重要的问题是
超过255字元的是哪一栏?
如果是code栏
就不能把code放到 match vlookup里面
如果是Name栏
就不能把长长的名字放到 match vlookup中
也就是说写到上面的式子後(上面的式子应该没问题)
其他资料要藉由该code栏来vlookup 或match等
code太长时会使vlookup错误
就无法如您所说"以C栏做索引值带资料"
不过没关系,新增一栏
{=SMALL(IF($A$2:$A$20="Mary",ROW($1:$19)),ROW(1:1))}
再以此数字当索引就不会有问题
而且此法其他栏引用之公式很短 节省空间与计算
比如索引值在分表的a2
=OFFSET(总表!A$1,$A2,)
拉满整个分表即可
档案
http://kuso.cc/3j@M
-------------------------------
看到您的推文
原来新增一栏是个不便之处
SMALL(IF())式只是一数字
并非一定要新增一栏(只是帮助了解)
稍加更改 请参考
http://kuso.cc/3k2v
总共就一个式子 在各分表的A2
=OFFSET(总表!A$1,no,)
定义
Name
=OFFSET(总表!$A$2,,,COUNTA(总表!$A$2:$A$65536))
no
=SMALL(IF(Name=MID(CELL("filename",INDIRECT("A1")),
FIND("]",CELL("filename"))+1,31),ROW(Name)-1),ROW()-ROW(Name)+1)
应用时 适当调整Name之定义 注意分表工作表之名称
no应该不用修改
若起始处不是总表的A2 改Name後 no应会调整
可用 "移动或复制工作表"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.48.204
※ 编辑: JieJuen 来自: 218.164.48.204 (03/19 23:18)