Excel或SQL Server中的条件格式

时间:2017-05-08 17:24:56

标签: excel

我在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

3 个答案:

答案 0 :(得分:3)

解决方案有点冗长但很容易。我已经包含一个额外的条件作为卖家Id 5623,它没有多个买家和购买ID。这样做是为了更好地测试此解决方案。我只突出显示了具有多个买方和购买ID的sellerIds。

我的解决方案图片: - enter image description here

注意: - 所有公式或单元格名称均符合我的解决方案,如图所示

现在的解决方案。我将在不同的部分打破它: -

步骤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. 识别这些卖家
  2. 根据1.
  3. 应用条件格式

    问题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_idHAVING子句测试以查看这些测试中的任何一个是否产生命中,如果不是,则从结果集中删除记录。

答案 2 :(得分:0)

在条件格式中使用以下公式:

=COUNTIFS($B:$B,$B1,$C:$C,"<>" & $C1)>0

enter image description here