在另一个单元格的一部分中查找文本并返回不同的值

时间:2014-08-04 13:03:27

标签: excel-formula

我需要在一个单元格中获取所有文本,并在另一列单元格中找到它(甚至部分找到它)。如果匹配,则需要返回与找到的单元格在同一行中的另一个单元格的值。

例如:在工作表1中,单元格A1的文本为“John Smith”。

现在在表2中:列DI需要找到列中具有“John Smith”的任何单元格(可能只有一个“John Smith”,因此无需担心返回多个值)以及任何单元格列D Sheet2包含“John Smith”需要返回同一行的第2页Columna A中的值。

我不知道这听起来有多复杂,但是这个过程需要2到3个小时才能手动完成,只是想知道是否有办法通过公式更快地完成。

提前致谢! :)

3 个答案:

答案 0 :(得分:0)

您可能希望使用MS Excel的脚本功能,或者如果这是常规任务,甚至可以编写完全独立的程序。我将在C#中给你一个伪代码示例来向你展示这个概念。

现在,我们需要为包含John名称的单元格创建占位符:
string nameCell (get; set;)

还有一个要返回的数据:
string returnValue (get; set;)

现在,为了让事情顺利进行。

首先,我们要定义我们正在使用的行。我们还可以使用foreach循环遍历每一行:foreach Row row in workBook。但这有点复杂,因为我假设你是编程的新手。

所以,我们现在只使用一行。我们称之为workingRow
Row workingRow = workBook.row(1)

workbook.row结尾处查看该号码?这告诉我们要看第一行。

现在,查看单元格并查看它包含的内容:

if (workingRow.nameCell = "John Smith")
    { 
       returnValue = workingRow.valueCell.ToString()
    }
else
    {
       returnValue = ""
    }

这段小代码将告诉应用程序以字符串格式返回值,而如果找不到“John Smith”则返回空字符串。

无论是在Excel中使用脚本还是构建完全独立的程序,这都可能相当容易,也许需要一个小时的工作才能转换为可用的材料。祝你好运!

答案 1 :(得分:0)

完全匹配:=INDEX(Sheet2!$A:$A,MATCH(A1,Sheet2!$D:$D,0))

部分匹配:=INDEX(Sheet2!$A:$A,MATCH("*"&A1&"*",Sheet2!$D:$D,0))

开始 - 匹配:=INDEX(Sheet2!$A:$A,MATCH(A1&"*",Sheet2!$D:$D,0))

MATCH

  • 在D列中找到A1的值(" John Smith"),返回其位置
  • 0表示查看每个值并允许使用通配符的完全匹配,而不是更快的排序搜索(排序搜索需要排序数据,并且当它找不到您想要的那个时返回相邻结果)
  • " *"是一个匹配任何(甚至0)长度
  • 的任何文本的通配符

INDEX

  • 返回MATCH
  • 返回的位置A列中的值

答案 2 :(得分:-1)

  1. 使用 MATCH() 函数找出工作表2中的D列中的哪一行" John smith"出现。确保您的D列按字母顺序排列。
  2. OFFSET() 与工作表2上的单元格A1作为参考(或要显示数据的列的顶部DATA(非标题)单元格)和结果上面的MATCH()函数为"行"参数
  3. 如果您正努力达到预期的效果,请发布您拥有的内容,我们可以提供进一步的帮助。