2011-06-26 37 views
0

我一直在寻找这个问题的答案,需要一些更多的细节。Excel - 确定单列数据中非数值结果的频率

https://stackoverflow.com/questions/5972947/frequency-of-strings-in-an-excel-column-pretty-sure-this-requires-vbscript/6482519#6482519

我看答案2号,由克里斯·尼尔森,使用数据透视表来确定每个结果的名称列的计数。两个问题,数据透视表中产生的“名称计数”列如何?其次,如果在数据透视表创建之后添加了另一个名称(即将Sarah添加到单元格A9),表格会自动更新吗?

我有一个非数值数据列将定期更新。我很难创建显示每个结果频率的数据摘要,并且规定当项目添加到列表中时摘要也会更新。看起来数据透视表是最好的解决方案,但我愿意接受其他建议。

回答

2

1.了解透视表

下面是几个环节,以帮助您更好地了解什么是数据透视表,以及如何使用它们:

您会在那里找到如何创建“计数名称”列。如果没有,请询​​问更多信息。

2.更新数据透视表

顺便说一句,您可以更新通过右键点击透视表的数据透视表数据,然后选择“更新”(也可以用惊叹号按钮) 。更多信息可以在这里找到:http://ulearnoffice.com/excel/pivot.htm(更新数据章节)。

3回答你的问题

透视表似乎是这里一个很好的解决方案。你应该尝试,如果它不起作用,请让我们知道,也许我们将能够帮助你。

1
  1. 您可以通过拖动“名称”字段复选框到透视表字段窗口中的值窗口创建“名称的计数”列。当我在我的Excel版本(2007)中执行此操作时,它默认为“计数名称”。如果您的说明中有其他说明,请左键单击“值”窗口中的字段,然后选择“值字段设置”。从那里您可以指定要显示Excel的名称的统计信息。

  2. 如果您添加数据,您可以通过更改数据源来手动更新数据透视表。或者(更好的选项),您可以使用工作表更改触发事件来自动更新数据透视表。这是一些VBA代码。

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    
    Dim names As Range 
    
    'Change 1 to number of your data column (A=1, B=2, ...) 
    If Target.Column = 1 Then 
        'Change "A1" to the first cell (header) of your column of data. Keep quotes. 
        Set names = ActiveSheet.Range("A1", ActiveSheet.Range("A1").End(xlDown)) 
    
        'Change "PivotTable1" to name of your pivot table. Keep quotes. 
        ActiveSheet.PivotTables("PivotTable1").ChangePivotCache _ 
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
        SourceData:=names, Version:=xlPivotTableVersion12) 
    End If 
    End Sub 
    

在Excel(按Alt + F11)打开VBA中输入验证码。在对象浏览器中,右键单击包含数据的工作表(列在Microsoft Excel对象下)。选择“查看代码”。粘贴代码,你应该设置。