我在Excel工作表中有大约500k条记录。我的任务是确定拥有多个购买ID和买方ID的卖家。例如,seller_id(12525)具有三个不同的purchase_id(8569,8591,8594)和buyer_id C160511,C160512,C160513)。在Excel 2013中使用的正确语法是什么,可以轻松识别我感兴趣的记录?我搜索了条件格式,但有人会帮忙吗?
谢谢, 乔
location Loc_Id Purchase_id buyer_id Seller_Id Date
CA 49456 8569 C160511 12525 5/3/2016
CA 49456 8569 C160511 12525 5/3/2016
CA 49456 8591 C160512 12525 5/3/2016
CA 49456 8591 C160512 12525 5/3/2016
CA 49456 8594 C160513 12525 5/3/2016
CA 49456 8594 C160513 12525 5/3/2016
TX 37140 8620 C170166 5621 1/24/2017
TX 37140 8621 C170167 5621 1/24/2017
答案 0 :(得分:3)
解决方案有点冗长但很容易。我已经包含一个额外的条件作为卖家Id 5623,它没有多个买家和购买ID。这样做是为了更好地测试此解决方案。我只突出显示了具有多个买方和购买ID的sellerIds。
注意: - 所有公式或单元格名称均符合我的解决方案,如图所示
现在的解决方案。我将在不同的部分打破它: -
步骤1: - 添加一个列说Purchase_Id_cnt并写下这个公式并将其拖到最后
=IF(SUMPRODUCT(($A$2:$A2=A2)*($C$2:$C2=C2))>1,0,1)
步骤2: - 添加一个名为Buyer_Id_cnt的列并编写此公式并将其拖到最后
=IF(SUMPRODUCT(($B$2:$B2=B2)*($C$2:$C2=C2))>1,0,1)
步骤3: - 在相同的工作表中添加数据透视表(也可以使用不同的工作表。我在同一工作表中使用了单元格F1)
步骤4: - 添加另一列说Header(你可以给出一个更好的名字)并在我的情况下输入与单元格I3中的数据透视表对应的公式并将其向下拖动直到结束
=IF(AND(G3>1,H3>1),1,0)
步骤5: - 现在选择/ Higlight C2到C11。然后转到条件格式。选择“新规则”。然后选择“使用公式确定要格式化的单元格”。
步骤6: - 在“此公式为真的格式值”下输入此公式
=IFERROR(VLOOKUP(C2,$F$3:$I$5,4,0),0)=1
Step7: - 别按'确定'。点击“格式”。进入“填充”标签。选择您想要的任何颜色。我选择黄色,然后按“确定”。
完成!!!
答案 1 :(得分:2)
既然你提到了SQL Server,我会用它来回答。老实说,你的数据库是一个更好的地方。有了excel你就会遇到两个问题。
问题1将是excel中500k记录的繁重处理。
到SQL Server:
SELECT Seller_ID,
CASE WHEN COUNT(DISTINCT Purchase_ID) > 1 THEN 'X' ELSE NULL END AS multiple_purchases,
CASE WHEN COUNT(DISTINCT Buyer_ID) > 1 THEN 'X' ELSE NULL END AS multiple_buyers
FROM your_table_name
HAVING multiple_purchases = 'X' OR multiple_buyers='X'
GROUP BY Seller_ID;
因此,我们只是按Seller_ID
聚合记录,然后使用CASE
语句和聚合公式COUNT(DISTINCT <field>)
来获取不同(唯一)purchase_id
的数量和buyer_id
。 HAVING
子句测试以查看这些测试中的任何一个是否产生命中,如果不是,则从结果集中删除记录。
答案 2 :(得分:0)