• ベストアンサー

60進数と10進数の足し算について

エクセルの計算式で整数部分を10進数、小数部分を60進数と分離して足し算する方法はないでしょうか? 例えば1.30+1.30は3.00、1.45+2.15.1.30は5.30というように答えを足したいのですが。 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#29107
noname#29107
回答No.4

マクロを使った計算です。小数点以下は2桁しか無いものと仮定します。 Function sump60(ParamArray InDt() As Variant) Dim mySeisu As Long, myShosu As Long Dim Ix As Long Dim WrkJ, WrkK For Each WrkJ In InDt   If IsNumeric(WrkJ) Then     mySeisu = mySeisu + Int(WrkJ)     myShosu = myShosu + (WrkJ - Int(WrkJ)) * 100   End If   If IsArray(WrkJ) Then     For Each WrkK In WrkJ       mySeisu = mySeisu + Int(WrkK)       myShosu = myShosu + (WrkK - Int(WrkK)) * 100     Next WrkK   End If Next WrkJ mySeisu = mySeisu + Int(myShosu / 60) myShosu = myShosu Mod 60 sump60 = mySeisu + myShosu / 100 End Function 使用方法は、計算したいデータがA1,A2,A3セルに入力されているとして、 =sump60(A1,A2,A3) または =sump60(A1:A3) あるいは直接値を指定します。(必ずコンマで区切って下さい。) =sump60(1.45,2.15,1.30)

white-shealter
質問者

お礼

ありがとうございます。 マクロを組む能力がないために関数で考えていたのですが親切にありがとうございます。 この方法も試してみます。

その他の回答 (6)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.7

>普通「1:30」と入力するのはNGなんです。 A1:A3に1.45 2.15 1.30があるとして =TEXT(SUMPRODUCT(TEXT(A1:A3*100,"0"":""00")*1),"h.mm")+0 TEXT関数で一度時系列に変換、SUMPRODUCTで合計後に TEXT関数で数値書式に戻し+0で数値化です。

white-shealter
質問者

お礼

ありがとうございます。 こんなシンプルでやりたいことができるとは思いませんでした。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.6

A1からA3にデータがある想定です。 =TRUNC(SUM(A1:A3))+(SUM(A1:A3)-TRUNC(SUM(A1:A3)))/60*100

white-shealter
質問者

お礼

ありがとうございます。 しかしこの方法だと小数部分が1を越えたときにエラーが出てしまいます。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

>時間として扱うのはNGなんです。 この意味が良く取れませんが、下記は混合型? A1,B1、C1の書式を数値で小数点以下2桁に設定します。 そしてA1に1.45 B1に2.15 C1に1.30と入力します。 すると上記の通りに表示されます。 A2セルに式=INT(A1)/24+(A1-INT(A1))*100/(24*60) を入れて、A2の式をB2、C3に複写します。 B2は=INT(B1)/24+(B1-INT(B1))*100/(24*60) です。C2は略。 値はA2:C2は0.072916667 0.09375 0.0625 これはエクセル時刻値と同じです。 例えばD2に=A2+B2+C2または=SUM(A2:C2)を入れます。 書式を時刻にして5:30となります。 ●エクセルの時間計算の機能を借りないならば =INT(A1)+INT(B1)+INT(C1)+INT(((A1-INT(A1))*100+(B1-INT(B1))*100+(C1-INT(C1))*100)/60)+MOD(((A1-INT(A1))*100+(B1-INT(B1))*100+(C1-INT(C1))*100),60)/100 となる。考えは単純ですが式が長くなって、これで良いか検証し難い。結果は5.3、書式を数値で小数点以下2桁に設定して5.30となりましたが。 セルが沢山あれば(上記のような式をこれ以上長く続けていられないから)、ピリオドを区切り文字として、整数部分と小数部分を2つのセルに分け、小数部分をX100して、それぞれを加え、小数点以下の部分の合計を÷60をした整数部を繰り上げるのが普通でしょう。

white-shealter
質問者

お礼

ありがとうございます。 そうですか。検証してみます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

>もう少し具体的な回答はないでしょうか? 参考URLは役に立ちませんでしたか? それ以外の回答としては、例えばセル上に文字として「5.30」などと入力しておき、そういった形で入力されたデータ専用の足し算関数を自作する、なんて方法も考えられますね。 ○参考URLの例ではどの部分が仕様にそぐわないのか 或いは、 ○セル上にどのように数値が格納されていて、どのように演算を行いたいのか といったことが判れば、もう少し踏み込んだ回答が書けるかもしれません。 Excel上で10進数以外の演算を行うのは、結構厄介なのです。 場合によっては、「時間で入力するのはNG」という仕様の方を潰した方が、効率が良いかもしれません。

white-shealter
質問者

お礼

ありがとうございます。 >場合によっては、「時間で入力するのはNG」という仕様の方を潰した方が、効率が良いかもしれません。 テンキーのみで入力したいのでここだけは外せなくて・・・

  • sanori
  • ベストアンサー率48% (5664/11798)
回答No.2

セルの表示形式を時間にしてしまったらいかがですか。 手っ取り早いですよ。 セルA1に1:45 セルA2に2:15 セルA3に1:30 セルA4を =A1+A2+A3 とすれば、セルA4に5:30とおそらく表示されるはずです。 なお、単位を時から分に変えて、例えば1:45を0:01:45にするなどしてもよいでしょう。

white-shealter
質問者

お礼

回答ありがとうございます。 時間として扱うのはNGなんです。 他の回答はないでしょうか? どうぞよろしくお願いします。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

普通に、「1:30」ってな感じで、時間として入力してはいけないのでしょうか? セルの書式の表示形式を「[h].mm」と設定すれば、見かけ上は「1.30」のように表示されますし。 どうしても時間として扱えない場合でしたら、以前回答した「Window Excel上にて、ダース同士の計算」(参考URL)が役に立つかもしれません。 12進数→60進数と変更するだけで対応出来る気がします。(あくまでも「気がする」だけですが(^^;)

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=806812
white-shealter
質問者

お礼

回答ありがとうございます。 普通「1:30」と入力するのはNGなんです。 もう少し具体的な回答はないでしょうか?

関連するQ&A

専門家に質問してみよう