gpt4 book ai didi

excel - 查找字符串中包含子字符串的所有行,并返回 ms-excel 中所有此类行的第一个单元格

转载 作者:行者123 更新时间:2023-12-02 19:31:29 24 4
gpt4 key购买 nike

我对某些 ID 进行了分类。现在每个id可能属于多个类别。假设 A 列包含类别名称,B 列包含该类别包含的所有 id。我添加了 C 列,其中包含所有 id(单元格中的单个 id)。现在我想在 D 列中包含包含该 id 的所有类别名称(来自 C 列)。如果在类别(A 列)中未找到该 id,则返回“未找到”。

      A             B         C     D

category A a21|b43|g87 a21 category A

category B b43|j78|n99 b43 category A category B

c35 not found

我尝试过使用 Index、Match、iferror、find 等,但无法实现我的预期目标。任何帮助将不胜感激。

最佳答案

您是否尝试过“if”和“search”功能的组合?

对于这两个类别,假设您没有标题,您可以使用:

=IF(ISERROR(SEARCH(C1,B$1)),"",A$1) & " " & IF(ISERROR(SEARCH(C1,B$2)),"",A$2)

如果您还有 3 个类别,则可以以相同的方式(串联)添加它们,同时更改每个 if 语句中 B 和 A 的行。如果在任何类别中都找不到该 ID,则会出现空白单元格。如果需要,您可以预先添加另一个 if 语句以返回“未找到”,或者您可以稍后通过过滤 D 列中的空白单元格来手动执行此操作。

编辑:如果您有太多类别(已更新),那么最好的选择是使用简短的 VBA 代码。这个概念很简单:对于您拥有的每个 ID,搜索所有可能的类别。两个“for 循环”就足够了。

Sub FindID()
lastRowID = Range("C" & Rows.Count).End(xlUp).Row 'Define number of IDs
lastRowCAT = Range("A" & Rows.Count).End(xlUp).Row 'Define number of CATs

For i = 2 To lastRowID 'For each ID
Category = 0 'We reset the category for each ID
currentID = Range("C" & i).Value 'store the value of the ID

For j = 2 To lastRowCAT 'Looking the ID in each category
If InStr(Range("B" & j).Value, currentID) > 0 Then 'If it is found, we add it to cateogries
Category = Category & " " & Range("A" & j).Value
End If
Next j

If Category = 0 Then
Range("D" & i).Value = "not found"
Else
Range("D" & i).Value = Right(Category, Len(Category) - 2)
End If

Next i

End Sub

关于excel - 查找字符串中包含子字符串的所有行,并返回 ms-excel 中所有此类行的第一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com