A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
規則化を留めていない書式は、どれが、年か月か日か、わからないので、単に質問に出された数字だけなら可能でも、それを標準化させるのは不可能です。
「1220」 は、最低でも「10220」 としない限りは、入力した人の意志や考えは、数字には、反映されていないので、見た人は、誰も特定できません。もちろん、VBAでも不可能です。
しかし、もしも、A1:「10220」 ならば、
2000年以降になりますが、
例えば、
=TEXT(20&REPT(0,6-(LEN(A1)))&A1,"####!/##!/##")
--> 2011/02/20 (書式を直したい時は、一旦、日付シリアル値化しなければなりません)
「101」
ですと、
--> 2000/01/01
という数式で、表示は可能のはずです。
ただし、そのままでは、文字列なので、日付シリアル値にするには、
=TEXT(20&REPT(0,6-(LEN(A1)))&A1,"####!/##!/##")*1 などとしなければなりません。
なお、私は、関数式は不得意ですから、もし、間違っていたら、ご容赦ください。
No.1
- 回答日時:
「1111」は、何に変換しますか? 2000/11/11? 2001/1/11? 2001/11/1? 2011/1/1? 1900 年代、2100 年代などの考慮は不要ですか?
元々様々な数式が考えられ、上の条件によっても有利な数式は変わってくるかと思いますが、次式は、試作品。
A1 1220
B1 =date(2000+mid(a1,1,1),mid(a1,2,1),mid(a1,3,2))
あるいは
=0+(2000+mid(a1,1,1)&"/"&mid(a1,2,1)&"/"&mid(a1,3,2)) ……セルの書式として日付関係のものを指定
この場合、日付のシリアル値を作りたいだけのことなので、B1 セルは DATE 関数の数式のほうが普通です。
>……のですが、VBA必要でしょうか。
ご質問のような、ごく単純な計算をすることのみが目的なら、VBA はもちろん不要です。
VBA プロシージャ内において同様の計算をしようと思えば、それももちろん可能です。ご質問の内容よりもっと複雑な場合分けがたくさん絡んでくるような場合は、マクロの力を借りるべきケースも出てくるかもしれません。ただし、いずれにせよ、少なくともこの回答文の冒頭で投げかけた条件についてはクリアにしておかないと、VBA であろうが対応は不可能であることに変わりはありません。
数式ではなく「区切り位置」という機能により数字を複数のセルに分割しておき、DATE 関数でくっつけるという方法もあります。ウィザードにより「1」、「2」、「20」というふうに 3 セルに分けるということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
- Excel(エクセル) エクセルにサムネイル画像組み込み 2 2022/09/02 17:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
西暦や和暦の表示をyyyymmdd表...
-
入力後に日付順になるように自...
-
Excelで半年後の日付を計算したい
-
日付だけを変更して印刷(Excel)
-
エクセルのセルにカレンダーを...
-
エクセルでENTERを押すと数式が...
-
エクセルで数字列の間に『/』を...
-
エクセル関数で日付かどうかの...
-
Excelで、年だけの「西暦」から...
-
エクセル 平日のみ連絡印刷
-
エクセル 当番表の作り方 エク...
-
Excelで8/26等の日付を全てその...
-
ワード差込について
-
日付入力→指定のセルの色を塗り...
-
Excelに入力した個々の日付の数...
-
VBAでセルに入っている日付をシ...
-
ファイルのオープン時に今日の...
-
Excelで、本日、前日、1週間前...
-
エクセル グラフ 軸の日付表記...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
日付だけを変更して印刷(Excel)
-
Excelで半年後の日付を計算したい
-
エクセルでENTERを押すと数式が...
-
エクセル 当番表の作り方 エク...
-
エクセルで数字列の間に『/』を...
-
エクセル関数で日付かどうかの...
-
Excelで、年だけの「西暦」から...
-
エクセルのセルにカレンダーを...
-
日付入力→指定のセルの色を塗り...
-
☆Excelエクセルで入力した日の...
-
Excelで8/26等の日付を全てその...
-
◆ EXCEL自動入力日付を自動で...
-
ファイルのオープン時に今日の...
-
Excelで、本日、前日、1週間前...
-
EXCELで直近の日付を抽出する関数
-
エクセルで日付入力欄を作成し...
-
エクセルで、曜日から日付を呼...
-
エクセルで1年後の月末を表示さ...
おすすめ情報