首页 文章

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

提问于
浏览
-1

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

例如:在工作表1中,单元格A1具有文本“John Smith” .

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

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

提前致谢! :)

3 回答

  • 0

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

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

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

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

    首先,我们想要定义我们正在使用的行 . 我们还可以使用 foreach 循环遍历每一行: foreach Row row in workBook . 但是假设你是编程的新手,那就是's a little complicated, since I'm .

    所以,我们'll just use the one row for now. Let'称之为 workingRow
    Row workingRow = workBook.row(1)

    看到 workbook.row 末尾的那个号码?这告诉我们要看第一排 .

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

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

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

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

  • -1

    完全匹配: =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))

    比赛

    • 在D列中找到A1("John Smith")的值,返回其位置

    • 0表示查看每个值并允许使用通配符的完全匹配,而不是更快的排序搜索(排序搜索需要排序数据并在找不到您想要的结果时返回相邻结果)

    • "*"是匹配任何(偶数为0)长度的任何文本的通配符

    指数

    • 返回MATCH返回的位置A列中的值
  • 0
    • 使用 MATCH() 函数找出Sheet 2 "John smith"上D列中的哪一行 . 确保您的D列按字母顺序排序 .

    • 使用 OFFSET() 与工作表2上的单元格A1作为参考(或者要从中显示数据的列的顶部DATA(非 Headers )单元格)和上面的MATCH()函数的结果作为"rows"参数

    如果您正在努力实现预期的结果,请发布您拥有的内容,我们可以进一步提供帮助 .

相关问题