これ何て呼びますか Part2

EXCEL(2000)についてお知恵を拝借致したく。
一つのセルに入っている20030605のような数字の羅列になっている日付データを別のセルに2003/06/05というスラッシュ入りの形式に変換して表示させたいのです。
セルの書式設定ではできません。
関数を使用して何かいい手はないでしょうか。

A 回答 (5件)

こんにちは



20030605が入っているセルがA1セルだとして、

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

でいいと思います。

もし、正しいシリアル値にするのであれば、

=DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,2)),VALUE(RIGHT(A1,2)))

とすれば、表示形式やさらに関数を追加して

=TEXT(DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,2)),VALUE(RIGHT(A1,2))),"yyyy/m/d")

のようにも使えます。

ご確認ください。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます。試してみます。

お礼日時:2003/06/05 14:53

数値は20030605というように8桁で表示されていれば関数を使用しなくても一括変更できます。

この数値を日付として認識させる方法は(あくまで8桁の場合です。)
データの入ったセルを選択し、データ→区切り位置を選択してそのまま2回次へ(何も変更する必要はありません。)から最後に日付を選択すれば日付に変更できます。
但し、日付形式としては2003/06/05ではなく、2003/6/5となってしまいますが。もし、2003/06/05が必要なら、セルの書式設定でユーザー設定からyyyy/mm/ddとすれ2003/06/05と表示されますが。
    • good
    • 1
この回答へのお礼

これはすごい。ただ、表示したい場所は大元のデータを引っ張ってくるための関数が入っており、大元のデータの書式はいじれないので、今回は使えないかもしれないんですが、感動的に簡単です。必ずどこかで使わせて頂きます。どうもありがとうございました。

みなさん、超特急でご回答頂き、ありがとうございました。まさかこんなに早く解決するとは思っていませんでした。しかもいろいろな方法を教えて頂いて、今回に限らず役立ちそうです。教えて頂いた中からどれが最適か検討させて頂きます。とても助かりました。感謝します。

お礼日時:2003/06/05 15:14

VBA使用の別解。

単に8桁の数値を日付に変換するだけなら、下記で可能。(表示書式は環境に依存)

DateSerial((Arg \ 10000), ((Arg Mod 10000) \ 100), (Arg Mod 100))
    • good
    • 0
この回答へのお礼

前の方と同じお礼になってしまいますが、今のところVBAを使用するにはわたしはちょっと力不足です。でもいずれは、と思ってますので、そのとき参考にさせて頂きます。どうもありがとうございました。

お礼日時:2003/06/05 15:00

VBAなら、



Format$(Arg, "@@@@\/@@\/@@")

Mid$やLeft$、Right$を駆使するより簡潔でエレガントな解法です。
    • good
    • 0
この回答へのお礼

VBAはちょっと自信がないのですが、いずれVBAを取り入れて再作成したいと思っている表なので、そのときに是非参考にさせていただきます。ありがとうございました。

お礼日時:2003/06/05 14:56

関数ででしたらこちら。



参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=563077
    • good
    • 0
この回答へのお礼

ご紹介頂いたページの方法でできること確認できました。早々にありがとうございました。

お礼日時:2003/06/05 14:46

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


おすすめ情報