excelperfect 引言:本文的练习整理自chandoo.org。多一些练习,想想自己怎么解决问题,看看别人又是怎样解决的,能够快速提高Excel公式编写水平。 本次的练习是:如下图1所示,2行6列的数据,实际上是一个二维数组: {1,2,3,”a”,”b”,”c”;4,5,6,”d”,”e”,”f”} 图1:2行6列数据,将该数据区域命名为“a” 现在,要将这个二维数组动态转换为一维数组,然后其他公式可以直接使用该数组,而无需在某个区域内输入。因此,你的公式应该返回的结果是: {1,2,3,”a”,”b”,”c”,4,5,6,”d”,”e”,”f”} 不应该使用任何辅助单元格、中间公式或者VBA。 写下你的公式。 解决方案 下面列出一系列公式,有兴趣的朋友可以逐个研究。 公式1: =OFFSET(a,TRUNC((COLUMN(OFFSET(A1,,,,COLUMNS(a)*ROWS(a)))-1)/COLUMNS(a)),MOD(COLUMN(OFFSET(A1,,,,COLUMNS(a)*ROWS(a)))-1,COLUMNS(a)),ROWS(a),COLUMNS(a)) 公式2: =OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))/(COLUMNS(a)+1)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))-1,COLUMNS(a)),1,1) 公式3: =IF(T(OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))/(COLUMNS(a)+1)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))-1,COLUMNS(a)),1,1))='',N(OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))/(COLUMNS(a)+1)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))-1,COLUMNS(a)),1,1)),T(OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))/(COLUMNS(a)+1)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(a/0)))-1,COLUMNS(a)),1,1))) 公式4: =OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(-a)))/(COLUMNS(a)+1)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(-a)))-1,COLUMNS(a)),1,1) 公式5: =OFFSET(a,INT(COLUMN(OFFSET(A1,,,,COUNTA(-a)))/COLUMNS(a)-1/COLUMNS(a)),MOD(COLUMN(OFFSET(A1,,,,COUNTA(-a)))-1,COLUMNS(a)),1,1) 公式6: =OFFSET(a,MOD(ROW(OFFSET(A1,,,COUNTA(-a)))-1,ROWS(a)),INT(ROW(OFFSET(A1,,,COUNTA(a)))/ROWS(a)-1/ROWS(a)),1,1) 公式7: =INDEX(A1:F2,N(IF(1,1+(INT((ROW(INDEX(A:A,1):INDEX(A:A,ROWS(A1:F2)*COLUMNS(A1:F2)))-1)/COLUMNS(A1:F2))))),N(IF(1,1+(MOD((ROW(INDEX(A:A,1):INDEX(A:A,ROWS(A1:F2)*COLUMNS(A1:F2)))-1),COLUMNS(A1:F2)))))) 可以通过F9键或者公式求值功能,加深对上述公式的理解。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。
|
|
来自: hercules028 > 《excel》