2017-09-29 77 views
0

第一次海報。每10行中刪除/隱藏9個?

我這人非常VBA新手,我無法找到一個方法來做到以下幾點:

說我有行數據輸出的5-50,000之間的任何地方(只〜20ish列)的數據集。我想繪製這個數據集,但這是相當的記憶稅。是否有一個宏可以隱藏每10行中的9行,從而將數據集降至10%(更易於管理)?數據每隔幾秒收集一次,這樣我就可以輕鬆地刪除多餘的數據,而不會影響圖表。

我試過「刪除/隱藏每一個其他行循環」,但它仍然留下大量的信息。我認爲90%(或者,如果可調的話,減少X%)最有幫助。感謝您的任何意見。

+0

這是很多行。您可能需要在不同的工作表上總結數據集,然後從摘要數據中創建圖表。 – abraxascarab

+0

您還沒有給我們任何代碼來處理 - 在這個階段太寬泛無法回答。將其分解成一個簡單的,可重複的問題,我們將幫助您解答問題 – CallumDA

回答

1

此代碼將隨機選擇/刪除90%的行。由於隨機性可能不完全是90%。大量確保90%的方法,但爲了簡單起見,我更喜歡這種方法。

Sub RemoveRows() 
    Dim inputRange As Range, removeRange As Range, r As Range 

    Set inputRange = Sheet1.Range("A1:A1000") 

    Randomize 
    For Each r In inputRange 
     If Rnd < 0.9 Then 
      If removeRange Is Nothing Then 
       Set removeRange = r 
      Else 
       Set removeRange = Union(removeRange, r) 
      End If 
     End If 
    Next r 

    removeRange.EntireRow.Select 
    'removeRange.EntireRow.Delete 
End Sub 
0

下面的代碼會隱藏每個x範圍內的行數。您可以在代碼中指定值x,變量rowCnt=9

Sub Demo() 
    Dim rng As Range, cel As Range, hideRng As Range 
    Dim lastRow As Long, rowCnt As Long, i As Long 
    Dim ws As Worksheet 

    rowCnt = 9        'number of rows to hide 
    Set ws = ThisWorkbook.Sheets("Sheet5") 'change Sheet5 to your data sheet 

    With ws 
     lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'last row with data using Column A 

     For i = 2 To lastRow Step rowCnt + 1    'loop through Column A starting from Row 2 
      If hideRng Is Nothing Then 
       Set hideRng = Range(.Cells(i, 1), .Cells(i + rowCnt - 1, 1)) 'get range of 9 cells 
      Else 
       Set hideRng = Union(hideRng, Range(.Cells(i, 1), .Cells(i + rowCnt - 1, 1))) 'union range of 9 cells 
      End If 
     Next i 
    End With 

    hideRng.EntireRow.Select   'use this line to select rows 
    'hideRng.EntireRow.Hidden = True 'use this line to hide rows 
    'hideRng.EntireRow.Delete   'use this line to delete rows 
End Sub 
+0

這正是我所尋找的,謝謝! – zymurgistic