Excel 使用powershell筛选列
下面的代码是一个VBA代码,它通过过滤列a将数据拆分为不同的工作表。如何将脚本转换为powershellExcel 使用powershell筛选列,excel,powershell-3.0,Excel,Powershell 3.0,下面的代码是一个VBA代码,它通过过滤列a将数据拆分为不同的工作表。如何将脚本转换为powershell Sub Test() Dim Sh As Worksheet Dim Rng As Range Dim c As Range Dim List As New Collection Dim Item As Variant Dim ShNew As Worksheet Application.ScreenUpdating = False ' ***
Sub Test()
Dim Sh As Worksheet
Dim Rng As Range
Dim c As Range
Dim List As New Collection
Dim Item As Variant
Dim ShNew As Worksheet
Application.ScreenUpdating = False
' *** Change Sheet name to suit ***
Set Sh = Worksheets("Sheet1")
Set Rng = Sh.Range("A2:A" & Sh.Range("A65536").End(xlUp).Row)
On Error Resume Next
For Each c In Rng
List.Add c.Value, CStr(c.Value)
Next c
On Error GoTo 0
Set Rng = Sh.Range("A1:G" & Sh.Range("A65536").End(xlUp).Row)
For Each Item In List
Set ShNew = Worksheets.Add
ShNew.Name = Item
Rng.AutoFilter Field:=1, Criteria1:=Item
Rng.SpecialCells(xlCellTypeVisible).Copy ShNew.Range("A1")
Rng.AutoFilter
Next Item
Sh.Activate
Application.ScreenUpdating = True
End Sub
很抱歉回复晚了,我编辑了我的脚本,没有像我上一篇文章中那样的错误。我还可以在A列中看到过滤器图标
$Excelpath = "c:\sccm\book1.xls"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$ExcelWorkBook = $Excel.Workbooks.Open($ExcelPath)
$ExcelWorkSheet = $Excel.WorkSheets.item("Sheet1")
$ExcelWorkSheet.activate()
$Excel.Worksheets.Item("Sheet2").Delete() #Delete Sheet 2
$Excel.Worksheets.Item("Sheet3").Delete() #Delete Sheet 3
$xlCellTypeLastCell = 11
$xlCellTypeVisible = 12
$Range = $ExcelWorkSheet.UsedRange
$Range.Font.bold = "true"
$Lastcell = $Range.SpecialCells($xlCellTypeLastCell)
$LastRow = $Lastcell.row
$headerrange = $ExcelWorkSheet.Range("A1")
$headerrange.Autofilter(1,"A1")
从这里开始,我不知道如何继续
Thanks
如果VBA脚本/宏中已经有工作代码,为什么需要将其更改为PowerShell?此外,您需要比“it失败”更具描述性-描述发生了什么,给出任何错误消息,等等。您是如何运行的?我看到的最直接的问题是,您试图在创建Excel应用程序对象(以及其他一些变量)之前使用它。但我正在尝试学习自动筛选的工作原理,并使用powershell解析excel中的每一行。也许它对我处理不同的报告很有用。错误MSG是:不能对空值表达式调用方法。在第5行,char:1+$Lastcell=$Usedrange.SpecialCells($xlCellTypeLastCell)方法调用失败,因为[System.String]不包含名为“Range”的方法。在第14行char:1+$Filter=$worksheet1.Range(“A1”).Select()不能对空值表达式调用方法。在第15行char:1+$Filter.Autofilter()| Out null将错误消息放在帖子中。在评论中很难阅读。你还没有回答你是如何运行脚本的。我很惊讶3号线没有出错。