2017-03-09 44 views
0

我有一個龐大的Excel工作表,目前有100列和84行。我期望能夠切換特定的行,並只有文本顯示的列,所有其他隱藏的列。例如:只顯示X的列

TITLE |COLUMN 1|COLUMN 2|COLUMN 3|COLUMN 4|COLUMN 5| ROW 1 | X | | X | | X | ROW 2 | | X | X | X | |

當我「切換」第1行僅列1,3,5將展示和列2,4會隱藏,所有其他行也將隱藏。

當我「切換」行2只有列2,3,4將顯示和列1,5將隱藏,所有其他行也將隱藏。

編輯:行1,2,3和列A,B必須始終可見。

可以這樣做,你建議什麼方法?即:單選按鈕,複選框等...?

+0

請問你想同時做兩行?像「切換行1和2」並顯示所有這些列? (也就是說第6列只有第1行中的「x」,它會保持該列可見)。 – BruceWayne

+0

它會使事情變得簡單,但不是強制性的。我最終會努力使事情既走向雙向,所以我可以切換Column#並只顯示在該列中具有X的行。 – Dazzled

+1

如果您的表格被換位,您可以使用一個簡單的過濾器來完成此操作,使用所有Excel內置的過濾複選框,並且事情會使它更容易! – Wolfie

回答

0

我同意@Wolfie - 如果你轉置的數據,它會使它更容易更容易做。然而,這是一個工作的一點樂趣,所以我有以下宏:

Sub toggleRows() 
Dim mark As String 
Dim rng As Range, cel As Range, totalRng As Range 
Dim rowNum As String 
mark = "x" 

rowNum = InputBox("What ROW (#) do you want to filter?") 
rowNum = Trim(rowNum) 
If rowNum = "" Then Exit Sub 

unhideAllColumns 
Set totalRng = Range(Cells(4, 3), Cells(ActiveSheet.UsedRange.Rows.Count, Cells(Columns.Count).End(xlToLeft).Column)) 
totalRng.Select 

For Each cel In totalRng 
    If cel.Row <> rowNum Then 
     cel.EntireRow.Hidden = True 
    Else 
     cel.EntireRow.Hidden = False 
     If cel.Value = "" Then ' changed from cel.Value <> mark 
      cel.EntireColumn.Hidden = True 
     Else 
      cel.EntireColumn.Hidden = False 
     End If 
    End If 
Next cel 

End Sub 

,並顯示所有列:

Sub unhideAllColumns() 
Cells.EntireColumn.Hidden = False 
Cells.EntireRow.Hidden = False 
End Sub 
+0

有沒有辦法讓它只顯示特定的行並隱藏所有其他行?另外,如何將「x」的值更改爲任何值?我嘗試使用*,並沒有工作,因爲一些列有額外的文字。 – Dazzled

+0

@Dazzled - 換句話說,如果單元格中有任何**值,則顯示並隱藏所有*空格*單元格? – BruceWayne

+0

是的,我想。同時保持行1,2,3和列A,B始終可見,因爲我擁有那些主要信息。 – Dazzled

0

對於轉置的解決方案,這裏的步驟:

  1. 選擇數據

enter image description here

  1. 複製(Ctrl + C)。在原始數據下方的列A中選擇一個單元格。粘貼特殊移調

enter image description here

enter image description here

  • 刪除原始數據
  • enter image description here

  • 從數據功能區添加過濾器(Alt + D + F + F)
  • enter image description here

  • 拉下ROW 1下拉列表和過濾器上的X
  • enter image description here

    +0

    我確實很感激這個迴應,在給它一個嘗試之後我不知道我是否喜歡這個格式。它是否需要切換行和列? – Dazzled

    +0

    如果你想使用內置的過濾器,你必須轉置。如果你不想轉置,你將不得不推出自己的。它看起來像@BruceWayne給你一個解決方案。 –