从3列查找值并从第4列返回相应的单元格值

时间:2017-09-24 05:39:19

标签: excel excel-vba vba

我基本上正在制作一张excel表格,它通过从VIN(车辆识别号码)接受3个字符(第4,第8和第10个字符)为汽车服务站的服务顾问提供备件号并返回相应的表中的部件号。 表格如下所示

     A              B            C             D            E          F

Char#4InVIN   Char#8InVIN   Char#10InVIN    OIL-FILTER  AIR-FILT    AC-FILT
    C              B              E         2630035504  281131R100  97133AQ000
    C              B              F         263203CAA0  281131R100  971332E210
    C              D              G         2630002503  281131R200  97133AQ000
    C              A              H         2630002503  281131R100  971332E210
    D              C              E         2630035504  281133X000  971332H001
    D              E              G         2630035504  28113F2000  97133F2000

用户将以下列格式提供输入,

            4th Char    8th Char    10th Char
Input          C            B           E

输出应为,

        Oil-Filter  Air-Filter  Ac-Filter
Output  2630035504  281131R100  97133AQ000

通过为每个输出单元格编写以下公式,我可以通过获取第8个和第10个字符来实现输出(考虑单元格E17输入第8个字符,而F17输入第10个字符)< /强>

{=INDEX(D2:D10,MATCH($E$17,IF($C$2:$C$10=$F$17,$B$2:$B$10),0))}
  

但我坚持应用查找用户输入的所有3个字符   显示相应的值。有什么建议 ??   我尝试了以下代码,但无法生成预期的输出

{=INDEX(D2:D10,MATCH($E$17,IF(AND($C$2:$C$10=$F$17,$A$2:$A$10=$D$17),$B$2:$B$10),0))}

2 个答案:

答案 0 :(得分:1)

您需要连接输入并让它们查找连接表。我在下图所示的单元格“B9”中输入了这个公式。你将需要调整你的范围然后数组输入 ctrl + shift + 输入

=INDEX(D$2:D$4,MATCH($B$8&$C$8&$D$8,$A$2:$A$4&$B$2:$B$4&$C$2:$C$4,0))

enter image description here

答案 1 :(得分:0)

Cell K2输入

=INDEX(D$2:D$7,MATCH(1,($A$2:$A$7=$H2)*($B$2:$B$7=$I2)*($C$2:$C$7=$J2),0))

根据需要向下拖动/复制上面的公式并跨越(向右)。这是一个数组公式,所以按 Ctrl + Shift + Enter 提交它。见图片以供参考。

enter image description here