如何在电子表格中标记/标记项目

如何在电子表格中标记/标记项目

我是电子表格方面的新手,所以如果我问了一个非常明显的问题,希望你能原谅我。

是否可以在 Excel/Google 电子表格中使用标签?我正在创建一个电子表格来记录我正在阅读的所有文章和书籍。假设我正在阅读《我,克劳迪亚斯》。我想给它添加以下标签:历史、小说、传记、残疾、政治、戏剧。然后,如果我想显示所有带有“政治”标签的文章/书籍,我可以用该标签进行搜索/显示/透视。

也许最好将所有标签放在一个单元格中,每个单词用逗号分隔。如果每个单词都放在一个单元格中,我认为表格会变得非常混乱。

我也愿意接受其他标签解决方案。

谢谢!

答案1

据我所知,Excel 中没有内置功能可以解析和汇总逗号分隔的标签。当然,您可以使用工作表函数和一些 VBA 创建自己的解决方案。这是一个快速解决方案。

步骤1:按Alt+F11在 Excel 中打开 VBA 编辑器窗格。插入新模块并粘贴此代码作为自定义函数。

Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate.  sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer

On Error GoTo EH
rra = rr
out = ""
i = 1

Do While i <= UBound(rra, 1)
    If rra(i, 1) <> False Then
        out = out & rra(i, 1) & sep
    End If
    i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function

EH:
rra = rr.Value
Resume Next

End Function

此功能将允许您创建逗号分隔的列表来汇总您拥有的标签数据。

第2步:在工作表中,在单元格(下例中为 H2)中输入要搜索的标签。在右侧单元格中,按Ctrl+ Shift+输入以下公式Enter

=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")

通过按Ctrl++ ,您将以数组公式的形式输入公式。它将出现在公式栏中,由 包围Shift。请注意,公式中的是包含 中列出的项目的所有标签的范围。Enter{...}$B$2:$B$6$A$2:$A$6

在此处输入图片描述

编辑:
如果您不介意将匹配项列在一列中而不是列在一个单元格中的列表中,则可以仅使用工作表函数返回标签的匹配项。

您的标题位于Column A,标签位于Column B,并且您要搜索的标签位于H2,您可以使用以下内容数组公式I2根据需要填写:

=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")

在此处输入图片描述

该公式的工作原理是,首先根据每行中的标签是否包含搜索词形成一个数字数组。如果找到匹配项,则将行号存储在数组中。如果没有找到,则将 2000000 存储在数组中。接下来,SMALL(<array>,ROW()-1)公式的一部分返回ROW()-1数组中的最小值。接下来,将此值作为索引参数传递给函数INDEX(),函数将返回标题数组中该索引处的值。如果将大于标题数组中行数的数字INDEX()作为参数传递,则会返回错误。由于在未找到匹配项时将 2000000 作为参数传递,因此会返回错误。然后,在这种情况下,IFERROR()函数返回。""

了解ROW()公式中如何使用 非常重要。如果要显示从不同行开始的结果列表,则需要调整函数的第二个参数,SMALL()以便它返回数组中第一个最小的值。例如,如果结果列表从第 1 行而不是第 2 行开始,则可以使用SMALL(...,ROW())而不是SMALL(...,ROW()-1)

此外,如果您的标题和标签列表不是从第 1 行开始,您也需要调整公式。IF()必须调整函数的第二个参数,以便数据第一行中的匹配返回 1。例如,如果您的标题列表从第 2 行而不是第 1 行开始,您需要在公式中包含IF(...,ROW($A$2:$A$7)-1,...)而不是IF(...,ROW($A$1:$A$6),...)

答案2

另一个想法:

使用内置过滤功能。按标签列进行过滤,然后您可以搜索包含给定标签的行。

带有标签列表的行:喜剧、恐怖、浪漫

在搜索这三个标签中的任何一个时都会出现。

答案3

虽然在某些情况下,以编程方式执行此操作效果很好,但我发现手动方法对我来说很有效。使用列作为标签,您可以通过在列中输入 0 来轻松标记行项。然后,您将有一行,并在该行的每个标签列中输入 1(您可以为该行着色)。然后,当您按其中一个标签排序时,1(蓝色)行将充当分隔符。在您的筛选结果(0)和其他所有内容(_)之间。

这有几个优点。1. 您不必每次都输入标签。2. 您可以轻松地交叉引用以检查是否有重复或相似的项目可以缩减为一个。

答案4

我不清楚你到底想如何使用标签。但在 Google 表格中,你可以使用分裂()函数将一串标签(由空格、逗号或任何您想要的分隔符分隔)拆分成几个其他单元格,我相信 Excel 也有一个可以搜索单元格以查找标签的函数。

相关内容