[[20070211141144]] 『日付の変換がうまくいかない』(ねんね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付の変換がうまくいかない』(ねんね)
エクセルで日付を入力すると、2007とか2006とかが自動で日付情報として入ってくるため、コンセントレートで2007となってしまうところを強制的に2006と/と月と/と日付を入力しました。
それぞれに入力したものをコンセントレート関数を使い例えば2006/1/20などの日付情報に強引につくりました。
 エクセルで通常通り日付認識された2006/1/20のようなデータとを並び替えするのにうまく行きません。
 どなたか日付データと無理に作りこんだデータをうまく並べ替える方法をご存知の方いらっしゃいませんか。助けてください。

 強引にとはどのようになさったのでしょう?
 
 DATE関数を使用することで、日付認識させることは可能ですし、
 CONCATENATE関数に「--」や「*1」をすることでシリアル値化させる事が出来ますので
 TEXT関数で、日付にすることも出来ます。
 
 どちらにせよ、どのような数式かを提示いただいたほうが、レスが付きやすいと思います。
 
 (キリキ)(〃⌒o⌒)b

 コンセントレート関数ってどんな関数でしょう?
 (seiya)

 多分、、、
 CONCATENATE(コンケイトネイト)だと思います。
 
 (キリキ)(〃⌒o⌒)b

 あっ!なるほどですね...
 キリキさん、勝手に修正しました
 (seiya)

 そっちが正式名称でしたか・・・
 ありがとうございます^^
 
 (キリキ)(〃⌒o⌒)b

dete関数でできました。ありがとうございました。
ちなみにCONCATENATE関数に「--」や「*1」をすることでシリアル値化させる事が出来ますとは、どのようにするということでしょうか、すみません。勉強させてください。
また、エクセル入力時に去年の1月と入力しようとしてもエクセルは今年の1月としてしか日付の認識がされません。これは、入力時にどこか設定すれば年の入力を固定でききるのでしょうか。もちろん2006年と入力すればよいですが、できれば面倒なので入力せずになにか設定すれば自動で年を固定することはできないでしょうか。

 例えば、下記のような表だとして、、、
 
	[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.