[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付の変換がうまくいかない』(ねんね)
強引にとはどのようになさったのでしょう? DATE関数を使用することで、日付認識させることは可能ですし、 CONCATENATE関数に「--」や「*1」をすることでシリアル値化させる事が出来ますので TEXT関数で、日付にすることも出来ます。 どちらにせよ、どのような数式かを提示いただいたほうが、レスが付きやすいと思います。 (キリキ)(〃⌒o⌒)b
コンセントレート関数ってどんな関数でしょう? (seiya)
多分、、、 CONCATENATE(コンケイトネイト)だと思います。 (キリキ)(〃⌒o⌒)b
あっ!なるほどですね... キリキさん、勝手に修正しました (seiya)
そっちが正式名称でしたか・・・ ありがとうございます^^ (キリキ)(〃⌒o⌒)b
例えば、下記のような表だとして、、、 [A] [B] [C] [D] [1] 2006 2 11 2006/02/11 D1 に、 =TEXT(--(A1&"/"&B1&"/"&C1),"yyyy/mm/dd") =TEXT((A1&"/"&B1&"/"&C1)*1,"yyyy/mm/dd") =TEXT(--CONCATENATE(A1,"/",B1,"/",C1),"yyyy/mm/dd") =TEXT(CONCATENATE(A1,"/",B1,"/",C1)*1,"yyyy/mm/dd") などと入力すると、シリアル値で計算され日付認識になります。 勿論、年数のところはセルから出なく、数式に直接 "2006" としてもOK。 (キリキ)(〃⌒o⌒)b
衝突しちゃいましたが、せっかくなのでそのまま載せます。
CONCATENATE関数はそのヘルプに 「複数の文字列を結合して 1 つの文字列にまとめます。」 とあります。 つまり、この関数を使って表示された結果が「文字列」なのです。
セルの書式設定が標準の時に [A] [B] [C] [D] [1] 2007 1 1 2007/1/1 D1に「=CONCATENATE(A1,"/",B1,"/",C1)」とすると 上でD1に表示されている結果になります。 文字列なので、左詰で表示されます。
文字列ですが、無理矢理演算させようとする(--:-1を二つかける or *1:+1を一つかける) D1に「=--CONCATENATE(A1,"/",B1,"/",C1)」とすると と、エクセル君は 「文字列だけど・・・数値なの?日付っぽいよね。日付で良いよね」 D1の表示は「39083」と言うシリアル値に変更されます。 (エクセル君は日付を「シリアル値」と言う値で管理しているのです。) そして、表示形式を「日付」に変更すれば、私たちが目にして分かる日付に 変えて表示してくれます。 こうなると、値なので右詰で表示されますよね。
ちなみに、TEXT関数も「文字列」になってしまいますので、 並べ替えを考えるなら表示の指定を「yyyy/mm/dd」の様にしておく必要があります。 (2007/01/01 の様な表示)
月日を入れると年が勝手に付加されてしまうのは仕方がないので ●後から2006に変更したいセルを選択して、メニュー・編集(E)→置換(E)で 一気に置換してしまう ●事前にパソコンの日付を1年ずらす とか・・・・
「この様なときは前の年」と言う明確なルールが有れば 入力はその年だけど、関数を使ってその隣に勝手に変更した日付にする なんて事は出来るかもしれません。
例えば、 「入力日を入力する列を設けて、その日付より後だったら前の年」とか。 [A] [B] [C] [1] 入力 変更後 入力日 [2] 2007/1/1 2007/1/1 2007/2/11 [3] 2007/3/1 2006/3/1 2007/2/11 B2に「=IF(A2>=C2,DATE(YEAR(A2)-1,MONTH(A2),DAY(A2)),A2)」 こんな式を入れて、B3にコピー。
「列は固定されているので、必ず一年前になればよいから 何とか入力した途端に変更されないかしら」 なんて事は、可能ですがマクロになりますので・・・ 方法が知りたい場合、そのように仰れば どなたかが サンプルを作って下さると思いますよ。
(HANA)@あ、そのままじゃなかった。(笑)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.