【问题标题】:Excel - create counts of cells with a particular tagExcel - 创建具有特定标签的单元格计数
【发布时间】:2011-07-28 12:25:54
【问题描述】:

我有一个包含以下标题的 1000 行数据源:

日期 |标签 |金额

我希望能够遍历每一行并确定该行属于哪个类别,由标签定义。

例如

  1. 5 月 1 日 |星巴克 | $10.00
  2. 5 月 1 日 |百思买 | $2.00
  3. 5 月 2 日 |好市多 | $25.00

在这种情况下,第 1 行和第 3 行将被归类为“咖啡”,总计 35.00 美元。

这样的宏会是什么样子?

【问题讨论】:

  • 您有一个标签和类别表可以使用吗?
  • 是的,如果有帮助,我可以轻松创建一个?

标签: excel pivot-table


【解决方案1】:

创建单独的标签和类别表后,您需要在原始表中为“类别”创建第四列。为该列中的第一条记录输入此公式:

=VLOOKUP(B2,<<label/category table address goes here, e.g. Categories!$A$1:$B$10>>,2,false)

把这个填在你的桌子上。

现在,如果您想按类别对金额进行小计,可以使用数据透视表轻松获得。

编辑:

如果您想像下面的 cmets 中描述的那样进行部分值匹配,您可以在将 Label 传递给 VLOOKUP 函数之前使用一些字符串操作:

=VLOOKUP(IF(MID(B2,LEN(B2)-1,1)=" ",LEFT(B2,LEN(B2)-2),B2),Categories!$A$1:$B$10,2,FALSE)

这将检查标签末尾是否有空格和字母。如果是这样,它将在搜索时省略最后两个字符。否则它只会搜索标签。请注意,我在公式中有一个通用查找表地址,您需要更改它以匹配您的工作簿。

【讨论】:

  • 很好,这是迈向解决方案的好一步,部分值匹配怎么样?例如。 “Starbucks A”和“Starbucks B”都是“Coffee”,我只想在表格中输入“Starbucks”。
  • “Starbucks A”和“BestBuy C”是标签中唯一的变体,即唯一的变体是最后一个字母吗?我可以给你一个解决方案,但如果你有任何不同的变体,例如“Starbucks Main St.”,它就行不通了。和“星巴克第三大道”。
【解决方案2】:

我有一些想法可以帮助你,但由于时间原因,我现在无法创建一个宏来实现我的所有想法:

  • 使用此公式添加列

    =FIND(INDIRECT(ADDRESS(initial_row_of_your_match_list + counter;_column_of_your_match_list;1));cell_where_appears_StarbucksA_StarbucksB_CostCo_etc)

输出,在这个例子中,给定一个 address 给出“starbuck”的计数器,将是 1 或一个数字(部分匹配)或 #VALUE! (不匹配),实际的宏是:

* while you loop the counter throu the list
* if the result value is '1' or a number copy the corresponding value of _
  the checking_list (Starbuck) to a Results_column.

最后,您可以使用 vlookupsumif 单元格对行进行分类以获得最终结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多