Excel - 使用特定标记创建单元格计数

时间:2011-07-28 12:25:54

标签: excel pivot-table

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

日期|标签|量

我希望能够遍历每一行并确定该行所属的类别,如标签所定义。

E.g。

  1. 5月1日|星巴克| $ 10.00
  2. 5月1日| BestBuy | $ 2.00
  3. 5月2日| CostCo | $ 25.00
  4. 在这种情况下,第1行和第1行3将被归类为“咖啡”,总计35美元。

    这样的宏会是什么样的?

2 个答案:

答案 0 :(得分:0)

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

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

把它填满你的桌子。

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

修改

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

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

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

答案 1 :(得分:0)

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

  • 添加具有此公式的列

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

在此示例中,输出地址给出“星巴克”的计数器将为1或数字(parcial match)或#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.

最后,您可以使用 vlookup sumif 对细胞进行分类,以获得最终结果。