如何根据值删除excel中的选定行?

时间:2017-05-19 11:17:57

标签: excel excel-formula

我在excel中有一个数据表。它有超过7000个观测值。有5个标题。价值和品牌是两个标题之一。我想确定每个品牌名称下的最小值,只保留那些行并删除其他行。 我现在拥有什么

Name    brand   value   Ph  town
2   AM  345 number  town
3   CM  233 number  town
4   AM  234 number  town
5   AM  212 number  town
6   CM  123 number  town
7   CM  124 number  town
8   SM  123 number  town
9   SM  123 number  town

我想要这样的东西

Name    brand   value   Ph  town
2   AM  123 number  town
3   CM  233 number  town
9   SM  123 number  town

3 个答案:

答案 0 :(得分:0)

我假设你的桌子从A1开始。

首先找到每个品牌名称的最小值。为此,您需要一系列独特的品牌名称。

    K         L
1   Brand
2   AM
3   CM
4   SM  

在L1中输入以下公式作为数组公式( Ctrl + Shift + Enter )。如果输入正确,您应该在公式栏中看到围绕下面公式的大括号。将其拖到其他细胞上。

=MIN(IF($B$2:$B$9=K2,$C$2:$C$9))

然后使用高级过滤器,其中列表范围是原始数据,条件范围是范围(如果是样本数据(K1:L4)),您可以将过滤后的结果复制到新位置或过滤列表中的放置并复制结果。

没有按照您的要求完全删除行,但最终结果是相同的:)

答案 1 :(得分:0)

尝试使用VBA代码执行此任务。如果您的范围在columns A to E,请尝试使用此代码,

Sub copyrow()
Dim i As Long, j As Long
j = 1
Columns("A:E").Sort key1:=Range("B2"), _
      order1:=xlAscending, key2:=Range("C2"), order2:=xlAscending, Header:=xlYes
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
    If Cells(i, 2) = Cells(j, 2) Then
        Rows(i).ClearContents
    Else
        j = i
    End If
Next i
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub

如果有7000行,则宏可能需要一些时间才能执行。

答案 2 :(得分:0)

假设您的数据位于Range A1:E9,其中第一行是标题,您希望从Cell G2显示结果。见下图以供参考。要在每个品牌下获得最低价值,请使用以下公式。下面的所有公式都是数组公式,因此按 Ctrl + Shift + Enter 并根据需要拖动/复制提交。您可以根据需要更改范围。

首先在Cell H2中输入以下数组公式,列出独特品牌

=IFERROR(INDEX($B$2:$B$9, MATCH(0, COUNTIF($H$1:H1, $B$2:$B$9), 0)),"")

要为每个品牌获得相应的最小值,请在Cell I2中输入以下数组公式:

=MIN(IF(($B$2:$B$9=H2)<>FALSE,$C$2:$C$9))

要获得相应的 Ph ,请在Cell J2中输入以下数组公式:

=INDEX($D$2:$D$9,MATCH(1,(($B$2:$B$9=H2)*($C$2:$C$9=I2)),0))

要获得相应的城镇,请在Cell K2中输入以下数组公式:

=INDEX($E$2:$E$9,MATCH(1,(($B$2:$B$9=H2)*($C$2:$C$9=I2)),0))

现在要获取名称,请在Cell G2中输入以下数组公式:

=INDEX($A$2:$A$9,MATCH(1,(($B$2:$B$9=H2)*($C$2:$C$9=I2)),0))

enter image description here