[853] 日付変更
はっさん [2024/07/19 18:21:14]
いつもお世話になっております。
便利なエディターをご利用させていただき感謝いたします。
教えていただきたい日付変更がございます。
Date.cmsはダウンロード済みです。
20列目に日付が入っていた場合
12列目にその日付の4日前の日付を入れる
20列目に日付がない場合は
12列目に明日の日付を入れるという
マクロがなかなかできませんでした。
教えていただければ幸いです。
よろしくお願い致します。
Re: [853] 日付変更
あすかぜ [2024/07/19 21:15:48]
次のようなマクロでどうでしょうか。
20 列目が空欄の場合は明日の日付を 12 列目に入れ、それ以外の場合は 20 列目の 4 日前の日付を 12 列目に入れるようにしています。
import { addDay, format } from "Date.cms";
today = format(GetYear(), GetMonth(), GetDate());
tomorrow = addDay(today, 1);
for (y = 1; y <= Bottom; y++) {
if ([20,y] == "") {
[12,y] = tomorrow;
} else {
[12,y] = addDay([20,y], -4);
}
}
試してみてください。
Re: [853] 日付変更
はっさん [2024/07/23 16:49:26]
早速のご返信ありがとうございます。
試してみたところ、
>20列目に日付が入っていた場合
>12列目にその日付の4日前の日付を入れる
57441/08/26のように全然違う数字がでてきました。4日前でもなく2024年でもなく日付としては50日くらい足されているようです。
どこかの列の数字を引っ張ってきているのかと思いましたが
57441という数字がありませんでした。
ちなみに日付のスラッシュをとることは可能でしょうか。
たびたびすいません。
よろしくお願い致します。
Re: [853] 日付変更
あすかぜ [2024/07/23 22:12:08]
前回のマクロは、「年/月/日」というスラッシュを使った形式しか扱うことができません。
「20240723」のようにスラッシュのない日付があった場合、年=不明、月=不明、日=20240723 という扱いになり、
今月の最初から 20,240,723 日後の日付に変換されて 57441 年になってしまいます。
20 列目からスラッシュのない日付を読み取り、12 列目にスラッシュのない日付を書き出すように書き換えてみました。
こちらのマクロでどうでしょうか。
import { addDay, format } from "Date.cms";
today = format(GetYear(), GetMonth(), GetDate());
tomorrow = addDay(today, 1).replaceAll("/", "");
for (y = 1; y <= Bottom; y++) {
if ([20,y] == "") {
[12,y] = tomorrow;
} else {
d = format([20,y].substring(0, 4),
[20,y].substring(4, 6),
[20,y].substring(6, 8));
[12,y] = addDay(d, -4).replaceAll("/", "");
}
}
Re: [853] 日付変更
はっさん [2024/07/24 15:29:24]
ありがとうございます!
完璧にできました!感謝です。ありがとうございました。
お引き続きどうぞよろしくお願い致します。