アプリ版:「スタンプのみでお礼する」機能のリリースについて

1年1ヶ月を
(1)13か月
(2)1.1
(3)396日

(1)~(3)のように表示したい場合の数式を教えて下さい。

宜しくお願い致します。

A 回答 (3件)

(1)


考え方としては
1年は12ヶ月、1年1ヶ月=12ヶ月プラス1ヶ月ですので
「年」というを検索してその直前の文字を数値に変換して×12
「ヶ」という文字を検索してその直前の文字を数値に変換
そして合計する
という手順になりそうですが、
10ヶ月以降は月の部分が2桁になるので、何桁拾うのかを判断しなければならず非常に面倒です。
そもそも1年ちょうどのときは、データはどのように入っているのでしょうか

せめて「1」「年」「1」「ヶ月」と
セルがすべて別になっていればかんたんですが・・・

(2)
1年10ヶ月=1.10=1.1となります
1年1ヶ月=1.1と区別がつかないですがよろしいですか?

(3)
1年1ヶ月=396日をイコールで結べない(等価でない)ので変換は無理です。

仮に、1年=365日、1ヶ月=30日と仮定して、
1年1ヶ月ならば365+30で395日ではないでしょうか。
そもそも1ヶ月は必ずしも30日ではなく、1年は必ずしも365日でもありません。
    • good
    • 0

(1)元データが例えば、エクセルにあるのか


(2)エクセルデータと仮定して
1年1ヶ月と全角で有るのか、数字部分は半角か、または別のデータの形か
そういうことを質問に明確に書かないで、回答がはっきり出来ないとか、ピント検討ハズレの回答になる。
場合によってはエクセルのバージョンとかを書くべき。
質問の前に、読者の側に立って考えるクセをつけること。
雰囲気や「オフィス」「数式」などの言葉で推定させないこと
ーー
上記をエクセルの関数式と推定して、1つの方法として
A列    B列
1年1ヶ月13
2年5ヶ月    29
式は
=LEFT(A1,FIND("年",A1)-1)*12+RIGHT(SUBSTITUTE(A1,"ヶ月",""),LEN(A1)-2-(FIND("年",A1)))
この場合は数字は全角・半角でも同じになるようだ。
    • good
    • 0
この回答へのお礼

言葉たらずな質問だったのに、
理解して頂き ありがとうございました。。
以後 明確に質問するように致します。
本当に 申し訳ございませんでした。
回答の数式でできました。

お礼日時:2009/07/31 23:47

こんにちは。



過去に同じようなご質問をしているようですね。
文字列はあくまでも、文字列ですから、計算対象としては相応しいとは思いませんので、#1さんのご指摘は、確かに理屈が通っていると思います。

ただ、掲示板では、現実にはどうかなって思うものでも、関数で処理する質問も出ますから、一案としてはアリかもしれません。まるで、DATEDIF 関数の逆関数のようなものだと思います。ユーザー定義関数に換えてしまっても良いかもしれません。

'-------------------------------------------
現在では、年数がない場合のことは考えられていません。

A1:
1年1ヶ月


=LEFT(A1,FIND("年",A1)-1)*12+MID(LEFT(A1,LEN(A1)-2),FIND("年",A1)+1,2)&"ヶ月"

-------- [13ヶ月]


=LEFT(A1,FIND("年",A1)-1)&"."&MID(LEFT(A1,LEN(A1)-2),FIND("年",A1)+1,2)

--------- [1.1]

未来の何ヶ月先から本日の日付を引く方法
逆の場合は、TODAY()を先にして、YEAR(TODAY())等、それぞれから引いてください。

=DATE(YEAR(TODAY())+LEFT(A1,FIND("年",A1)-1),MONTH(TODAY())+MID(LEFT(A1,LEN(A1)-2),FIND("年",A1)+1,2),DAY(TODAY()))-TODAY()

--------- [396]
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました。
もっと勉強したいと思います。。。

本当にありがとうございました。

お礼日時:2009/07/31 23:53

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