返回列表 上一主題 發帖

[發問] 請問如何可統計出現次數並且包含多條件的資料刪除呢?

回復 10# 准提部林

版大~不好意思 現欄位有增加,試過後改不太出來  
只會刪除部份資料 第一表格會全刪,第二、三表格只會刪除部份資料
    多條件判斷刪除-2.rar (92.51 KB)

TOP

回復 10# 准提部林


   
Sub TEST()
Dim xArea As Range, xR As Range, xU As Range, xD, T$, i&
For i = 1 To 9 Step 4 '請問這個9的意思是?  知道後面的4是 總共一組四欄來刪除
  Set xD = CreateObject("Scripting.Dictionary")
  Set xArea = Range(Cells(2, i), Cells(Rows.Count, i).End(xlUp)(1, 4))
  For Each xR In xArea
    T = xR(1, 2) & xR(1, 3): xD(T) = xD(T) + 1
  Next
 
  Set xU = Cells(xArea.Rows.Count + 2, 1)
  For Each xR In xArea
    T = xR(1, 2) & xR(1, 3)
    If xD(T) >= 20 And xR(1, 4) = "." Then Set xU = Union(xU, xR.Resize(1, 4))
  Next
 
  If xU.Count > 1 Then xU.Delete Shift:=xlUp
Next i
End Sub

TOP

回復 9# starry1314


Sub TEST()
Dim xArea As Range, xR As Range, xU As Range, xD, T$, i&
For i = 1 To 9 Step 4
  Set xD = CreateObject("Scripting.Dictionary")
  Set xArea = Range(Cells(2, i), Cells(Rows.Count, i).End(xlUp)(1, 4))
  For Each xR In xArea
    T = xR(1, 2) & xR(1, 3): xD(T) = xD(T) + 1
  Next
 
  Set xU = Cells(xArea.Rows.Count + 2, 1)
  For Each xR In xArea
    T = xR(1, 2) & xR(1, 3)
    If xD(T) >= 20 And xR(1, 4) = "." Then Set xU = Union(xU, xR.Resize(1, 4))
  Next
 
  If xU.Count > 1 Then xU.Delete Shift:=xlUp
Next i
End Sub

TOP

多條件判斷刪除.rar (16.02 KB) 回復 8# 准提部林

結果是跟以下代碼一樣的,只是說不要刪除整列 只刪除指定範圍內的資料
  1. Sub TEST()
  2. Dim xArea As Range, xR As Range, xU As Range, xD, T$
  3. Set xD = CreateObject("Scripting.Dictionary")
  4. Set xArea = Range([B2], [B65536].End(xlUp))
  5. '以BC欄值為KEY納入字典檔並累計次數 
  6. For Each xR In xArea
  7.  T = xR & xR(1, 2):  xD(T) = xD(T) + 1
  8. Next
  9. '檢查符合刪除條件者,納入 xU 儲存格聯集 
  10. Set xU = xArea(xArea.Count + 1)
  11. For Each xR In xArea
  12.  T = xR & xR(1, 2)
  13.  If xD(T) >= 20 And xR(1, 3) = "." Then Set xU = Union(xU, xR)
  14. Next
  15. '刪除 
  16. xU.EntireRow.Delete
  17. End Sub
複製代碼

TOP

回復 7# starry1314


請上傳檔案, 並模擬需求結果~~

TOP

回復 3# 准提部林
版大∼不好意思 遇到個問題 
再刪除資料時可設定範圍嗎? 因同一活頁內有三張表格,目前此代碼會刪除整列導致另外兩張資料也一併刪除了

如像下列這種 只刪除篩選範圍內資料
  1. With Sheets("數據(早餐)")
  2.         .Select
  3.         .Range("$A$1:AA5000").AutoFilter Field:=6, Criteria1:=Array( _
  4.         "紅茶", "奶茶", "0"), Operator:=xlFilterValues
  5.         
  6.         With .AutoFilter.Range
  7.             .Offset(1).Resize(.Rows.Count).SpecialCells(xlCellTypeVisible).ClearContents
  8.             .AutoFilter
  9.         End With
  10.         
  11.     End With
複製代碼

TOP

回復 2# hcm19522


    謝謝∼提供函數用法

TOP

回復 3# 准提部林


    感謝~真是好用!可用在很多地方

TOP

真是受用,感謝分享!!

TOP

先將樞紐分析表內容貼至另一工作表!

Sub TEST()
Dim xArea As Range, xR As Range, xU As Range, xD, T$
Set xD = CreateObject("Scripting.Dictionary")
Set xArea = Range([B2], [B65536].End(xlUp))
'以BC欄值為KEY納入字典檔並累計次數 
For Each xR In xArea
 T = xR & xR(1, 2):  xD(T) = xD(T) + 1
Next
'檢查符合刪除條件者,納入 xU 儲存格聯集 
Set xU = xArea(xArea.Count + 1)
For Each xR In xArea
 T = xR & xR(1, 2)
 If xD(T) >= 20 And xR(1, 3) = "." Then Set xU = Union(xU, xR)
Next
'刪除 
xU.EntireRow.Delete
End Sub

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題