在Excel中以编程方式删除“此单元格中的数字被格式化为文本或在撇号前面”

在PowerShell中,我试图将Excel 2013中单元格的格式从常规改为数字,但由于单元格值是以文本forms存储的 数字 ,因此格式不适用。

如果我正常使用Excel并看到绿色的三angular形,我可以select全部 ,并将所有错误单元格转换为一个数字在一个单一的点击。 我希望有一些程序化的方法来做到这一点。

我见过的一个解决scheme是在更改格式后将单元格的值复制回自己。

$cell.NumberFormat = "0" $cell.Value() = $c.Value() 

但是当应用到整个UsedRange时,这个工作非常慢。 有更好的select吗?

好吧,这是一个非常快的方法。 我们要做的是findUsedRange的第一个空白行,并获取行中的第一个单元格。 然后我们将该单元格设置为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() 

-4163引用的XlPasteType枚举引用和PasteSpecial操作中的4引用的XlPasteSpecialOperation枚举引用 。