Powershell - Excel格式化非常慢

时间:2016-10-13 16:25:55

标签: excel powershell datetime

我有一个excel文件,我无法将时间格式从hh:mm AM / PM转换为hh:mm(24h)。 由于列是以文本格式化的,因此应用数字格式属性根本不起作用(它什么都不做)。

但是我注意到公式" = TEXT(C1;" H:MM")"运作良好。 所以我构建了一个powershell脚本,它在每个工作表上循环,然后继续在新列中应用公式,以便创建更正的值:

$rows = $WorkSheet.UsedRange.Rows.Count
for ($i = 8; $i -le $rows ; $i++)
{
    $formula1 = '=TEXTE(C'+$i+';"H:MM")'
    $formula2 = '=TEXTE(E'+$i+';"H:MM")'
    $WorkSheet.Cells.Item($i,4).Formula = $formula1
    $WorkSheet.Cells.Item($i,6).Formula = $formula2
}

即使这个循环成功,但执行还需要很长时间。 我的Excel文件包含大约37张纸和每张大约100行。整个过程需要20多分钟才能完成。

我在这里想念的是什么,我该如何优化呢?

1 个答案:

答案 0 :(得分:-1)

你可以做这样的事情来加速这个过程。当然,你必须遍历你的床单。

Sub DoThis()

    Sheet3.Range("M:M").Select
    Selection.NumberFormat = "h:mm;@"
    Selection.FormulaR1C1 = Selection.Value

End Sub