新元号の対応(^^)? 暫定版、エクセル編
--- 2019-03-06 --- Part-2
こちらにも書いておきます
平成=4/30 まで
新年度=新元号の年度
新年度4月の行事は、存在しません
以下リンクは、間違った、アレこれと、お詫びです
私ちゃん同様
間違った人は、申し訳ありませんでした
m(_ _)m
新元号の対応(^^)? 動作確認、win7 Excel2010 - 関工健児誇りあれ!?
--- 2019-03-06 ---
起きました
(^^)?
目が覚めました
おはようございます
(^^);
アレこれチェックをしておりまして、
何気に多めな、ご様子です
(^^)?
気になりますョね、新元号
(^^);
じゃ、も少し具体的な対応を解説しましょ
---
(Excel まんま編) 標準機能のみ!って対応の事です^^
1) 名前の管理
Sheet名=MF
Cell B2=2019/04/01 日付型、気にせずこのままで良いです
Cell B3=安寧、この2文字が新元号です
Cell B4=A、これがH31/4/1 な、H-->A です
Cell B5=YEAR(B2) - 1、和暦の引き算用です、いちいち入れると面倒そうなので、適宜^^
M新元号日=B2、名前の管理で、共通の名称です
M新元号N=B3
M新元号X=B4
M新元号S=B5
2) 判定方法、条件文、編集
印刷シート=RPT
日付の元データセル=Z2、印刷物の欄外に入力します
=IF(Z2 = "", "" <-- 空白だったら、表示しません、ゼロ文字です
, IF(Z2 < M新元号日 <-- 入力した日付が4/1 前(含まない) だったら? の条件文
, TEXT(Z2, "gee/mm/dd") <-- 通常通り、Excel 関数=TEXT です
, M新元号X & RIGHT("0" & YEAR(Z2) - M新元号S, 2) & TEXT(Z2, "/mm/dd")) <-- 新元号です、RIGHT=桁合わせしてます、ex) A01/04/01
3) 注意点
Excel は、独自で余計なお世話機能が付いています
文字列を勝手に改行したり、数字なのに日付になったり、色々です
TEXT 関数=文字列です
ですが、自動変換が掛かるかも知れません
今までには記憶に無いです、これに関して、この関数は、、、変語のアベマ語^^;
なので、絶対に、失敗したく無い
その時は?
先頭に、"'" <-- ' 見辛いですが、シングルコーテーションを付けて下さい、正式名は覚え辛いのでシングル、ダブルです、確か、アポストロフィ? でしったけ?
又は、再度、 & "" <--ゼロ文字列を付加、明示的に文字列へ型変換しています
4) その他
あとは、日本語だったら、M新元号N、半角だったら、M新元号X、です
つまんない事ですが、、、
N=日本語の略
X=1Byte 文字列の略
S=引き算Subtract
これに合わせております
因みに、
9=数値です
---
(エクセル VBA編) 関数作るぞ!
VBA EDITOR 起動、開発タブに有ります、開発タブ=エクセル自体のOPTIOS チェックで表示が出ます? 探して下さい^^; 結構ね、思いっきり何時も探してます
1) 標準モジュール、自分のだョって名前が良いと思います
これ、関数名が重複しなければ、只の塊って事だけです
モジュール名、mYOSHIO、ヨシオが良いって言ってます^^?
関数名、FUNC_NEWGENGO、これが関数名になります、短い方が使う時に気持ち良い? だらだら長文になりませんが、パッと見分かる! も大切です
2) 作っちゃお、VBA 関数
'(パラメータ)
'P_YMD、変換前の日付型、一応チェックします
'PROC、1=西暦、2=日本語和暦、3=半角和暦(デフォルト既定値、省略可)
'編集後=元号+年/月/日 ex) H30/12/31
'
Function FUNC_NEWGENGO(P_YMD As Variant, Optional PROC As Integer = 3) As String
Dim w_NM As String
w_NM = ""
IF Not IsDate(P_YMD) Then GoTo sub_ex
If PROC = 1 Then
w_NM = Format(P_YMD, "yyyy/mm/dd")
GoTo sub_ex
End If
PROC = PROC + Iif(P_YMD < #2019/4/1#, 10, 0)
w_NM = Right("0" & Year(P_YMD) - 2018, 2)
Select Case PROC
Case 3
w_NM = "A" & w_NM & Format(P_YMD, "/mm/dd")
Case 13
w_NM = Format(P_YMD, "gee/mm/dd")
Case 2
w_NM = "安寧" & w_NM & Format(P_YMD, "/mm/dd")
Case else '12
w_NM = Format(P_YMD, "gggee/mm/dd")
End Select
sub_ex:
FUNC_NEWGENGO = w_NM
w_NM = ""
End Function
---
まっ、大体、こんな感じ
(^^)?
スペルチェック、閉じカッコ漏れ
(^^);
ご容赦下さい、未検証でスマホでカキコでございます
で、、、も少し言うと?
セレクト ケース
この条件文の順番は、重要です
確率的に高い順番からチェックします
(^^);
適宜、、、と、言う事で!
以前もカキコしておりますが、
こう言う、地味な作業、考え方
(^^)?
重要ですからネ
特に、大量のデータを取り扱う場合です
普段から、少し考え、こう言う思考で組んでれば?
(^^);
あの業界小話、みたいな事態には成りません
今回これは暫定版ですが、この考え方で何時も使っていれば?
(^^)?
次回の時も? 困りません?
(^^);
それ以前に、生存してるか疑問形?
な、、、ウンチク系でござんした
(^^)?
今回は? 珍しく? 実用的?
いと、お菓子?
チョコ下さい?
チョコ食べたい?
---
明日見村
村長さんでした
(^^)/ NewGengo Excel