如何匹配数据(如何根据多个条件匹配数据)
在我们的工作中,经常会遇到根据两个条件进行数据匹配(或查询)的情况。
▲表1:数据来源
例如,根据表1中数据源的日期和账户,将费用匹配到表2。我们可以把这种匹配称为二维到一维的匹配。
▲表2:目标表
反之亦然,也有可能根据一维表(下面的表3):
▲表3:数据来源
匹配费用数据列表4:
▲表4:目标表
我们也把这种匹配叫做一维到二维。
今天我就来介绍几种一维或二维表中数据匹配的方法。
01 2D到1D
方法一:indexmatch
首先使用MATCH函数在数据源日期列(B3:B9)和账户行(C2:P2)中查找数据行的日期和账户的位置,然后使用C3:P9中的INDEX函数查找指定行和列的对应值。
方法二:vlookup匹配
先用MATCH找到账户所在的列,再用VLOOKUP根据日期找到(注意第三个参数匹配的结果要加1,因为第一列是从B列开始算的)。
方法三:hlookup match
方法3和方法2类似,只是先用MATCH找到日期所在的行,然后用HLOOKUP根据账户匹配费用。
方法4:偏移匹配
OFFSET函数不仅可以返回范围,还可以返回单元格。因此,当OFFSET的最后两个参数为1时,可以返回特定位置的数据。
offset函数可以根据偏移量返回数据。它有5个参数:
参数1:开始位置
参数2:下移X行。
参数3:向右移动Y列
参数4和5:从新位置返回一个M行N列的区域。
02一维到二维
▲数据来源:B2:D51
反过来说,从一维到二维有哪些方法?
方法1: SUMPRODUCT
公式:sum product(($ b $ 3:$ b $ 51 = $ b $ 59)*($ c $ 3:c $ 51 = c $ 58)* $ d $ 3:d $ 51)
使用SUMPRODUCT进行条件判断,判断数据源日期和账户字段中的每个单元格是否为要查询的日期和账户,将符合条件的数据相乘并求和,最终得到费用。
因为数据无法查询(比如2010年员工的工资),SUMPRODUCT计算出来的结果是0,所以可以使用IF函数使0的结果显示为空。
方法2: vlookup if {1,0}
公式:{ VLOOKUP($B71