
这两天做工作中数据分析,遇到一个一直一直没有解决的问题,那就是如何提取二维表中的数据,并转化成为一维表,原来只能手动一个个粘贴过去。
我研究了所有的Excel函数都没有找到直接转化的,唯一有一个相似功能的SUMIFS()函数,它只能转化两个条件都为单元行(或是单元列),并不能解决二维转换。
终于,通过不断的试错和探索,找到一个解决方法,利用函数组合。

=INDIRECT(ADDRESS(MATCH($B13,$B$3:$B$8,0)+ROW($B$2),MATCH($C13,$C$2:$H$2,0)+2,4))
接下来分享下这个公式如何实现。
使用函数:
1、MATCH()
2、ADDRESS()
3、INDIRECT()

使用方法:
根据两个条件进行匹配定位,找到对于的单元格位置后,提取单元格内的数据。
第一要在列“B3:B8”找到“短途运输即B13”
第二要在行“C2:H2”找到“台数即C13”

分别解析各个函数在案例中应用
1、ADDRESS(MATCH($B13,$B$3:$B$8,0)+ROW($B$2)
首先,使用MATCH()函数,在“B3:B8”中匹配到“短途运输即B13”的行,1,然后加上“B3”前一行,则定位在第1+2=3 行;
2、MATCH($C13,$C$2:$H$2,0)+2
其次,找到定位列,在“C2:H2”找到“台数即C13”的列是1,然后然后加上“C3”前一行,则定位在第1+2=3 列;
3、ADDRESS(MATCH($B13,$B$3:$B$8,0)+ROW($B$2),MATCH($C13,$C$2:$H$2,0)+2,4)转化为ADDRESS(3,3,4),即定位到C3单元格,提取的就是这个单元格数据;
4、INDIRECT(C3)=38392
整个过程就完成了,设定好绝对值和相对值,直接自动下拉或是“Ctrl+D”,就可实现自动填充。