私はhh:mm AM/PMからhh:mm(24h)に時間形式を変換するのに問題があります。 列がテキストで整形されるので、数値書式プロパティを適用することは全く機能しません(単に何もしません)。Powershell - 非常に遅いExcelフォーマット
しかし、私は "= 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枚と1シートあたり約100行が含まれています。プロセス全体が完了するまでに20分以上かかります。
ここで私は何が間違っていましたか、どうすれば最適化できますか?
これでも助けが必要ですか? – TravisO
私はいくつかのyesを得ることができますので、今のところ私のalgorythmはまだ痛いほど遅いです – Marc
私はあなたが最新のPowershell(v5)を使用していると仮定しています。 〜3,700行はあまりたくさんではなく、Powershellはデータをかなり高速に読み取ることができます。ここにあなたが使っていない他のワークシートはありますか? Powershellは文書全体を解析しなければならず、膨大な量のデータがある場合でも未使用の場合でも処理速度が大幅に低下します。 – TravisO