我之前没有见过这个问题,所以我希望这可能是一个新的东西,让我开心并帮助我解决一个棘手的问题。
我在列中有一个超过13K值的列表,这些值是位置。我们称之为A栏。
这些位置无法排序,并且是单个值和多个值的混合。例如1A-01R或1B-04L,4C-3D,094-01F,TOR-5-A,TOR-F。
在另一栏中,我放在电子表格中,这是按前缀细分的这些位置的列表,大约有80个不同的值。我们称之为B列。
在B列旁边,我有一个每个预修复位置的描述列表,例如:垃圾箱,衣架,地板等。让我们称之为C列。
我一直在讨论的问题是,如何在B列的预修复列表中搜索A列中的值,并在C中返回相应的值?
似乎Excel喜欢在完整值列表中找到一个不完整的值,但是如果你试图颠倒逻辑,就会出错。
我尝试过使用vlookup,索引和匹配无济于事。
一个小例子。 A = 13k +线,B = 80线,c = 80线
Column A Column B Column C Column D
AREA 5 1A- RACKS Formula? = check A against range in column B and return C
094-10G 1B- RACKS
1J-H0L 1C- RACKS
099-03A 1D- RACKS
098-03C 1E- RACKS
1L-F2R 1F- RACKS
1K-L5L 1G- RACKS
1C-D5R 1H- RACKS
AREA 5 1I- RACKS
1F-L4L 1J- RACKS
1F-L4L W5E- RACKS
W5-E7 W5- FLOOR
W5-E7 098- RACKS
W5-E7 099- BINS
W5E-01L AREA FLOOR
更新1
好的,基于我认为我们接近解决方案的建议。
我在D列中使用了以下似乎始终有效的公式,并返回B列中的值。
{= IFERROR(INDEX($ B $ 2:$ B $ 91 MATCH(1,COUNTIF(A2," "&安培; $ B $ 2:$ B $ 91安培;&#34 ; "),0)),"")}
这是一个数组公式,所以我使用ctrl + shift + enter。
现在我们需要做的就是让这个公式返回C列中的值,我想我们差不多了。
该问题还有一个部分可能是向远的步骤,即将多个值返回到公式单元格,在这些内容中,在A列的单元格中存储了多个位置。
更新2。
好的,我们有一个工作公式,它根据B列中的范围检查A列的内容,并在D列中返回,该值存储在C列中! =)
数组公式为:{= VLOOKUP(IFERROR(INDEX)($ B $ 2:$ B $ 91,MATCH(1,COUNTIF(A3,""& $ B $ 2:$ B $ 91& amp; ;""),0)),"&#34),B:C,2,FALSE)}
location pre-fix loc type
W5-E3
W5-E3,W5-E4
W5-B6
W5-A4
W50-01
W5N-02R, W5-N5R,W5X-02L
W5K-00R, W5-L0R
W50-01
W5-C6
W5-AA01L
W5-F5
W5-A4,W5-E5,W5-C3,W5-A3
W5-C5,W5-B6
W5-C1
W5H-04,W5H-03,W5-D4,W5G-00,W5-A1
W5-D7
W5V-00
这是一个很大的问题,有可能找到并返回每个实例在D列的单个单元格中的A列单元格中找到的位置?
答案 0 :(得分:1)
首先,您需要从列A
中的数据中提取前缀。假设分隔符是空格或破折号,您可以使用以下公式执行此操作:
=LEFT(A2,IF(ISERROR(FIND("-",A2)),FIND(" ",A2)-1,FIND("-",A2)))
然后,您可以使用VLOOKUP
在B
列中搜索此内容,并返回列C
中的值。您可以在VLOOKUP
中嵌入上述函数以创建单个公式:
=VLOOKUP(LEFT(A2,IF(ISERROR(FIND("-",A2)),FIND(" ",A2)-1,FIND("-",A2))),B$2:C$16,2,FALSE)
在上面的数据中,这会提供一些#N/A
值 - 这些是从A
列的列表中不存在从列B
中提取的前缀的位置。
Column A Column D
AREA 5 FLOOR
094-10G #N/A
1J-H0L RACKS
099-03A #N/A
098-03C #N/A
1L-F2R RACKS
1K-L5L RACKS
1C-D5R RACKS
AREA 5 FLOOR
1F-L4L RACKS
1F-L4L RACKS
W5-E7 #N/A
W5-E7 #N/A
W5-E7 #N/A
W5-E7 #N/A
更新1
好的,基于我认为我们接近解决方案的建议。
我在列D
中使用了以下似乎始终有效的公式并返回列B
中的值。
{=IFERROR(INDEX($B$2:$B$91,MATCH(1,COUNTIF(A2,"*"&$B$2:$B$91&"*"),0)),"")}
这是一个数组公式,所以我使用ctrl
+ shift
+ enter
。
现在我们需要做的就是让这个公式返回列C
中的值,我想我们几乎就在那里。
该问题还有一个部分可能是向远的步骤,即将多个值返回到公式单元格,在这些内容中,列A
中的单元格中存储了多个位置
更新2。
好的,我们有一个工作公式,它根据B列中的范围检查A列的内容,并在D列中返回,该值存储在C列中! =)
数组公式为:{= VLOOKUP(IFERROR(INDEX($ B $ 2:$ B $ 91,MATCH(1,COUNTIF(A3,“”&amp; $ B $ 2:$ B $ 91&amp;“< / EM> “),0)),”“),B:C,2,FALSE)}
location pre-fix loc type
W5-E3
W5-E3,W5-E4
W5-B6
W5-A4
W50-01
W5N-02R, W5-N5R,W5X-02L
W5K-00R, W5-L0R
W50-01
W5-C6
W5-AA01L
W5-F5
W5-A4,W5-E5,W5-C3,W5-A3
W5-C5,W5-B6
W5-C1
W5H-04,W5H-03,W5-D4,W5G-00,W5-A1
W5-D7
W5V-00
这是一个很大的问题,有可能找到并返回每个实例在D列的单个单元格中的A列单元格中找到的位置?
答案 1 :(得分:0)
只需隔离 A 列的前缀部分,然后在 VLOOKUP()中使用它。在 D1 中输入:
=VLOOKUP(IF(LEFT(A1,4)="AREA","AREA",MID(A1,1,FIND("-",A1))),B:C,2,FALSE)
并复制下来:
答案 2 :(得分:0)
好的,我们有一个工作公式,它根据B列中的范围检查A列的内容,并在D列中返回,该值存储在C列中! =)
数组公式为:
{=VLOOKUP(IFERROR(INDEX($B$2:$B$91,MATCH(1,COUNTIF(A3,""&$B$2:$B$91&""),0)),""),B:C,2,FALSE)}