登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oh! I see you!

Hi! ppmm~~

 
 
 

日志

 
 

Excel中按数字大小对列名进行特殊排序  

2009-09-11 01:35:38|  分类: Excel |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文链接:http://oicu.cc.blog.163.com/blog/static/123039471200981113538460/

问题描述及解答请看附图,示例用的是Google Spreadsheet在线表格。

问题:

发信人: boyeut (boyeut), 信区: OfficeSoft
标  题: excel中有没有办法实现这种排序?
发信站: 水木社区 (Thu Sep  3 14:28:17 2009), 站内

根据指标A、B、C、D、E列的数据对A、B、C、D、E进行排序。
因为有很多行数据,而且其中的数据需要变动,因此希望排序结果自动更新。

----------------

解答:
by oicu#lsxk.org

Google Spreadsheet中,多条件查找目前我只发现Offset法可用,而LOOKUP、INDIRECT、
INDEX、VLOOKUP这四种方法都只能在Excel中使用。因此这里给出Excel和Spreadsheet都通
用的函数方法(Google在线表格没有vba,所以就不用vba法了)。

G2 单元格函数:
=MID(I2&J2&K2&L2&M2,2,999)
向下填充

辅助列 I2 单元格数组公式函数(Excel中还可以用其他的查找方法):
=IF(SMALL($A2:$E2*1,COLUMN(A$1))>0,"、"&(OFFSET($A$1,0,SUM(IF(($A2:$E2*10+COLUMN($A2:$E2)=SMALL($A2:$E2*10+COLUMN($A2:$E2),COLUMN(A$1))),COLUMN($A$1:$E$1),0))-1,1,1)),"")
向右向下填充

对于 I2 用的数组公式,可以用别的方法,比如下面这个用LOOKUP的(仅Excel中可用):
=IF(SMALL($A2:$E2*1,COLUMN(A$1))>0,"、"&(LOOKUP(2,1/($A2:$E2*10+COLUMN($A2:$E2)=SMALL($A2:$E2*10+COLUMN($A2:$E2),COLUMN(A$1))),$A$1:$E$1)),"")


不管是Excel还是Spreadsheet,数组公式都要按Ctrl+Shift+Enter确定。

 

附图(点击查看大图):

Excel中按数字大小对列名进行特殊排序 - oicu - Oh! I see you!

 

特殊情况:

当A列到E列的数据没有重复值,而且没有空值时,可以用:

I2=INDEX($A$1:$E$1,MATCH(SMALL($A2:$E2,COLUMN(A:A)),$A2:$E2,0))

 


方法二:

先看图,G2里用公式取得排名,向右像下填充。

G2=IFERROR(RANK(A2,$A2:$E2,1)+COUNTIF($A2:A2,A2)-1,"")

Excel中按数字大小对列名进行特殊排序 - oicu - Oh! I see you!

 

M2根据数值排名取得列名,向右向下填充,方法很多,只列其中两种。

M2=IFERROR(INDEX($1:$1,MATCH(COLUMN(A:A),$G2:$K2,0)),"")

或者使用

M2=IFERROR(INDIRECT(ADDRESS(ROW($1:$1),MATCH(COLUMN(A:A),$G2:$K2,0))),"")

Excel中按数字大小对列名进行特殊排序 - oicu - Oh! I see you!
  评论这张
 
阅读(4328)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018