在PowerShell中,我正在尝试将Excel 2013中的单元格格式从常规更改为数字,但由于单元格值为a,格式不适用以文字形式存储的号码。
如果我正常使用Excel并看到绿色三角形,我可以选择所有并将带有错误的所有单元格转换为单击一个数字。我希望有一些程序化的方法来做到这一点。
我看到的一个解决方案是在更改格式后将单元格的值复制回自身:
$cell.NumberFormat = "0"
$cell.Value() = $c.Value()
但是当应用于整个UsedRange时,这会非常慢。还有更好的选择吗?
答案 0 :(得分:1)
好的,这是一个非常快的方法。我们要做的是找到UsedRange
之后的第一个空白行,然后获取该行中的第一个单元格。然后我们将该单元格设置为数值1,并复制该单元格。然后我们使用PasteSpecial
方法,让它对UsedRange执行Multiply操作。这会将所有内容转换为数字。然后我们删除在此过程中填充的行,并且您已全部设置。
$XL = New-Object -ComObject Excel.Application
$XL.Workbooks.Open($File)
$BlankCell = $XL.ActiveSheet.Rows.Item(($($XL.ActiveSheet.UsedRange.Rows)[-1].Row+1)).Cells.Item(1)
$BlankCell.Value2 = 1
$BlankCell.Copy()
$XL.ActiveSheet.UsedRange.PasteSpecial(-4163,4)
$BlankCell.EntireRow.Delete()
XlPasteType Enumeration Reference用于-4163引用,XlPasteSpecialOperation Enumeration Reference用于PasteSpecial操作中的4引用。