アプリ版:「スタンプのみでお礼する」機能のリリースについて

csvで貰ったデータをエクセルで開きます。
すると、生年月日は文字列でS500101の形で入力されています。

A1にデータが有る場合、関数を使って=LEFT(A1,3)&"/"&MID(A1,4,2)&"/"&RIGHT(A1,2)
でA2にS50/01/01と表示されます。

このデータをさらに、値複写で別のフィールドにコピーしてワードの差し込みフィールドに表示させると、なぜかS25/01/01と25年ずれて表示されます。
(別のフィールドにコピーするのは、いろいろな形で生年月日のデータを貰うので、一旦エクセルで認識できる形式にした後、差し込みフィールドに指定したセルに値複写しています。)

エクセル、ワード、とも、2007です。

A 回答 (3件)

値複写で別のフィールドにコピーした結果はどのように表示されていますか?



ワードの差し込みフィールドは複雑な式になっていますので、差し込みフィールドに直接表示させる場合はご注意ください。
    • good
    • 0

質問のデータの形式だと全角になっていますが、貰ったデータは年号の


英字と半角数字で6桁の組み合わせですよね?
(データは半角全角の区別はExcelなどでは必然なので)

質問にある関数だと日付形式もどきにしていますが、そのままでは日付
として認識してくれませんので(文字列なので)、少し修正が必要です。

 =LEFT(A1,3)&"/"&MID(A1,4,2)&"/"&RIGHT(A1,2)

これを

 =(LEFT(A1,3)&"/"&MID(A1,4,2)&"/"&RIGHT(A1,2))*1

のように全体に「1」を乗算することで、文字列を数値として認識して、
セルの書式設定での日付として認識してくれます。

これで差し込みフィールドにて表示させた場合にも、日付として正しく
表示してくれると思います。
ちなみに、差し込みフィールドそのものは単純なものですから、複雑な
式という認識は正しくないですよね。

この回答への補足

すみません、投稿に際して大文字ですが、実際は小文字です。
さらに分かったことがあります。
前回は1980/08/08の生年月日をワード上で昭和53年8月8日と表示させたかったので{MERGEFIELD "生年月日"\@ "ggge年M月d日"}と設定していました。{MERGEFIELD "生年月日"}にすると25年のずれはなくなりました。
どちらの形式でも対応できる差し込みフィールドの設定はどうすればいいでしょうか?

補足日時:2014/08/02 05:42
    • good
    • 0

No.2の回答者です。



前の回答でも説明していますが、質問にある関数だと日付形式もどきに
なっているだけであって、正しい和暦として認識できないものです。
理由は、年としての「S25」や「S55」は単なる文字列であって、それらを
和暦として正しく認識することがWordにはできません。

質問にある関数で「S55/08/08」と差し込まれていたとしても、これらは
「昭和55年8月8日」ではなく、西暦としての「1955/08/08」としての日付で
Wordは認識します。
S55が昭和55年ではなく、「S」を無視した55年が1955年となるのです。

ですから、西暦の下2桁と昭和を示す年号との下2桁の差25年分のずれが
生じるのです。

No.2で回答したように、質問の関数に1を乗算するようにして、日付で
Excel側でも認識できるようにさせれば、ずれは生じません。

差し込み印刷で、和暦のスイッチを追加してもしなくても正しく認識を
したいなら、乗算した関数の列を用意して、それを利用します。
例: {MERGEFIELD "生年月日2" \@ "ggge年M月d日" }

日付のスイッチがないものも利用したいなら、質問にある関数で用意を
したデータ列を指定して、それで「S55/08/08」での形式の日付ではない
テキストとしてだけ認識できるデータ列を差し込みます。
例: {MERGEFIELD "生年月日"}

どちらにも対応した差し込みフィールドは無理なので、別々に用意して
利用するようにして下さい。

ちなみに私が示した乗算したほうの差し込みフィールドなら、スイッチ
を書き換えるだけで質問の「S55/08/08」の形式にすることは可能です。
例: {MERGEFIELD "生年月日2" \@ "ge/M/d" }

http://www.nurs.or.jp/~ppoy/access/etc/etc011.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!