在指定列查找字符串,返回所有含该字符串所在行另一列的字符串

1个回答
展开全部
摘要 要在指定列中查找字符串,并返回所有包含该字符串的行中另一列的字符串,您可以使用电子表格软件(如Excel)或编程语言(如Python)来实现。下面提供了使用这两种方法的示例:使用电子表格软件(如Excel):打开电子表格,并确保数据以表格形式呈现,每列都有标题。找到要查找的字符串所在的列和要返回的另一列。在一个空白单元格中输入查找的字符串,比如A1。在另一个单元格中使用公式进行查找和筛选。假设要在列A中查找字符串,并返回与之对应的列B中的字符串,可以在B1单元格中输入以下公式:=IF(ISNUMBER(SEARCH($A$1, A1)), B1, "")。然后将该公式应用到B列的所有单元格中。这样,B列中包含了所有包含查找字符串的行中另一列的字符串。使用编程语言(如Python):使用适当的库(如Pandas)加载数据集,并将其存储为数据帧(DataFrame)。使用条件筛选功能来选择包含特定字符串的行。假设要在"Column1"列中查找字符串,并返回与之对应的"Column2"列的字符串,可以使用以下代码:pythonCopy codeimport pandas as pddf = pd.read_csv('data.csv') # 替换为您的数据文件路径search_string = '要查找的字符串'result = df[df['Column1'].str.contains(search_string)]['Column2'].tolist()print(result)运行代码后,result列表中将包含所有包含查找字符串的行中另一列的字符串。请根据您使用的具体工具和数据格式选择适合您的方法,并进行相应的调整。
咨询记录 · 回答于2023-05-19
在指定列查找字符串,返回所有含该字符串所在行另一列的字符串
要在指定列中查找字符串,并返回所有包含该字符串的行中另一列的字符串,您可以使用电子表格软件(如Excel)或编程语言(如Python)来实现。下面提供了使用这两种方法的示例:使用电子表格软件(如Excel):打开电子表格,并确保数据以表格形式呈现,每列都有标题。找到要查找的字符串所在的列和要返回的另一列。在一个空白单元格中输入查找的字符串,比如A1。在另一个单元格中使用公式进行查找和筛选。假设要在列A中查找字符串,并返回与之对应的列B中的字符串,可以在B1单元格中输入以下公式:=IF(ISNUMBER(SEARCH($A$1, A1)), B1, "")。然后将该公式应用到B列的所有单元格中。这样,B列中包含了所有包含查找字符串的行中另一列的字符串。使用编程语言(如Python):使用适当的库(如Pandas)加载数据集,并将其存储为数据帧(DataFrame)。使用条件筛选功能来选择包含特定字符串的行。假设要在"Column1"列中查找字符串,并返回与之对应的"Column2"列的字符串,可以使用以下代码:pythonCopy codeimport pandas as pddf = pd.read_csv('data.csv') # 替换为您的数据文件路径search_string = '要查找的字符串'result = df[df['Column1'].str.contains(search_string)]['Column2'].tolist()print(result)运行代码后,result列表中将包含所有包含查找字符串的行中另一列的字符串。请根据您使用的具体工具和数据格式选择适合您的方法,并进行相应的调整。
亲亲,这边没办法查看图片,麻烦您以文字的形式说一下您的问题
现在有两个表单,这个项目表单,这个设计师表单,项目表单的A列是项目名称,B列是项目包含的项目成员(多个人名在一个单元格中)。设计师表单的A列是设计师,B列是这个设计师参加的所有项目名称,多个项目名称放一个单元格。问题:设计师表单的B列函数怎么写?
要在设计师表单的B列中编写一个函数,以获取每个设计师参加的所有项目名称,可以使用Excel的文本处理函数来实现。以下是一种可能的方法,假设设计师表单的数据从第2行开始,项目表单的数据从第2行开始。在设计师表单的B2单元格中输入以下公式:swiftCopy code=TEXTJOIN(", ", TRUE, IF(项目表单!$B$2:$B$100=A2, 项目表单!$A$2:$A$100, ""))请根据实际情况调整单元格范围,假设项目表单中的数据范围是B2:B100和A2:A100。然后,按下 Ctrl + Shift + Enter,将该公式作为数组公式输入,确保在输入完公式后按下这个组合键,而不是只按下回车键。这将告诉Excel该公式是一个数组公式。接下来,将该公式拖拽或复制到设计师表单的B列的其他单元格中,以填充整个列。公式将自动计算每个设计师参加的所有项目名称,并以逗号分隔的形式显示在B列中。请注意,根据实际的数据范围和表单名称,您可能需要调整公式中的单元格引用。另外,如果项目表单的数据超过100行,您可以相应地调整公式中的行数上限。希望这可以帮助到您。如有其他问题,请随时提问。
不行呢,项目表单B列,一个单元格里有多个人名,不是一个单元格一个人名
如果项目表单的B列中的一个单元格包含多个人名,而您需要获取每个设计师参加的所有项目名称,可以尝试使用Excel的文本处理函数和字符串操作函数来处理数据。假设设计师表单的数据从第2行开始,项目表单的数据从第2行开始,设计师表单的A列是设计师名称,B列是设计师参加的所有项目名称,多个项目名称在一个单元格中。在设计师表单的B2单元格中输入以下公式:swiftCopy code=TEXTJOIN(", ", TRUE, IF(ISNUMBER(SEARCH(A2, 项目表单!$B$2:$B$100)), 项目表单!$A$2:$A$100, ""))然后按下Ctrl + Shift + Enter,将该公式作为数组公式输入,确保在输入完公式后按下这个组合键,而不是只按下回车键。这将告诉Excel该公式是一个数组公式。接下来,将该公式拖拽或复制到设计师表单的B列的其他单元格中,以填充整个列。公式将根据设计师表单的每个设计师名称,在项目表单的B列中搜索包含该设计师名称的单元格,并将相应的项目名称提取出来,并以逗号分隔的形式显示在B列中。
还是不行,显示#name?
非常抱歉,之前的公式可能无法正确运行并显示"#NAME?"错误。这种情况通常是由于函数名称错误或Excel版本不兼容引起的。在最新版本的Excel中,您可以尝试使用以下公式来获取每个设计师参加的所有项目名称,即使项目表单的B列中一个单元格包含多个人名:swiftCopy code=TEXTJOIN(", ", TRUE, IF(ISNUMBER(SEARCH(A2, 项目表单!$B$2:$B$100)), INDEX(项目表单!$A$2:$A$100, SMALL(IF(ISNUMBER(SEARCH(A2, 项目表单!$B$2:$B$100)), ROW(项目表单!$A$2:$A$100)-MIN(ROW(项目表单!$A$2:$A$100))+1), ROWS($A$2:A2))), ""))同样,这是一个数组公式,您需要按下Ctrl + Shift + Enter来输入。请确保您在公式中进行了以下调整:将"项目表单"替换为实际的项目表单名称。将"$B$2:$B$100"替换为项目表单中实际的数据范围。将"$A$2:$A$100"替换为项目表单中实际的项目名称列范围。如果您仍然遇到问题,请提供更多具体的信息,例如数据范围和表单名称,以便我能够更好地帮助您解决问题。
还是显示name?
非常抱歉,之前提供的公式仍然无法解决问题。在处理复杂的字符串拆分和匹配的情况下,Excel的公式功能可能有限。如果您的设计师表单和项目表单数据比较复杂,建议考虑使用VBA宏或借助Power Query(数据获取和转换工具)来处理这个需求。这些工具提供了更强大和灵活的数据处理能力。以下是一种使用VBA宏的示例方法,用于获取每个设计师参加的所有项目名称:按下ALT + F11打开Visual Basic for Applications(VBA)编辑器。在VBA编辑器中,插入一个新的模块(在左侧的项目资源管理器窗口中右键单击工作簿,选择"插入"->"模块")。在新模块中,粘贴以下VBA代码:vbaCopy codeFunction GetProjects(designer As String) As String Dim wsProject As Worksheet Dim lastRow As Long Dim i As Long Dim projectList As String Set wsProject = ThisWorkbook.Worksheets("项目表单") '替换为实际的项目表单名称 lastRow = wsProject.Cells(wsProject.Rows.Count, "B").End(xlUp).Row For i = 2 To lastRow If InStr(1, wsProject.Cells(i, "B").Value, designer, vbTextCompare) > 0 Then projectList = projectList & ", " & wsProject.Cells(i, "A").Value End If Next i If Len(projectList) > 0 Then GetProjects = Mid(projectList, 3) '去掉开头的逗号和空格 Else GetProjects = "" End IfEnd Function
关闭VBA编辑器。在设计师表单的B列中,输入以下公式:scssCopy code=GetProjects(A2)其中,A2是设计师的单元格引用,根据实际情况进行调整。然后,将该公式拖拽或复制到B列的其他单元格中以填充整个列。这个VBA函数将根据设计师名称在项目表单中查找匹配的项目,并将所有匹配的项目名称以逗号分隔的形式返回。请注意,使用VBA宏需要启用宏的支持。此外,如果数据量较大,VBA宏可能会导致计算时间较长。希望这种方法能够满足您的需求。如有更多问题,请随时提问。
我们这里好像无法用宏
如果您无法使用宏,您可以尝试使用Excel的一些内置函数和工具来处理您的需求。虽然这种方法可能相对复杂一些,但它可以在不使用宏的情况下完成。以下是一种使用内置函数和工具的方法,以获取每个设计师参加的所有项目名称:假设设计师表单的数据从第2行开始,项目表单的数据从第2行开始。设计师表单的A列是设计师的名称,B列是包含多个项目名称的单元格。在设计师表单的C2单元格中,输入以下公式:swiftCopy code=IFERROR(TEXTJOIN(", ", TRUE, IF(ISNUMBER(SEARCH("," & A2 & ",", "," & 项目表单!$B$2:$B$100 & ",")), INDEX(项目表单!$A$2:$A$100, SMALL(IF(ISNUMBER(SEARCH("," & A2 & ",", "," & 项目表单!$B$2:$B$100 & ",")), ROW(项目表单!$A$2:$A$100)-MIN(ROW(项目表单!$A$2:$A$100))+1), ROWS($A$2:A2))), "")), "")请根据实际情况调整单元格范围,假设项目表单中的数据范围是B2:B100和A2:A100。确保您按下 Ctrl + Shift + Enter,将该公式作为数组公式输入,而不仅仅是按下回车键。这将告诉Excel该公式是一个数组公式。将该公式拖拽或复制到设计师表单的C列的其他单元格中,以填充整个列。公式将自动计算每个设计师参加的所有项目名称,并以逗号分隔的形式显示在C列中。这种方法使用了内置函数SEARCH、IF、INDEX和SMALL,以及TEXTJOIN函数(仅适用于Excel 2016及更新版本)。它会在项目表单的B列中搜索匹配的设计师名称,并返回对应的项目名称。
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消