我有一个需要帮助的问题,我会尽力解释。
我正在使用Excel 2010.我有一个垂直列表,列出了产品编号以及它们在价格上出现的商店数量。例如:
亚马逊|产品A | $ 100
百思买|产品A | $ 200
目标|产品B | $ 300
目标|产品A | $ 100
沃尔玛|产品B |娜
百思买|产品C |娜
我想在每一行中编写一个基本上搜索我的列表的公式,并给出一个产品A出现并且有价格的每个事件的列表。因此,在产品A所在行的下一个单元格中,我希望它列出"亚马逊百思买目标。"并且其中包含产品B的任何行,我希望它说" Target" (但不是沃尔玛,因为没有价格),而产品C应该返回na或错误或其他东西,因为没有价格
我希望在尽可能少的额外列中执行此操作,但我愿意接受任何有用的内容!如果有任何宏/ VBA解决方案,我也会乐于学习。我对VBA编码不太熟悉,但想了解更多。
答案 0 :(得分:0)
数据透视表看起来非常合适,尽管你提到“尽可能少的额外列”可能是一个问题。但是,PT不需要在同一张纸上。
经过一些澄清并假设Amazon
在A2中并且数据透视表(在F1中)是命名范围Larray
,请在D2中尝试:
=IF(C2="na","",TRIM(SUBSTITUTE(IF(VLOOKUP(B2,Larray,2,0)>0,G$2)&" "&IF(VLOOKUP(B2,Larray,3,0)>0,H$2)&" "&IF(VLOOKUP(B2,Larray,4,0)>0,I$2)&" "&IF(VLOOKUP(B2,Larray,5,0)>0,J$2),"FALSE","")))
复制到西装。
答案 1 :(得分:0)
此公式将输出您需要的内容,但不会输出单个单元格。它将连续输出整个列表,如下所示:
1 |亚马逊|产品A | 100美元|亚马逊|百思买|目标
=IF(ISERROR(INDEX($A$1:$B$6;SMALL(IF(($B$1:$B$6=$B1)*($C$1:$C$6<>"na");ROW($A$1:$A$6));COLUMN($1:$6));1));"";INDEX($A$1:$B$6;SMALL(IF(($B$1:$B$6=$B1)*($C$1:$C$6<>"na");ROW($A$1:$A$6));COLUMN($1:$6));1))
但请注意,这是一个数组公式,因此存在一些困难,例如:
将表格与您问题中的数据一起使用 - 这就是您必须要做的事情:
现在D之后的每一列都包含您要搜索的列表中的值
公式假定“na”用于检查失败。请注意,我使用了&lt;&gt;,因此它是完全匹配(之前或之后没有空格)
答案 2 :(得分:0)
感谢您的回复,我最终最终使用此网站的VBA代码来解决我的问题:
关于范围这是非常挑剔的代码,并且在较大的电子表格上计算得不是很快,但它确实完成了工作。
我最终不得不编写一个特定的连接公式,结合我正在寻找的因素,并在第二列中重复此连接以使代码正常工作,但它最终只向我的电子表格添加了3个额外的列并最终得到了我正在寻找的结果,如上所述。
希望这有助于其他人!