2017-05-19 50 views
-1

我在excel中有一個數據表。它有超過7000個觀測值。有5個標題。價值和品牌是標題中的兩個。我想確定每個品牌名稱下的最小值,只保留這些行並刪除其他行。 什麼我現在如何根據值刪除Excel中的選定行?

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 
+2

公式不會刪除行。 – pnuts

+0

感謝您的評論,但我會很高興,如果我能確定最小值 –

+1

你有MAXIFS?如果不在數組公式中嘗試MAX(在SO上有很多例子),但將MAX改爲MIN。 – pnuts

回答

0

我假設你的表從A1開始。

首先找到每個品牌名稱的最小值。爲此,你需要一個獨特的品牌名單。

K   L 
1 Brand 
2 AM 
3 CM 
4 SM 

輸入L1下面的公式作爲數組公式(Ctrl鍵 + + 輸入)。如果輸入正確,您應該在編輯欄中看到圍繞以下公式的大括號。拖動到其餘的單元格。

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

然後,使用高級濾波器,其中列表的範圍是原來的數據,標準範圍是(在你的樣本數據(K1的情況下:L4))的範圍內,可以將濾波結果複製到新的位置,或過濾列表並複製結果。

並不完全刪除行,你問過,但最終的結果是一樣的:)

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行,那麼宏可能需要一些時間才能執行。

0

假設您的數據位於Range A1:E9,其中第一行是標題,您希望從Cell G2顯示結果。請參閱以下圖片以供參考。要在每個品牌下獲得最低價值,請使用以下公式。以下所有公式都是數組公式,因此按提交Ctrl + Shift + 輸入並根據需要拖放/複製。您可以根據需要更改範圍。

首先列表中向下獨特的品牌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

相關問題