在C4输入一个法兰尺寸,根据它的规格(下划线部分),在N列的方形法兰区域查找匹配它的规格(DN80),如果能查到,则在G4列填充包含此规格的方形法兰的全称。 如果没有匹配的,则显示“-”。 如果能用函数解决,更好。
这个问题,就如标题所描述的那样,是一个用部分去匹配整体的问题,用公式函数也能解决,这也是问主所希望的,这个我们另外说明,这里我们考虑结合VBA来解决: 基本思路: 我们要定义一个自定义函数ptMatch(str,rng),参数str为一个字符串,rng为一个区域,返回值为一个字符串。如果str包含于rng中的一个单元格,则返回这个单元格的值,如果所有单元格都不包含str,则返回“-”。Function ptMatch(strPart As String, rng As Range) As String Dim cell As Range ptMatch = "-" For Each cell In rng.Cells If InStr(cell.Value, strPart) > 0 Then ptMatch = cell.Value Exit For End If Next End Function 2、我们循环rng的每个单元格,用Instr函数来判断字符串是否包含在单元格中,如果包含,则把单元格的值赋值给函数,退出循环。3、如果没有如第1条所述,预先给函数赋值“-”,那么,在循环结束后,我们要判断一下函数是否有值,是否为空,如果为空,则给它赋值“-”,稍显啰嗦。=ptMatch(MID(C4, SEARCH("DN", C4), LEN(C4) - SEARCH("DN", C4) + 1),N4:N7) 1、函数的第一个参数,是一个字符串,在这里是C4单元格中后半部分字符,我们需要用一个工作表函数来提取规格字符串。2、函数第二个参数,是一个单元格区域,这里我们选择“N4:N7”。 3、查找字符串的位置,除了用SEARCH函数外,也可以用FIND函数。1、这里函数的第一个参数,我们直接设定为一个任意字符串,没有根据C4单元格的值进一步处理,这样一来,我们可以保持这个自定义函数ptMatch的通用性。2、在实际工作中,我们这个商品名称表,可能包含很多字段,比如规格,我们可以根据这个规格直接查找匹配。3、这个案例直接用工作表函数也能解决,我们在第二条推文中说明。
|