使用数据透视表中的引用查找并替换特定值

时间:2016-09-19 21:32:23

标签: excel excel-vba vba

如果我试图在我的数据透视表中给出的列表中找到特定名称,例如 -

Row Labels              Revenues    Order #

   Panera               25          0
        Pasta           15         
        Salad           10

   Olive Garden         40          0 
        Sandwich        20
        Pasta           20

   Panda Express        30          0 
        Rice            15
        Chicken         15

我想搜索我的文件,找到Olive Garden和Panda Express,我想在#colore的列中替换为0,橄榄园为10,Panda Express为20。目前,有人在这里帮助我

=IF(IFERROR(VLOOKUP(A9,worksheet!K:K,1,FALSE),"")="","",0) 

在'订单#'中为订单的标题和空白插入0'列,我可以添加第二个公式,找到名称并替换该列中的值吗?或者调整当前公式?

快速注释 - 订单#列不是来自数据透视表。

为了更清楚, - 我从外部来源(即纸质发票)获取数据,而不是手动输入以调整订单#列中的0,我想告诉VBA / Excel - "嘿,Olive Garden的订单号是10,Panda Express的订单号改为20,调整"。

这是我的最终目标 -

Row Labels              Revenues    Order #

   Panera               25          0
        Pasta           15         
        Salad           10

   Olive Garden         40          10 
        Sandwich        20
        Pasta           20

   Panda Express        30          20
        Rice            15
        Chicken         15

2 个答案:

答案 0 :(得分:0)

FWIW,使用MATCH,而不是VLookup,这个公式会更好,因为它从第一列返回值。

但回到正轨:你想要实现的目标是什么?更改数据透视表中的值?

首先,公式不能更改另一个单元格中的值。 其次,数据透视表报告现有数据。您无法更改数据透视表报告的数字。

您需要重新考虑自己的方法。如果您不喜欢数据透视表返回的数字,则需要更改基础源数据。

答案 1 :(得分:0)

如果您的餐厅名称在一列中有一个范围,而下一列中的订单编号(例如表格的第X和Y列称为“工作表”),您可以将公式更改为

=IF(IFERROR(MATCH(A9,worksheet!K:K,0),"")="","",IFERROR(VLOO‌​KUP(A9,worksheet!X:Y‌​,2,FALSE),0))

(P.S。根据来自teylyn的有用反馈,将原来的VLOOKUP更改为MATCH。)