我有一张大量的Excel工作表,目前有100多列和84行。我希望能够切换一个特定的行,只有显示文本的列,所有其他列都隐藏。例如:
TITLE |COLUMN 1|COLUMN 2|COLUMN 3|COLUMN 4|COLUMN 5|
ROW 1 | X | | X | | X |
ROW 2 | | X | X | X | |
当我“切换”ROW 1时,只会显示第1,3,5列,而第2,4列会隐藏,所有其他行也会隐藏。
当我“切换”ROW 2时,只显示第2,3,4列,第1,5列将隐藏,所有其他行也将隐藏。
编辑:行1,2,3和列A,B必须始终可见。
可以这样做,你建议采用什么方法?即:单选按钮,复选框等...?
答案 0 :(得分: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
答案 1 :(得分:0)