dポイントプレゼントキャンペーン実施中!

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

A 回答 (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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 10:37

>普通「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で数値化です。
    • good
    • 1
この回答へのお礼

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

お礼日時:2004/06/04 10:33

A1からA3にデータがある想定です。



=TRUNC(SUM(A1:A3))+(SUM(A1:A3)-TRUNC(SUM(A1:A3)))/60*100
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 10:23

>時間として扱うのは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.0729166670.093750.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をした整数部を繰り上げるのが普通でしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 10:29

>もう少し具体的な回答はないでしょうか?



参考URLは役に立ちませんでしたか?
それ以外の回答としては、例えばセル上に文字として「5.30」などと入力しておき、そういった形で入力されたデータ専用の足し算関数を自作する、なんて方法も考えられますね。

○参考URLの例ではどの部分が仕様にそぐわないのか
或いは、
○セル上にどのように数値が格納されていて、どのように演算を行いたいのか
といったことが判れば、もう少し踏み込んだ回答が書けるかもしれません。


Excel上で10進数以外の演算を行うのは、結構厄介なのです。
場合によっては、「時間で入力するのはNG」という仕様の方を潰した方が、効率が良いかもしれません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 10:34

セルの表示形式を時間にしてしまったらいかがですか。


手っ取り早いですよ。

セルA1に1:45
セルA2に2:15
セルA3に1:30
セルA4を =A1+A2+A3
とすれば、セルA4に5:30とおそらく表示されるはずです。

なお、単位を時から分に変えて、例えば1:45を0:01:45にするなどしてもよいでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 02:04

普通に、「1:30」ってな感じで、時間として入力してはいけないのでしょうか?



セルの書式の表示形式を「[h].mm」と設定すれば、見かけ上は「1.30」のように表示されますし。

どうしても時間として扱えない場合でしたら、以前回答した「Window Excel上にて、ダース同士の計算」(参考URL)が役に立つかもしれません。
12進数→60進数と変更するだけで対応出来る気がします。(あくまでも「気がする」だけですが(^^;)

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=806812
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/04 02:03

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

このQ&Aを見た人はこんなQ&Aも見ています