Excel - 创建更复杂表格的简化"视图"(宏?)

Seb*_*ian 3 excel vba excel-vba

简介:我的excel工作簿中的Sheet1包含一个"复杂"表,其中包含大约130列和2,5k行.

第一期: 基于此表,我想在Sheet2中创建一个简化表("View"),它仅包含Sheet1中表格中的列A,C,F,G,I.

当Sheet1中的表格被更改时,例如以编辑的单元格形式或插入新行的形式,应该更新这个新的"简化"表.另一种接近这种方法的方法是每次用户保存工作簿或类似的东西时自动生成Sheet2中的表.

第二个问题: 在F列中包含特定值的行,可以说值"XXX",不应包含在Sheet2表中.

我对更高级的"高级"excel功能并不是很有经验,但在研究了这个问题后,我倾向于通过创建一个宏来接近它.这个假设是否正确?或者excel是否有任何其他功能来执行此任务?

如果创建宏是最好的方法,那么任何帮助将非常感激.我正在玩一个带有4行测试表的arround,并将其中的两个复制到一个新的工作表中.但我遇到了如何自动执行此操作并排除具有特定值的行(问题#2)的问题

Rea*_*idy 5

请尝试以下代码:(放置在简单的工作表模块中)

Private Sub Worksheet_Activate()

    Application.ScreenUpdating = False

    With ActiveSheet
        .UsedRange.ClearContents
        '// Copy from data sheet too presentation sheet
        Sheet1.UsedRange.Copy .[a1]
        '// Filter all rows with xxx
        .Range("F:F").AutoFilter Field:=1, Criteria1:="xxx", Operator:=xlAnd
        '// Delete all rows with xxx excluding the header
        .UsedRange.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        '// Remove the autofilter
        If .AutoFilterMode Then .AutoFilterMode = False
        '// Delete unwanted columns
        .Range("B:B,D:E,H:H").Delete
     End With

    Application.ScreenUpdating = True

End Sub
Run Code Online (Sandbox Code Playgroud)