
日付入力で、スラッシュあり・なしのいずれにも対応できる設定について質問します。
Excelで日付を入力する欄に、例)「2010/8/31」と表示させたいのですが、入力する際の2つのパターンに対応させる方法がわかりません。
1つめは、「8/31または2010/8/31」とスラッシュを入れて入力
2つめは、「20100831」と数字だけを続けて入力
どちらか1つなら、セルの書式設定で対応できるのですが、そうすると、もう一方がエラーになります。
いずれの場合にも対応できるようにしたいのですが、ご存じの方がいらしたらぜひ教えてください。
No.2ベストアンサー
- 回答日時:
一つ目は日付の様に見えるしExcelは日付として扱うけど、二つ目
は誰が見ても二千十万八百三十一という数値であって日付じゃない
でしょう。
見た目だけ誤摩化すだけでデータとしては使い物にならないことを
受け入れるなら、ユーザー書式の条件式を使って巨大すぎる数値の
場合に書式を変える手があります。
[>2000000]0000!/00!/00; yyyy/mm/dd
こんな感じ。でもこれ、スラッシュ区切りで年を省略した日付は入
力出来ません。スラッシュが一つだと分数扱いになります。ハイフ
ン区切りで「9-1」のように入力すれば大丈夫なんだけど。
で、こういうバラバラな入力の仕方が出来るような工夫をすると、
見た目が同じなのに全く違う数値が入力されてるわけで、本来絶対
に許容すべきではありません。必ず区切りを入れて日付として入力
するよう強制するべきです。
grumpy_the_dwarfさん
ご回答ありがとうございます。
ユーザー書式の条件式を使う方法もよいと思ったのですが、スラッシュが一つの場合もあると思うので今回の用途では逆に混乱してしまいそうなので使わないでおきます。
が、知識としていつか役に立ちそうなのでしっかり覚えておこうと思います。
おっしゃるとおり、安易に許容すべきではないと思いますので、日付の入力方法を統一してもらうようにコメントを入れるなりして対応したいと思います。
ありがとうございました。
No.4
- 回答日時:
どのような目的で、日付と「20100831」のような数値を、日付として「表示」したいのでしょうか?
単に、2つの形式で入力されたデータを統一したいなら、「20100831」と入力されているデータを日付シリアル値に一括変換して、実際に日付データとして統一するのがお勧めの操作です。
日付の列を選択して、データ「区切り位置」で「次へ」「次へ」で最後に列のデータ形式を「日付」にチェックを入れ(YMDになっていることを確認して)「完了」してください。
MackyNo1さん
ご回答ありがとうございます。
目的としましては、社内の申請書類のフォーマット(Excel)の改訂を行っており、『「20100831」での入力が普通でしょ!直して!』という要望が出たためです。
これまで日付欄はスラッシュ入りで入力してもらうようになっていて、それが普通だと思っていたのですが、そうではない人もいるんだな…ということで、あまり難しい方法を使わずにできるのであれば両方対応できるといいなと思った次第です。
入力するのは各社員で、私の手元には印刷された状態で提出されてくるので、私が何か手を加えることはできず、単に見た目の問題なのです。
なので、今回皆さんから教えていただいたご回答を活用すると、対応できそうなのですが、上司に渋られてしまったので、そこまではしないことになりましたが…。
MackyNo1さんに教えていただいた方法も、別の機会で使えそうなのでとても勉強になりました。
ありがとうございました。
No.3
- 回答日時:
入力するセルを文字列にしたら入力はできますね、
それを他のセルで「数値だけの日付入力」と「/を含んだ日付入力」の2つをIF関数で場合分けして変換すればできます。
A1のセルを入力用で文字列にして、例えば隣のB1のセルを日付書式にして、次の式を入れます。
=IF(ISERROR(FIND("/",A1)),DATE(INT(A1/10000),MOD(INT(A1/100),100),MOD(A1,100)),DATEVALUE(A1))
こうすれば、A1が"20101101"でも"2010/11/01"でも、B2には日付に変換されて入ります。
始めの ISERROR(FIND("/",A1)) A1の文字列の中に"/"があるかどうかの判定です。
次の DATE(INT(A1/10000),MOD(INT(A1/100),100),MOD(A1,100)) は数値で入力された日付を変換する式です。
最後の DATEVALUE(A1) は"/"を含んだ文字列を日付に変換する関数です。
どうしても同じセルで入力したいのなら、これを同等の処理をVBAで組む事になりますね。
yama1718さん
ご回答ありがとうございます。
IF関数で場合分けして変換する方法は、自分でいろいろ考えてもうまくいかなかったので、ご回答いただいた内容でできることがわかり、とても勉強になりました。
できれば同じセル内がいいのですが、あまり複雑にしない方がいいという上司の意向もありまして、今回はスラッシュ入りでの入力に統一してもらうようにしました。
ですが、今後、別の機会でこの方法を使わせていただきたいと思います。
ありがとうございました。
No.1
- 回答日時:
残念ですが両方を同時に設定することはできません。
(マクロを用いた方法を除く)理由は、2010/8/31 と入力すると、実際には 40421 と言う【シリアル値】が入力され、20100831 とは異なる数値になるからです。
セルの書式設定で 20100831にスラッシュを挿入して見た目を日付風にしても、セルの数値は 20100831 なんです。シリアル値にはなりません。
どちらか片方を使うか、2010.08.31 など、スラッシュではなくピリオドを使うなどしてみましょう。
(この場合は後で該当するセルのピリオドをまとめてスラッシュに置換することで無理矢理日付に変換させることで解決します)
Cupperさん
ご回答ありがとうござます。
やはり同時に設定することはできないのですね。
わかりやすい説明で納得できました。
今回はどちらか片方を使うようにしたいと思います。
ピリオドを使ってあとでまとめて置換する方法も、今後使う機会があるかもしれないので覚えておきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) Excelについて Excel初心者です。 日報に数字を入力する時、誤った数字を入れると、セルが赤く 6 2023/03/31 17:05
- Java Javaについて質問です。 勉強し始めたばかりの初心者です。 相続税について課税額を算出するコードを 1 2022/05/31 19:02
- Excel(エクセル) Excel関数で日またぎの勤務時間にしるしを立てる 2 2022/04/20 17:22
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- その他(Microsoft Office) EXCELのセルへの色づけ 2 2023/06/07 01:22
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】A列にある、日付(本...
-
Excelに入力した個々の日付の数...
-
日付だけを変更して印刷(Excel)
-
エクセルでENTERを押すと数式が...
-
入力後に日付順になるように自...
-
エクセルで数字列の間に『/』を...
-
Excelで半年後の日付を計算したい
-
31:30:00が1900/1/1 7:30:0
-
◆ EXCEL自動入力日付を自動で...
-
日付を入力したセルをファイル...
-
Excelで8/26等の日付を全てその...
-
エクセルで1年後の月末を表示さ...
-
EXCELで直近の日付を抽出する関数
-
エクセル 当番表の作り方 エク...
-
エクセル セルに109と入力する...
-
エクセルで日付入力欄を作成し...
-
日付の照合でFALSEになります。
-
エクセルのセルにたとえば「756...
-
word、日付選択コンテンツの隣...
-
エクセルで日付をtoday()で自動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelに入力した個々の日付の数...
-
日付だけを変更して印刷(Excel)
-
Excelで半年後の日付を計算したい
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
エクセルでENTERを押すと数式が...
-
Excelで8/26等の日付を全てその...
-
エクセルで数字列の間に『/』を...
-
エクセル 当番表の作り方 エク...
-
エクセル関数で日付かどうかの...
-
エクセルで日付入力欄を作成し...
-
エクセルで1年後の月末を表示さ...
-
EXCELで直近の日付を抽出する関数
-
ファイルのオープン時に今日の...
-
日付の照合でFALSEになります。
-
ワード差込について
-
excelで月末日を判定したい
-
VBAでセルに入っている日付をシ...
-
☆Excelエクセルで入力した日の...
-
エクセル グラフ 軸の日付表記...
おすすめ情報