Excel PowerPivot - 处理分组行
Excel PowerPivot - Working with grouped rows
我正在处理一个非常大的 excel sheet,它基本上是一个用户列表以及他们使用的应用程序。现在的问题是有超过 60000 个用户,每个用户至少有 10 个应用程序。所以它是一个巨大的 sheet。每周 2-3 次,我需要提取某些特定用户使用的应用程序的详细信息。有时是 2 个用户。有时是 10 个用户。但是由于价差 sheet 的大小,这个 activity 花了我很长时间(1-2 小时)。
现在,sheet 的结构如下。
StaffId Name DeviceNo Location ApplicationCount+ AppID Application Name
12345 John Doe DSK-982333 Mespil Road 24+
123 Adobe Acrobat
234 WinZip
345 Google Chrome
这里的+号表示分组的行。
我是否可以使用 PowerPivots 提取这些信息?
一种方法是:
- 在新工作簿中创建电子表格的副本。
- 在工作簿中添加另一个工作表,其中包含您要筛选的人员的 StaffId(在 "A" 列中)。
在VBA编辑器中,插入一个新模块并添加以下代码:
Sub FilterForUsersOfInterest()
Dim BigSheet As Worksheet
Dim ListSheet As Worksheet
Dim lastCell As Range
Set BigSheet = ActiveWorkbook.Sheets("ListOfApplications") 'Change the sheet name here to match your main data tab
Set ListSheet = ActiveWorkbook.Sheets("ListOfUsers") 'Change the sheet name here to match your sheet with the users of interest this time round
'Find the last used row on the worksheet
Set lastCell = BigSheet.UsedRange.Item(BigSheet.UsedRange.Cells.Count)
'Copy the values for Staff Id down all the rows
For iRow = 2 To lastCell.Row
If BigSheet.Range("A" & iRow) = "" Then
BigSheet.Range("A" & iRow) = BigSheet.Range("A" & iRow - 1)
End If
Next iRow
'Now work your way back up the rows, deleting any rows where the StaffId is not found in the current list of "users of interest"
For iRow = lastCell.Row To 2
If Application.WorksheetFunction.CountIf(ListSheet.Range("A:A"), BigSheet.Range("A" & iRow)) = 0 Then
BigSheet.Range("A" & iRow).EntireRow.Delete
End If
Next iRow
End Sub
我正在处理一个非常大的 excel sheet,它基本上是一个用户列表以及他们使用的应用程序。现在的问题是有超过 60000 个用户,每个用户至少有 10 个应用程序。所以它是一个巨大的 sheet。每周 2-3 次,我需要提取某些特定用户使用的应用程序的详细信息。有时是 2 个用户。有时是 10 个用户。但是由于价差 sheet 的大小,这个 activity 花了我很长时间(1-2 小时)。
现在,sheet 的结构如下。
StaffId Name DeviceNo Location ApplicationCount+ AppID Application Name
12345 John Doe DSK-982333 Mespil Road 24+
123 Adobe Acrobat
234 WinZip
345 Google Chrome
这里的+号表示分组的行。
我是否可以使用 PowerPivots 提取这些信息?
一种方法是:
- 在新工作簿中创建电子表格的副本。
- 在工作簿中添加另一个工作表,其中包含您要筛选的人员的 StaffId(在 "A" 列中)。
在VBA编辑器中,插入一个新模块并添加以下代码:
Sub FilterForUsersOfInterest() Dim BigSheet As Worksheet Dim ListSheet As Worksheet Dim lastCell As Range Set BigSheet = ActiveWorkbook.Sheets("ListOfApplications") 'Change the sheet name here to match your main data tab Set ListSheet = ActiveWorkbook.Sheets("ListOfUsers") 'Change the sheet name here to match your sheet with the users of interest this time round 'Find the last used row on the worksheet Set lastCell = BigSheet.UsedRange.Item(BigSheet.UsedRange.Cells.Count) 'Copy the values for Staff Id down all the rows For iRow = 2 To lastCell.Row If BigSheet.Range("A" & iRow) = "" Then BigSheet.Range("A" & iRow) = BigSheet.Range("A" & iRow - 1) End If Next iRow 'Now work your way back up the rows, deleting any rows where the StaffId is not found in the current list of "users of interest" For iRow = lastCell.Row To 2 If Application.WorksheetFunction.CountIf(ListSheet.Range("A:A"), BigSheet.Range("A" & iRow)) = 0 Then BigSheet.Range("A" & iRow).EntireRow.Delete End If Next iRow End Sub