2017-12-26 15 views
3

PowerShellスクリプトを使用してExcelブックを作成します。ワークブックは、2軸のチャートで構成されています。 1つの軸の数値書式は、ローカライズされたカスタムの日時形式に設定されます。文字列変数からExcel番号形式を割り当てる

標準フォーマットが長い日付形式の短いバージョンとして調製される:スクリプトが自動的に作成された軸のNumberFormatのメンバーを評価したNumberFormatがすでにローカライズされている場合は、別の文字列を使用しています

[string]$fmt = "MM/dd hh:mm" 

$axis.TickLabels.NumberFormat = $fmt 
01:
if ($axis.TickLabels.NumberFormat.Contains("JJJJ")) { 
    $fmt = "TT.MM. hh:mm" 
} 

最後に、スクリプトは、軸部材に文字列を代入しようとし

しかし、この形式は軸オブジェクトで受け入れられません。私が値を読み取った場合、私は「標準」を取得します。

$fmt = $axis.TickLabels.NumberFormat 
$axis.TickLabels.NumberFormat = $fmt 

がどのようにカスタムの日付時刻形式を設定することができます。

であっても、このコードは、標準の数値書式をリセットしますか?

編集: DE-DE "はTT.MM.JJJJのHH:MM" で局在化のための標準の日時形式。チャートが作成されている場合、Excelはこれをデフォルトとして使用します。その形式は、Excelのローカリゼーションでは不明な場合でもDE-DEに有効です。

$axis.TickLabels.NumberFormatLocal = $fmt 
+1

この数字の形式は「TT.MM」です。 hh:mm'、Excelでは有効な形式ではありません。 – cyboashu

+0

@cyboashuあなたのコメントは、ローカライズされていない(またはen-US)バージョンのExcelでは適切です。表示言語が別の値に設定されている場合は、他の有効な書式文字列を取得できます。 – harper

+0

@cyboashu GUIでこれを入力した場合、その日時は「27.12。13:45」と表示されます。しかし、スクリプトで設定する必要があります。 – harper

答えて

0

使用して設定/ローカライズされたフォーマットを取得します。

軸の種類をテキストに設定してから日付を追加し、その上にカスタム形式(時間ビット付き)を適用する必要があります。

これは動作します:期待通りかのように、自動/デフォルトにAXIXカテゴリを残す

$chart.Axes(1).CategoryType =2 
$axis= $chart.axes(1) 
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm" 

は、番号の形式が動作しません。

$axis= $chart.axes(1) 
$axis.TickLabels.NumberFormat = "DD.MM. hh:mm" 

数字の書式には時間の書式があり、散布図とは別に、軸でそれをサポートするものはありません。そのため、最初に軸のタイプを変更する必要があります。

2

問題は、番号の形式ではありません:NumberFormatLocal代わりNumberFormat

+0

私がCategoryTypeを設定するのではなくCategoryTypeを読んだ場合、すでに値2が得られています。データ列がx軸のソースであることは既に日付時刻の値のリストであるため、それは驚くことではありません。その背景に私はあなたの答えから助けを得ることができませんでした。とにかくありがとうございました。 – harper

関連する問題