次の方法で共有

エクセル2007においての日付間の引き算における表示形式について

Anonymous
2011-04-08T08:23:37+00:00

1月19日に下記の問いに対するご回答を頂いた者です。

「DATEDIF、TEXT関数を使用して2つの日付の間の期間を求める時に期間表示がおかしい。(表の1部が8ヶ月139日、1年140日など)」

→単純に引き算をすれば良い。

ところが表示形式の設定方法が分からず苦労しております。再度ご指導のほどよろしくお願い致します。

2008/1/19-2007/4/24=00年9ヶ月26日(実際の入力は=h6-g6です)

回答を頂いた時は「なるほど簡単だ。」と思いやってみたのですが、どうしても00年となります。これをどの様にしたら9ヶ月や26日の様にきれいに表示(この場合は00を消す)させられるか再度ご指導のほどよろしくお願い致します。表示形式はユーザ定義で下記の通りです。

yy"年"m"ヶ月"d"日"

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-05-31T12:46:24+00:00

こんにちは。

かなり御苦労されたようですね。慌てずにジックリ行きましょう。

> でも初期化の甲斐は有りました.「excel.exe」をLibraryフォルダではなく,

> C:ProgramFilesMicrosoftOfficeOffice12フォルダ内に見つけました.

先ずは何よりですね。これで先へ進めます。

> このC:ProgramFilesMicrosoftOfficeOffice12にインストールすればよろしいのですね.

> Libraryフォルダへのコピーではないと思いますので「UACの解除」は不要なのでしょうか,

先ず、[Program Files]配下は全てUAC対象ですので、[Office12]もUAC対象になります。

そして、アドインの保存先は [Office12] ではなく、その中の [Office12\Library] です。

もう一度、手順をおさらいします。


(1) Excel.exe の場所を探す。

(2) Excel.exe が [Program Files\ ~ \Office12] に在るのが判る。

(3) アドインの保存場所は、その [Office12] 内の [Library] フォルダです。

(4) [Office12] の中にある [Library] フォルダを開く。

(5) [Library] フォルダに kt関数Addin.xla を保存する。

(6) kt関数Addin.xla と一緒に、ヘルプファイル「kt関数.cnt , kt関数.hlp」の2ファイルも

  同じ[Library]フォルダに保存する。

※ (5)(6)の保存作業を行なうにはUACの解除が必要になります。その手順は下記。

「Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする」

http://www.atmarkit.co.jp/fwin2k/win2ktips/859disuac/disuac.html

インストールは以上で完了です。


(7) 次は、Excel を開いて、アドインを有効にする作業です(下記の Step2 & 3)。

http://www.h3.dion.ne.jp/~sakatsu/Excel2007_Addin_Inst.htm

(7) が済めば、kt関数アドインが利用できるようになります。


PS:

以前、下記のように言われていましたが、現在も同じでしょうか?

> Office12内のLibrary フォルダには「LabelPrint」と「HTML.XLAM」と言う

> フォルダとファイルが有るだけです.

[Library] の中に [Analysis] というフォルダは有りませんか?

このフォルダは、WORKDAY関数などが収録されているMicrosoft 製の「分析ツール」

というアドインのフォルダです。

これが無いという事は、Excelのインストール時に「分析ツール」アドインの指定を

しなかったという事でしょう。

なお、Excelのインストールを最初からやり直す必要はありませんので安心して

ください。分析ツールだけ後から「追加インストール」する事ができます。

その手順を紹介しているサイトがありました。下記に沿って作業してください。

http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/office2007/excel16.html

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-04-09T09:43:33+00:00

> 2008/1/19 - 2007/4/24=00年9ヶ月26日

0年8ヶ月26日ですね(ここへのタイプミスでしょう)。

> 結果が8ヶ月139日になります

これはExcel2007におけるDATEDIFのバグです。

Excel2003以前およびExcel2010では正しく0年8ヶ月26日になります。

2009/7のExcel2007SP2 で、[MD]は元に戻った(2003以前と同じ)と

思っていましたが、未だ不具合条件が残っていたんですね。

 終了年月日が 『 年= 閏年 , 月= 1月 , 日< 開始年月日の[日] 』の

場合に計算間違いを起こしています。

http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips05.htm#chk

Excel の一般式だけ(DATEDIF,EDATE 等)でこれらの計算間違いを

回避する式を組み立てるのは非常に複雑になります。

http://www.h3.dion.ne.jp/~sakatsu/ktfunc_ref0206.htm#DATEDIF

マクロ(VBA)を使っても良いのなら下記の ktDATEDIF 関数のマクロを

そのブックの標準モジュールに登録すれば、以降はセル上で

    DATEDIF のところを ktDATEDIF と書き換える

だけで正しい結果が得られます。なお、マクロ付きブックになりますので

拡張子が xlsm になります。

http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips05.htm#ktDATEDIF2

=ktDATEDIF(G6, H6, "YMD") ⇒ 0年8ヶ月26日

マクロ付きブックがNGならば、アドインを使う方法もあります。

kt関数アドインを登録すれば、以下のようにできます。

=ktPeriodYMD("1a", G6, H6) ⇒ 0年8ヶ月26日

http://www.h3.dion.ne.jp/~sakatsu/ktfunc_main.htm

この回答は役に立ちましたか?

0 件のコメント コメントはありません

18 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-04-09T05:16:35+00:00

    1)G6に「2007/4/24」、H6に「2008/1/19」と入力して、

    2)=TEXT(DATEDIF(G6,H6,"Y"),"0年;;"&TEXT(DATEDIF(G6,H6,"YM"),"0か月;;"))&TEXT(DATEDIF(G6,H6,"MD"),"0日;;")

    3)8か月26日になりましたけど

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-04-09T02:55:59+00:00

    ご回答の方法を採用すると、結果が8ヶ月139日になりますので質問を寄せましたら、1月19日にマックちゃんさんに単純に引き算にしろとのご回答を頂きました。ところが上記の様に年数表示が00年になってしまうので、再度質問した次第です。どうかよろしくお願い致します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-04-08T09:37:08+00:00

    ◆日付の計算は、「シリアル値」で計算しています

    ◆「シリアル値」は、1900/1/1を1として、以後1日を+1としたものです

    >2008/1/19-2007/4/24=00年9ヶ月26日(実際の入力は=h6-g6です)

    2008/1/19-2007/4/24は、39466-39196=270となり

    ◆シリアル値270を表示形式、yy"年"m"ヶ月"d"日"とすると、00年9月26日になります

    ◆わかりやすいように、表示形式を、yyyy"年"m"ヶ月"d"日"とすると、1900年9月26日になります

    ◆もうお分かりでしょう、期間ではなく、日付を表示させています

    ◆これは、39466-39196=270日なので、表示形式は標準または、数値にしてください

    ◆日数の計算ならば、「単純に引き算をすれば良い」ことになります

    ◆また、「年」や「か月」にするのであれば、DATEDIF関数を使用してください

    ◆たぶん、ご希望の方法はこれではないかと思います

    =TEXT(DATEDIF(G6,H6,"Y"),"0年;;"&TEXT(DATEDIF(G6,H6,"YM"),"0か月;;"))&TEXT(DATEDIF(G6,H6,"MD"),"0日;;")

    ◆シリアル値
    日付と時刻に関する知識
    http://www3.tokai.or.jp/excel/kansu/hiduke.htm

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません