发布网友 发布时间:2022-04-23 03:42
共3个回答
热心网友 时间:2023-10-13 16:19
1楼大哥的公式基本能解决问题了,就是一时手快打漏了一个工作表定义 sheet1!
SHEET2的A2中输入数组公式:
=INDEX(Sheet1!2:2,SMALL(IF(Sheet1!$A$3:$Z$3<>"",COLUMN($A:$Z),4^8),COLUMN(A1)))&""
以同时按CTRL+SHIFT+回车 三键结束
向右拉,往右复制公式
SHEET2的A3中输入:
=HLOOKUP(A2,SHEET1!2:3,2,0)
往右复制公式。
热心网友 时间:2023-10-13 16:19
就问题本身来说,可以不用公式解决。使用excel的筛选功能可以解决。
首先,将sheet1中的两行数据拷贝,然后别处的空白处进行行列置换的选择性粘贴。
然后,用筛选功能,将分值不为空的行表示出来。
然后,再选中这些不为空的科目和分值,拷贝。在sheet2中的A1处进行行列置换的选择性粘贴。
大功告成,你想要的分数为空的科目和空值就都滤掉了。
热心网友 时间:2023-10-13 16:20
SHEET2的A2中输入:
=INDEX(2:2,SMALL(IF(SHEET1!$A$3:$G$3<>"",COLUMN($A:$G),4^8),COLUMN(A1)))&""
往右复制公式即可。
SHEET2的A3中输入:
=HLOOKUP(A2,SHEET1!2:3,2,0)
往右复制公式。追问看不懂呀,请详细解释一下好吗?
追答IF(SHEET1!$A$3:$G$3"",COLUMN($A:$G),4^8)
A3:G3单元格不为空时,返回COLUMN($A:$G),即1、2、3、4、5、6、7,否则返回65536,
SMALL(IF(SHEET1!$A$3:$G$3"",COLUMN($A:$G),4^8),COLUMN(A1))
的作用是对返回值进行由小到大排序,如你给出的例子,排出来的结果是:1,4,6,65536,65536,65536
INDEX(2:2,SMALL(IF(SHEET1!$A$3:$G$3"",COLUMN($A:$G),4^8),COLUMN(A1)))
作用是返回由上面的这些列号对应是第二行中的值,即A1、A4、A6,由于第65536列对就的值为空,所以再往后填充时会返回空单元格。
这样就达到了你的要求。
另外,excel2003只有256列,上面公式中取到65536,可能会出现错误,你可以把公式中的4^8改为256就可以了。公式输入后按Ctrl+Shift+回车键结束,向右拉。
第二个公式不用解释了吧?