- ベストアンサー
60進数と10進数の足し算について
エクセルの計算式で整数部分を10進数、小数部分を60進数と分離して足し算する方法はないでしょうか? 例えば1.30+1.30は3.00、1.45+2.15.1.30は5.30というように答えを足したいのですが。 どなたかご教授お願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
マクロを使った計算です。小数点以下は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)
その他の回答 (6)
- mshr1962
- ベストアンサー率39% (7417/18945)
>普通「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で数値化です。
お礼
ありがとうございます。 こんなシンプルでやりたいことができるとは思いませんでした。
- jindon
- ベストアンサー率43% (50/116)
A1からA3にデータがある想定です。 =TRUNC(SUM(A1:A3))+(SUM(A1:A3)-TRUNC(SUM(A1:A3)))/60*100
お礼
ありがとうございます。 しかしこの方法だと小数部分が1を越えたときにエラーが出てしまいます。
- imogasi
- ベストアンサー率27% (4737/17070)
>時間として扱うのは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をした整数部を繰り上げるのが普通でしょう。
お礼
ありがとうございます。 そうですか。検証してみます。
- ARC
- ベストアンサー率46% (643/1383)
>もう少し具体的な回答はないでしょうか? 参考URLは役に立ちませんでしたか? それ以外の回答としては、例えばセル上に文字として「5.30」などと入力しておき、そういった形で入力されたデータ専用の足し算関数を自作する、なんて方法も考えられますね。 ○参考URLの例ではどの部分が仕様にそぐわないのか 或いは、 ○セル上にどのように数値が格納されていて、どのように演算を行いたいのか といったことが判れば、もう少し踏み込んだ回答が書けるかもしれません。 Excel上で10進数以外の演算を行うのは、結構厄介なのです。 場合によっては、「時間で入力するのはNG」という仕様の方を潰した方が、効率が良いかもしれません。
お礼
ありがとうございます。 >場合によっては、「時間で入力するのはNG」という仕様の方を潰した方が、効率が良いかもしれません。 テンキーのみで入力したいのでここだけは外せなくて・・・
- sanori
- ベストアンサー率48% (5664/11798)
セルの表示形式を時間にしてしまったらいかがですか。 手っ取り早いですよ。 セルA1に1:45 セルA2に2:15 セルA3に1:30 セルA4を =A1+A2+A3 とすれば、セルA4に5:30とおそらく表示されるはずです。 なお、単位を時から分に変えて、例えば1:45を0:01:45にするなどしてもよいでしょう。
お礼
回答ありがとうございます。 時間として扱うのはNGなんです。 他の回答はないでしょうか? どうぞよろしくお願いします。
- ARC
- ベストアンサー率46% (643/1383)
普通に、「1:30」ってな感じで、時間として入力してはいけないのでしょうか? セルの書式の表示形式を「[h].mm」と設定すれば、見かけ上は「1.30」のように表示されますし。 どうしても時間として扱えない場合でしたら、以前回答した「Window Excel上にて、ダース同士の計算」(参考URL)が役に立つかもしれません。 12進数→60進数と変更するだけで対応出来る気がします。(あくまでも「気がする」だけですが(^^;)
お礼
回答ありがとうございます。 普通「1:30」と入力するのはNGなんです。 もう少し具体的な回答はないでしょうか?
お礼
ありがとうございます。 マクロを組む能力がないために関数で考えていたのですが親切にありがとうございます。 この方法も試してみます。