• 締切済み

Window Excel上にて、ダース同士の計算

ダース(12)の足し算・引き算の時、ダースになりえない数を計算すると、10以上の数ではいつも電卓で計算しています。VBAを使用せず関数を使用して計算できますか。

みんなの回答

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

どもども、お待たせいたしました。 VBAでの対処ですが、以下のような仮定で作ってみました。 ○ワークシート名が"Sheet1" ○C1:C10及び、F1:F10のセルが、ダースの「端数入力部」 ○端数入力部の左隣のセルがダースの「実数入力部」 ○入力したセル、及び左隣のセルに関数が含まれている場合は無視する。 VBAの中身としては、こんな感じになりますかねぇ… Option Explicit Dim mrngHasuu As Range Private Sub Worksheet_Change(ByVal Target As Range)  Static sInitFlg As Boolean  Static sSkipFlg As Boolean  Dim Sht   As Worksheet  Dim Rng   As Range  Dim lKosuu  As Long    If sSkipFlg = True Then   Exit Sub  End If    sSkipFlg = True    '端数の領域を初期化する。  If sInitFlg = False Then   Set mrngHasuu = Worksheets("Sheet1").Range("C1:C10, F1:F10")   sInitFlg = True  End If    '変更されたセルが、「端数入力欄」に含まれているかをチェック  Set Sht = mrngHasuu.Worksheet  For Each Rng In mrngHasuu   If Rng.Address = Target.Address Then    '変更されたのが端数入力部のセルであった場合    '端数部もしくは実数部のセルに関数が入力されている場合は無視する    If Left(Rng.Formula, 1) = "=" _     Or Left(Sht.Cells(Rng.Row, Rng.Column - 1).Formula, 1) = "=" Then     Exit For        'そうでない場合は、実数部と端数部とを正規化する。    Else     lKosuu = Cells(Target.Row, Target.Column - 1) * 12 + Target.Value     Cells(Target.Row, Target.Column - 1) = Fix(lKosuu / 12)     Target.Value = lKosuu Mod 12     Exit For    End If   End If  Next Rng    sSkipFlg = False End Sub 字数及び制限時間の関係で仕様が練れていないんですが、ちょっと実験してみた限りでは、コレでうまくいくみたいです。 あと、関数を使って演算をしている場合などは、その都度対処してやらないといけないです。 #5(と#6)の例ですと、合計を求める式は、 =Sum(B1:B10) + Trunc(Sum(C1:C10) / 12) …実数部 と =Mod(Sum(C1:C10) , 12) …端数部 とになるハズです。

Kentucky
質問者

お礼

引き続きお教えいただきありがとうございます。このような投稿は初めてなのですが、ARCさんの親切さには感激しました。大変、大変ありがとうございました。

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

あらら(^^; × =Sum(B1:B10) と = Sum(B1:B10) とを… ○ =Sum(B1:B10) と = Sum(C1:C10) とを… でした~

Kentucky
質問者

お礼

大変参考になりました。ありがとうございます。

Kentucky
質問者

補足

ありがとうございました。大変満足しています。もし差し支えなければ、VBAでの方法も教えていただけますか。

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

まず、 >そして端数に10もしくは11の値であっても表現できますか。 コレを実現するために、実数部と端数部とを分けたかったのです。 >端数の値が12を越えた時点で、実数にその値が足すことはできますでしょうか。 うーん、VBAを使えば可能なんですが… 関数だけでするとすれば、少し考え方をひねってやる必要があると思います。 例えば、A1を「ダース数表示用」B1とC1のセルを「値入力 & 計算用」とします。(B1に実数部, C1に端数部) で、A1のセルに =TRUNC((B1*12+C1)/12) & "." & MOD((B1*12+C1),12) ってな感じの数式を入力します。 B1, C1のセルは、建前上はダースの実数部と端数部を入力する枠であるのですが、計算を行った結果、"10.15"みたいなことになっても「気にしない」ことにするのです。(A1のセルには正しく"11.3"と表示されるはずなので。 もちろん気になるようであれば、その都度、A1のセルを参照して"11"と"3"とを入力し直しても構いません) ちなみに、1行目から10行目の合計を得たいときには、 B11のセルとC11のセルに =Sum(B1:B10) と = Sum(B1:B10) とを入れてやれば良いですね。 A列にはA1のセルをコピーして貼り付けておればOKですね。 たとえ計算の結果、C列の合計が "99" などとなってしまっても、「気にしない」のです!

noname#240783
noname#240783
回答No.4

>1つのセルでダースと端数を分けないですることが可能ですか。 うむむっ...か、可能ですっ!ただし、文字列表現です。 「11.10」は「11ダースと、端数が10個」を意味するとし、 使用するセルの書式はすべて「文字列」として、 =IF(AND(AND(A1<>"",B1<>""),C1<>""), LEFT(A1,FIND(".",A1,1))+LEFT(B1,FIND(".",B1,1))+LEFT(C1,FIND(".",C1,1)) +INT((MID(A1,FIND(".",A1,1)+1,LEN(A1))+MID(B1,FIND(".",B1,1)+1,LEN(B1))+MID(C1,FIND(".",C1,1)+1,LEN(C1)))/12) &"."& MOD(MID(A1,FIND(".",A1,1)+1,LEN(A1))+MID(B1,FIND(".",B1,1)+1,LEN(B1))+MID(C1,FIND(".",C1,1)+1,LEN(C1)),12), "") でも、こうまでする(って、私が勝手にやっているのですが、アハハ)事情がお有りなのでしょうか? あるいは、なにか勘違いをされていらっしゃるのかもしれませんねぇ(失礼かもしれませんが...) 私も、#3さんのご意見に賛成です。要件分析というか、基本設計段階での問題提起が必要でしょう。 詳細まで降りてきて、無理苦理作ろうとすると、必ず自分がドツボにはまります(経験談)。

Kentucky
質問者

補足

親切なご意見ありがとうございます。確かにChipmoguraさんの話されている実数と端数とを分ける方向で考えています。ただ端数の11を超えた繰り上がりが、実数に反映されることは可能でしょうか。

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

えと、一つのセルに、ダース数と端数とを入力するのでしょうか? セルに入力できるのはあくまでも10進数なので、簡潔な表現では無理です。 無理やり、A1のセルに10ダースと11本を入れるのでしたら、A1に = 10 + (11 / 12) ってな感じに入れてやる必要があります。(かなり強引ですね) ここまでするくらいなら、A1にダース数、B1に端数を入れたほうが余程効率がいいでしょう。 一つのセルに「10.11」みたいに入れるのは、VBAを使っても難しいかと思いますよ。 実数と端数とにセルを分けて入力する方式では、何か不都合があるのでしょうか? もしそうでしたら、私としてはその「不都合」の方を解決する方が、最終的には良い結果になるような気がします。

Kentucky
質問者

補足

親切な回答ありがとうございます。実数と端数を分けて、端数の値が12を越えた時点で、実数にその値が足すことはできますでしょうか。そして端数に10もしくは11の値であっても表現できますか。

noname#240783
noname#240783
回答No.2

A1セルに 52個、B1セルに 55個と入力されているとして、 C1セル =INT(SUM(A1:B1)/12) ダース数 D1セル =MOD(SUM(A1:B1),12) 端数 と、いうことではないのでしょうか??

Kentucky
質問者

補足

A1に10ダースと11個、B1に10ダースと1個、C1に10ダースと5個の場合どうなりますか。1つのセルでダースと端数を分けないですることが可能ですか。

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

A1の数(ダース)とA2の数(ダース)を足すとすると、数式は =((A1 * 12) + (A2 * 12)) / 12 になるかと思います。 って。こういうことで良いんでしょうか(^^;;

Kentucky
質問者

補足

A1に10ダースと11本、B2に10ダースと1本、C3に10ダースと5本の場合、どうなるかわかりますか。そして1つのセルでその回答を表現できますか。

関連するQ&A

  • エクセルで12進数

    整数は10進数、小数点以下は12進数の計算てできるのでしょうか。 収める製品の単位がダースで、いつも、あまりの数を電卓で計算して記入しています。 表示は、たとえば、 131個なら、10.11ダース 121個なら、10.1ダース と言った具合です。

  • 見た事ない、Excel 計算式

    Excelの表計算のセルに次ぎの式が入っていました。引き算や掛け算のように見えます。答え(足し算、掛け算、割り算の数値)は、合っています) =[@         ]-[@      ] =([@         ]-[@         5])*[@       33] =([@        ]-[@        4])*[@       33] Excel 関数の代わりに使用しているようですが、これは何でしょうか?

  • Excelで引き算の式を作りたい

    Excelで数値がランダムに現れる小学生用の引き算の式を作っています。たし算の時は,rand関数で作れたのですが,引き算の場合は,引かれる数より引く数を小さくしないといけないので立ち止まってしまいました。 できるだけ簡単な関数で処理する方法を教えてください。

  • 「数」・計算の教え方

    小学生にたし算、ひき算を教えることになりました。少し障害があるようです。 手を使ってできる計算はでき、筆算なども横について手順を1つずつ聞けばわかるのです。でも、自分だけでは計算できなくなります。 見ていると、「数」というものがいまいちよく分かっていないようです。 10くらいまでなら分かるのですが、それ以上になってくるとあまりよく分かっていないように思います。 だから、計算の前に「数」というものを教えたほうがいいように思うのですが、どう教えればいいのか分かりません。 いいアドバイスがあればお願いします。

  • 分数の計算の仕方を教えてください

    恥ずかしながら分数の計算(足し算、引き算、割り算、掛け算)のやり方を忘れてしまいました。 今度、派遣の登録にいくのですが、その時に簡単な計算も出るようです。 友人から分数の計算もあったと聞いたので・・・。 正直、約分と通分も怪しいです。 調べてみたのですが、分数の引き算で分からないところがありました。 問題4/5-2/3(5分の4-3分の2)で私が調べたこの問題の計算式は分子と分母に同じ数をかけて 計算過程が5×3/4×3-3×5/2×5(5×3分の4×3-3×5分の2×5)=12/15-10×15(15分の12-15分の10)=2/15(15分の2)となっていました。 同じ数をかけるのは思い出せたのですが、この問題は「3」と「5」を分子と分母にかけていますが、この「3」と「5」がどこから出てきたのかイマイチ理解できなくて困ってます。 分数の計算(足し算、引き算、割り算、掛け算)のやり方と約分・通分を分かりやすく教えてください。

  • 計算能力を高めるためには

    いつも、思うのですが、買い物をするときに、商品の値段を暗算しながら(電卓を使わないで)、買い物をしてみたいのです。もちろん、消費税も暗算したいです。 なぜかというと、財布の中が小銭でいっぱいになってしまうからです。 そこで、足算、引算、掛算、割算、パーセントの計算、時間の計算(60進数)などを、暗算で早く、正確に答えを出すためには、どういう努力をすればいいのでしょうか? よくそろばん1級とかの人が、数字を見ただけで、答えを出す人がいますが、そろばんというのが、いちばんいいのでしょうか? あと、マスマジックスとか言う夜中にやっている通販番組があって、それで、計算がはやくできるらしいのですが、それはどうなのでしょうか? よろしくおねがいします。

  • Excelの表計算

    基本的な質問なんですが、Excelでの表計算はどのようにしたらいいんでしょうか?主に足し引き算を使用したいんですが、本を見てしたんですが、表計算されません。はじめに設定などあるんでしょうか? 例えばA1~A10のセルを足し算したいときは、=A1+A10でエンターを押せばいいと本には書いてあるんですが、足し算されません。 初心者なので、詳しく教えていただきたいです。よろしくお願いします。

  • 2進数 8進数 16進数

    2進数の引き算 8進数の足し算、引き算 16進数の足し算、引き算。 この計算方法がいまいちよくわかりません。 2進数引き算 11111101-01111111 8進数足し算 345+674 16進数足し算 EBA-23F どうやって解いていけばいいのでしょうか? ぜひ回答お願いします。

  • 平方根の計算

    平方根の計算の入門編です。 平方根の掛け算はできるのになぜ足し算・引き算はできないのでしょうか。 √2×√3 = √6なのに √2+√3 = √5 になりません。 これまで、数字の計算は足し算引き算かけ算割り算で計算する、と習ってきました。 √がつくとかけ算割り算はできるのに足し算引き算ができません(やってはいけない)また、ルールということはわかりますが、どういうルールなのでしょうか。

  • 初等関数の計算時間

    C言語である計算を一億回したときの計算時間について調べています。 sinやcosなどの初等関数の計算は、足し算や引き算などの四則演算に比べ、計算時間がかかるのは何故ですか?