首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果在其中一列中找到查找值,则第一列的返回值

如果在其中一列中找到查找值,则第一列的返回值
EN

Stack Overflow用户
提问于 2018-08-29 18:34:11
回答 1查看 154关注 0票数 -1

我正在尝试创建简单的Excel文件,以帮助我的团队将机器程序中的电子元件名称与工作说明书中指定的名称进行比较。问题是,当机器返回包含组件列表的文件时,它看起来像这样(我希望这是第一个/主表):

FIRST SHEET

Variation_Name   Location   Component_No. 
0160_7988_0001   C353       0160_7988_0001
0160_7988_0001   C348       0160_7988_0001
0160_8881_0001   C368       0160_8881_0001
0160_8881_0001   C311       0160_8881_0001
0160_8881_0001   C439       0160_8881_0001
0160_8881_0001   C429       0160_8881_0001
0160_8881_0001   C441       0160_8881_0001
0160_8881_0001   C442       0160_8881_0001
0160_8881_0001   C428       0160_8881_0001

因此,如您所见,每个组件位置都列在单独的行中,并带有变体名称/组件编号。被重复。但工作说明中的组件列表如下所示(我希望这是我将从中提取数据的第二个工作表):

SECOND SHEET

Material             Locations
0160-7751-0001       C119
0160-7988-0001       C348, C353
0160-7988-0001       C347, C350, C351
0160-8881-0001       C311, C315, C316, C352, C355, C368
0160-8881-0001       C126, C313, C317, C346, C349, C354, C402, C407
0160-9135-0001       C213
0160-9158-0001       C114, C438, C439, C441, C442
0160-9210-0001       C343
0160-9213-0001       C101, C104, C109, C203, C207, C211, C215, C218, C219

每种材料都列出了多个位置,但不是在单独的行中,这对我来说,这个总是使用VLOOKUP处理格式化数据的家伙只是夸大其词……

我希望这个文件是这样工作的:

第一页第四行的

  1. (f.e.Instr_Compo)在第二张表中的某处查找"Location“行中的值,如果在第二张表中找到值,则返回"Material”值,稍后将返回值与"Component
  2. “中的值进行比较。(我显然知道怎么做)

我尝试过的东西:

由于“位置”列在同一单元格的第二个工作表中,并由空格和逗号分隔,我使用"Text to

  • “将每个值移动到单独的列

  • ,然后我尝试了使用HLOOKUP,VLOOKUP,INDEX和MATCH,更改布局等多种组合。除了frustration.

  • Tried在网上查找解决方案之外没有任何结果,但我不想使用visual basic,因为我不知道如何用它编写,也没有时间进行实验。

也许有一些非常简单的东西我还没有尝试过,但我没有想法了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 18:45:57

您可以使用VBA来实现这一点,如下所示:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
Dim wsData As Worksheet: Set wsData = Sheets("Sheet2")
'declare and set the worksheets you are working with, amend as required

LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B

For i = 4 To LastRow 'loop from row 4 to last
    LookUpValue = ws.Cells(i, "B").Value 'get the value you are searching for
    Set FoundVal = wsData.Range("B:B").Find(What:=LookUpValue, LookAt:=xlPart)
    'use the .Find method to look for the value in Column B on the second sheet
    If Not FoundVal Is Nothing Then 'if found
        ws.Cells(i, "D").Value = FoundVal.Offset(0, -1).Value
        'get the material number into Column D on your first sheet.
    End If
Next i
End Sub

更新:

您还可以将索引匹配与通配符结合使用,如下所示:

=INDEX(Sheet2!$A:$B,MATCH("*" & B5 & "*",Sheet2!$B:$B,0),1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52075334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档