Excel VBA如何在工作表中找到最佳价格并将所有行放到另一个工作表中

时间:2016-11-09 11:06:06

标签: excel vba excel-vba

您好Excel和VBA大师。

我遇到了问题,我相信你可以帮助我:)。

在这种情况下:

我有一些产品,价格和商店的工作表。我需要找到价格最优惠的每件产品。

在工作表1中,我有来自商店的优惠:

enter image description here

在Worksheet2中,我需要列出所有产品的最佳价格和商店名称(只有价格最优的行,不加倍)

enter image description here

我打赌这不难做到,但我的excel技能非常糟糕(我不能告诉我的老板ofc :))所以我需要堆栈社区的帮助

2 个答案:

答案 0 :(得分:1)

替换sheet1& sheet2包含您的源和目标表 -

表格(" Sheet1")&片(" Sheet2的&#34)

Application.ScreenUpdating = False

Sheets("Sheet1").Range("A3:C" & Sheets("Sheet1").Range("A50000").End(xlUp).Row).Sort Key1:=Sheets("Sheet1").Range("B3"), Order1:=xlDescending
Sheets("Sheet1").Range("A1:C" & Sheets("Sheet1").Range("A50000").End(xlUp).Row).Copy Destination:=Sheets("Sheet2").Range("A1")    
Sheets("Sheet2").Range("A3:C" & Sheets("Sheet2").Range("A50000").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
Sheets("Sheet2").Range("A3:C" & Sheets("Sheet2").Range("A50000").End(xlUp).Row).Sort Key1:=Sheets("Sheet2").Range("A3"), Order1:=xlAscending
Application.ScreenUpdating = True

答案 1 :(得分:1)

此公式将告诉您每个产品的最大产品,填入D列 - 使用cntl + shift + enter使其成为数组公式:

{=MAX(IF($A$2:$A$10=A2,$B$2:$B$10))}

然后,您可以使用它来确定最大值中的当前行是否填充在E列中:

=IF(D2=B2,1,0)

然后,您可以使用数据透视表并过滤columnE = 1