我有一個電子表格(Sheet3),用於收集和排序來自其他25張紙張的數據。所以我在Sheet3中沒有大量的空行我做了一個VBA循環,首先檢查一個表是否可見,然後根據它們是否隱藏在其他25個表中來隱藏和取消隱藏行,如所以:循環。顯示在另一張紙上的每行顯示2行
Sheet3.Rows("1791:9290").EntireRow.Hidden = True
For i = 1205 To 1354
If Sheet1.Visible = True Then
If Sheet1.Rows(i).EntireRow.Hidden = False Then
Sheet3.Rows(i + 586).EntireRow.Hidden = False
End If
End If
If Sheet2.Visible = True Then
If Sheet2.Rows(i).EntireRow.Hidden = False Then
Sheet3.Rows(i + 886).EntireRow.Hidden = False
End If
End If
If Sheet4.Visible = True Then
If Sheet4.Rows(i).EntireRow.Hidden = False Then
Sheet3.Rows(i + 1186).EntireRow.Hidden = False
End If
End If
etc...
由於數據的I型需要拉我可惜不能匹配片3向上與其他25張排爲一行。對於其他25行中可見的每行,我需要Sheet3至取消隱藏2行。
例如,如果SheetX行1是可見的,Sheet3必須使行1和行2可見。如果SheetX Row 2可見,則Sheet 3必須使行3和4可見,依此類推。
有沒有辦法做到這一點,我不得不改變所有的25張其他牀單加倍他們的行數?這只是一個巨大項目的一部分,如果可以避免的話,我不想再增加幾千行。
如果您使用包含在'... EntireRow.Hidden = FALSE'聲明2行的範圍內,你可以同時取消隱藏2行。至於選擇要隱藏的行,你可以使用一個相當簡單的算術公式,比如'Sheet2.Range(「A」&2 * i + 586&「:」&「A」&2 * i + 587).EntireRow。隱藏=假「。 – 314UnreadEmails
你的建議(這是這裏的主要問題)的問題是即使取消隱藏兩行也只能在循環的第一步中工作。如果我告訴它每次取消隱藏兩行,那麼你會得到這個:循環1-取消隱藏行1和2;循環2-取消隱藏第2行和第3行;循環3-取消隱藏行3和4.我需要它像這樣:循環1-取消隱藏行1和2;循環2-取消隱藏第3行和第4行;循環3-取消隱藏第5行和第6行 –
Idk如果甚至完全改善了代碼。但作爲一個觀點,你可以重寫內部的'if'語句來替代使用布爾邏輯:'Sheet3.Rows(i + 586).EntireRow.Hidden =(Sheet3.Rows(i + 586).EntireRow.Hidden And Sheet1 .Rows(i).EntireRow.Hidden)' – chancea