我确实需要以下情况的帮助。我试图使用vlookup或索引,我认为这对我来说非常先进,遗憾的是我不知道如何在这里附加excel文件,所以我将添加一个图像
我有一个巨大的数据库,我有他们购买的名称和产品,总共有5种产品,但不是每个人都试图购买所有产品,所以有一些人只想购买1。数据库包含垂直方式的信息,但我需要使用公式来横向获取与每个客户相关的所有信息。
在图像上,您将看到我的数据库来自A4:C12以及A14的产品类型:B18
我用E7中的黄色高亮一点:O12一个例子,输入公式后最终表格应如何显示。
我尝试过结合使用vlookup或索引,但问题是并非所有客户都购买了5种产品,例如Jorge只购买1套房子,这意味着其余的字段必须是空的
从E1:O4是我需要输入公式的地方。
答案 0 :(得分:1)
这可以分为两部分,一部分为产品,一部分用于查找数量。
因此,从产品公式开始,我可以通过使用:
来实现这一目标=IF(SUMPRODUCT(($A$5:$A$12=$E2)*($B$5:$B$12=INDEX($B$14:$B$18,MATCH(F$1,$A$14:$A$18,0))))>0,INDEX($B$14:$B$18,MATCH(F$1,$A$14:$A$18,0)),"")
<强>解释强>
假设Product a
属于F列
我将使用Saul
这可以通过使用两个不同的数组来实现。可以通过当前行上列出的名称检查名称。第二个阵列是根据产品列检查产品。所以对于名称数组:
Adam =? Saul => False
Adam =? Saul => False
Adam =? Saul => False
Adam =? Saul => False
Adam =? Saul => False
Saul =? Saul => True
Saul =? Saul => True
Jorge =? Saul => False
现在使用INDEX($B$14:$B$18,MATCH(F$1,$A$14:$A$18,0))
我们可以获取每列的当前产品的名称。使用产品A这个数组看起来像:
Car =? Car => True
House =? Car => False
Clock =? Car => False
Umbrella =? Car => False
Computer =? Car => False
Car =? Car => True
House =? Car => False
House =? Car => False
将由SUMPRODUCT
包围的这两个数组相乘得到:
False * True = 0*1 = 0
False * False = 0*0 = 0
False * False = 0*0 = 0
False * False = 0*0 = 0
False * False = 0*0 = 0
True * True = 1*1 = 1
True * False = 1*0 = 0
False * False = 0*0 = 0
SUMPRODUCT = 1
如果此金额为0,则此人不会订购此产品,如果该数量大于0,则该人员至少会被列为购买该产品。如果你需要额外的检查(如果数量可能是0),这可以增加到数组乘法。
在IF
语句中使用此内容,我们可以轻松返回任何内容(""
)或使用INDEX($B$14:$B$18,MATCH(F$1,$A$14:$A$18,0))
生成的产品,具体取决于总和是否为0或0。最终公式。
QTY公式相当简单。只需使用前面描述的SUMPRODUCT
方法,但在QTY列上进行扩充。现在一切都取决于您是否希望在没有产品时显示任何内容(""
)或0
。
显示0:
=SUMPRODUCT(($A$5:$A$12=$E2)*($B$5:$B$12=F2)*($C$5:$C$12))
什么都不显示:
=IF(F2="","",SUMPRODUCT(($A$5:$A$12=$E2)*($B$5:$B$12=F2)*($C$5:$C$12)))
<强>释强>
这非常简单,我们只是将我们之前到达的数组放在QTY列中:
0 * 2 = 0
0 * 3 = 0
0 * 1 = 0
0 * 2 = 0
0 * 3 = 0
1 * 2 = 2
0 * 3 = 0
0 * 1 = 0
SUMPRODUCT = 2
添加IF(F2="","",...)
将检查产品是否列出,如果没有,那么它将不会在单元格中放置任何内容,否则它将放置数量。