Excelに記載している日付表示を変更したい

いつもお世話になっております。
Excelをデータテーブルで読み込み、
列「製造年」に記載されている文字が 2023年1月 ならば 202301 のように
日付表示を変更したいです。

string型の列「date」を追加し、その列に対して以下の通り処理しましたが、
エラー:「文字列は有効な DateTime ではありませんでした。」
となりました。
解決方法を教えて頂きたくよろしくお願い致します。

@miwa_yamamoto

Can you please try this…

DateTime.ParseExact(row("Date").ToString.Trim, "MMMM yyyy", System.Globalization.CultureInfo.InvariantCulture ).ToString("yyyyMM")

To be sure once print the date value that is being extracted and change the input format accordingly…MMMM yyyyy is for January 2023 format

Hope this helps

Cheers

1 Like

こんにちは

やり方はいくつかありますが

正規表現

System.Text.RegularExpressions.Regex.Replace(yourString,"(\d+)年(\d+)月",Function(m) m.Groups(1).Value+m.Groups(2).Value.PadLeft(2,"0"c))

DateTime変換 日本用のカルチャ設定が出来ていれば

CDate(yourString).ToString("yyyyMM")
1 Like

いつもありがとうございます。
こちらで試すと、結果が、27445 と出てきました。

また、こちらで試すと、このようなエラーになりました。
image

どこの設定を間違えたのか分かりますでしょうか。

こんにちは

入力値が
2023年1月
ではなく
27445
になっています。

まずは元データを確認してもらえますでしょうか?

1 Like

UiPathではなくEXCELの操作(式の記述)だけでできそうですがUiPathを使う理由があるのでしょうか・・・

いつもありがとうございます。

今、現在は、データテーブルを読み込んで列全部を繰り返し処理では、
処理時間が掛かってしまうので、
セルを読み込み で こちらのセルを読み込んでいました。

image

image
ご指摘を受けて、中身を確認すると、日付と思っていたものが数字でした。
image

こんにちは

エクセルのシリアル値ですね。以下お試し下さい

image

DateTime.FromOADate(CDbl(yourString)).ToString("yyyyMM")
1 Like

お世話になっております。
元データのExcelを読み込み、中身を色々変更し、他のアプリケーションへインポートする処理を自動で行おうと思っており、Excel変更内容の1つが日付の変更でした。
仰られる通り、Excelでしてしまえば早い処理ですね。

いつもありがとうございます。
1セルで試した結果、無事にyyyyMM表記になっていました。
ありがとうございます。
列全てに繰り返しで試してみます。

いつもお世話になっております。
列の中に、日付ではなく、 - のセルもあり、そこでエラーになりました。
ーは、スルーし、日付部分のみを表示変更したいので、
ーかどうかで条件分岐も思ったのですが、
2000行程あるので、出来れば、繰り返し各行ではなく、
以前に教えて頂いた invoke code を使用し、繰り返そうと思っておりました。
何か方法はありますでしょうか。

見た目だけで良ければFormat Cellsで書式だけ書き換える方法もありますが...

image

実データ書き換えですと、InvokeCodeかテーブルが小さければ、DataTable.LoadDataRowを使うことになると思います。

1 Like

いつもありがとうございます。
元データを読み込み、中身の変更、追加後、専用アプリへのインポートを希望しております。
インポートする際のデータの表示をyyyyMMとしたく、元データのExcel上にデータを戻すことはないので、実データを変更しないといけないわけではないのですが、
どのようにするのがベターとなりますでしょうか。

こんにちは

InvokeCodeを使って、中身は

dt.AsEnumerable.Where(Function(r) Double.TryParse(r("製造年").ToString,New Double)).ToList().ForEach(
Sub(r)
    r("製造年")= DateTime.FromOADate(CDbl(r("製造年").ToString)).ToString("yyyyMM")
End Sub
)

dtはIN/OUT型のDataTable型引数として定義してください。

1 Like

ありがとうございます。
image
このようなこのようなエラーになったのですが、
ーは、外して日付表示を変えて、-の行を追加することになりますでしょうか。

これはどちらで発生したものでしょうか?上記のInvokeCode内のコードではこれは出ないように思えますが...

1 Like

いつもお世話になっております。
大変失礼いたしました。
スタートしていない状態でした。

お陰様で無事に表示が変わっておりました。
本当にありがとうございました。

image

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.