EXCELで「〇年〇ヶ月」-「△年△ヶ月」といった計算はできますか?
たとえば(A1セル)18年2ヶ月-(B1セル)16年0か月=(C1セル)2年2ヶ月といった計算の
C1セルに2年2ヶ月と表示させる式を知りたいです。
Excelの標準の関数とかではこのような機能な無い(と思います)。
で、こんなときは、VBAでのユーザー関数を使うことになろうかと。
以下を参考に試してみてください。
まずはVBEエディターを開いて、下のVBAロジックをコピーしてVBEエディター上に貼り付けます。
Function 期間算出(期間1, 期間2)
Dim p1Y, p1M, p2Y, p2M
Dim wk1Y, wk1M, wk2Y, wk2M, wk3Y, wk3M
' 単位文字の位置を確認
p1Y = InStr(期間1, "年")
p1M = InStr(期間1, "ヶ月")
p2Y = InStr(期間2, "年")
p2M = InStr(期間2, "ヶ月")
' 単位文字の位置確認結果より形式をチェック
If p1Y = 0 Or p1M = 0 Or p2Y = 0 Or p2M = 0 Then
期間算出 = "データ形式不適!"
Exit Function
End If
'数値を求める
wk1Y = Val(Left(期間1, p1Y - 1))
wk1M = Val(Mid(期間1, p1Y + 1, p1M - p1Y - 1))
wk2Y = Val(Left(期間2, p2Y - 1))
wk2M = Val(Mid(期間2, p2Y + 1, p2M - p2Y - 1))
' 期間を算出
If wk1M > wk2M Then
'月数の大小が順当の場合
wk3Y = wk1Y - wk2Y
wk3M = wk1M - wk2M
Else
'月数の大小が逆転の場合
wk3Y = wk1Y - wk2Y - 1
wk3M = (wk1M + 12) - wk2M
End If
' 算出結果を添えて形式に整える
期間算出 = wk3Y & "年" & wk3M & "ヶ月"
'
End Function
=IF(VALUE(MID(A1,FIND("年",A1)+1,FIND("ヶ",A1)-FIND("年",A1)-1))-VALUE(MID(B1,FIND("年",B1)+1,FIND("ヶ",B1)-FIND("年",B1)-1))<0,VALUE(LEFT(A1,FIND("年",A1)-1))-VALUE(LEFT(B1,FIND("年",B1)-1))-1,VALUE(LEFT(A1,FIND("年",A1)-1))-VALUE(LEFT(B1,FIND("年",B1)-1)))&"年"&IF(VALUE(MID(A1,FIND("年",A1)+1,FIND("ヶ",A1)-FIND("年",A1)-1))-VALUE(MID(B1,FIND("年",B1)+1,FIND("ヶ",B1)-FIND("年",B1)-1))<0,12+VALUE(MID(A1,FIND("年",A1)+1,FIND("ヶ",A1)-FIND("年",A1)-1))-VALUE(MID(B1,FIND("年",B1)+1,FIND("ヶ",B1)-FIND("年",B1)-1)),VALUE(MID(A1,FIND("年",A1)+1,FIND("ヶ",A1)-FIND("年",A1)-1))-VALUE(MID(B1,FIND("年",B1)+1,FIND("ヶ",B1)-FIND("年",B1)-1)))&"ヶ月"
---------------------------------------------------
これをC1セルに貼り付けます。
やっていることは、1号さんと同じです。
コメント(1件)
どうなってるのかな?
質問しっ放し、回答受けっ放し、とは! 梨のつぶてとは!
何を欲しいでもないが、回答を受けてどうなったか、くらいは知りたいよね!
(「匿名」だから、適当でいいと、気楽してるのかな?)
ここの精神に悖ると思うけど、つい、つぶやくけど、、、
言いたかないが、規約違反じゃね!