我有一个包含1000行的数据源,包含以下标题:
日期|标签|量
我希望能够遍历每一行并确定该行所属的类别,如标签所定义。
E.g。
在这种情况下,第1行和第1行3将被归类为“咖啡”,总计35美元。
这样的宏会是什么样的?
答案 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 对细胞进行分类,以获得最终结果。