A 回答 (7件)
- 最新から表示
- 回答順に表示
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) …端数部
とになるハズです。
引き続きお教えいただきありがとうございます。このような投稿は初めてなのですが、ARCさんの親切さには感激しました。大変、大変ありがとうございました。
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" などとなってしまっても、「気にしない」のです!
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さんのご意見に賛成です。要件分析というか、基本設計段階での問題提起が必要でしょう。
詳細まで降りてきて、無理苦理作ろうとすると、必ず自分がドツボにはまります(経験談)。
この回答への補足
親切なご意見ありがとうございます。確かにChipmoguraさんの話されている実数と端数とを分ける方向で考えています。ただ端数の11を超えた繰り上がりが、実数に反映されることは可能でしょうか。
補足日時:2004/03/17 08:28No.3
- 回答日時:
えと、一つのセルに、ダース数と端数とを入力するのでしょうか?
セルに入力できるのはあくまでも10進数なので、簡潔な表現では無理です。
無理やり、A1のセルに10ダースと11本を入れるのでしたら、A1に
= 10 + (11 / 12)
ってな感じに入れてやる必要があります。(かなり強引ですね)
ここまでするくらいなら、A1にダース数、B1に端数を入れたほうが余程効率がいいでしょう。
一つのセルに「10.11」みたいに入れるのは、VBAを使っても難しいかと思いますよ。
実数と端数とにセルを分けて入力する方式では、何か不都合があるのでしょうか?
もしそうでしたら、私としてはその「不都合」の方を解決する方が、最終的には良い結果になるような気がします。
この回答への補足
親切な回答ありがとうございます。実数と端数を分けて、端数の値が12を越えた時点で、実数にその値が足すことはできますでしょうか。そして端数に10もしくは11の値であっても表現できますか。
補足日時:2004/03/17 08:17お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 仕事術・業務効率化 給料計算はシステムを使用してればて計算は不用ですか? 時間の計算を電卓を使用して計算する必要あります 2 2023/04/05 14:34
- 数学 統計学の問題について教えて下さい。高校数学 大学数学 5 2023/03/07 09:04
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- 計算機科学 電卓で一度に計算するやり方 9 2022/06/11 14:06
- 数学 冪乗の計算について教えてください 5 2023/04/22 22:36
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- 転職 給料計算の経験がありません。 どのような順番でどのような工程をふんで進めていきますか? システムを使 2 2023/04/05 17:54
- その他(職業・資格) 資格取得したけど、意味がない 9 2022/06/01 10:52
- その他(ソフトウェア) F-BASICで計算中の実行が中途で勝手に止まり、大変困っています。 2 2023/03/02 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
Excelで住所を2つ(町名迄と番...
-
Excelでのコメント表示位置
-
複数のセルのいずれかに数字が...
-
Excelのチェックボックスの使い...
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
枠に収まらない文字を非表示に...
-
Excel:指定セル以下全てのセル...
-
エクセルのセルの枠を超えて文...
-
セルに特定の色が付いていたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報