プロが教えるわが家の防犯対策術!

例えばエクセルのシートで
   A    B   
1  氏名 数量(キロ)
2 ******   5
3 ******   14
4 ******   2
5 ******   23
と、あるとします。その表示を下記のようにしたい場合、C2~E2にはどのような式がはいりますか?(あとは下方向にコピーしたらいいと思うので・・・)
いろいろ試しましたが、うまくいきません。

   A    B   C   D   E   
1 氏名 数量(キロ)1K入 5K入10K入
2 *****  5         1     
3 *****  14    4       1 
4 *****  3     3           
5 *****  23    3       2 

A 回答 (7件)

とりあえず



C2に =B2-E2*10-D2*5
D2に =INT((B2-E2*10)/5)
E2に =INT(B3/10)

で、どうでしょう。
ポイントはINT()関数です。
    • good
    • 0

C2=B2-5*D2-10*E2


D2=(B2-10*E2-MOD(B2-10*E2,5))/5
E2=(B2-MOD(B2,10))/10

余りを元に計算してみました。
    • good
    • 0

これは金種計算に近いですね。



E2=Rounddown(B2/10,0)
D2=Rounddown(B2-E2*10)/5,0)
C2=B2-E2*10+D2*5

大きい方から計算してみました。
    • good
    • 0

B1 =A1-D1*10-C1*5


C1 =QUOTIENT(MOD(A1,10),5)
D1 =QUOTIENT(A1,10)

大きいほうから計算して、余りを次に大きい値で求めます。

この回答への補足

ありがとうございます。出来ました!いろいろな関数があるものですね。
ついでといっては何ですが、もし、1キロより小さい0.5キロ単位のネットがある場合の式は、どうなりますか?

補足日時:2003/12/03 10:27
    • good
    • 0

ootakuさん



計算方法は出ているようなので。
Bの列に数字が無い場合に0を表示させない方法として

C2=IF(B2="","",B2-D2*5-E2*10)
D2=IF(B2="","",INT((B2-E2*10)/5))
E2=IF(B2="","",INT(B2/10))

また、0をどこにも表示させたくない場合
CDE列の書式設定でユーザー定義を選択して

G/標準;-G/標準;;[白]G/標準

としておくと、0が入る場合には
文字が白になって見えなくなるので
非表示の効果があります。

余談でしたが(笑)ご参考までに。
    • good
    • 0

この質問をみて、現金支払い制の給料を用意する場合の金種計算とそっくりだと思いました。


VBAでやると
Sub test01()
a = Array(10000, 5000, 1000, 500, 100, 50, 10, 5, 1)
j = 2 '数量データは2行めから始まる。1行目見出。
p01:
k = Cells(j, "B") 'B列に数量(合計金額)があるとき
If Cells(j, "B") = "" Then Exit Sub
For i = 0 To UBound(a)
Cells(j, i + 3) = Int(k / a(i)) 'C列より内訳セット
k = k - a(i) * Int(k / a(i))
Next i
j = j + 1
GoTo p01
End Sub
Arrayの( )の中を、10kg、5,1と大きいもの順に
並べるとそのまま使えるのではないかと思いました。
(小さいもの順の場合は少し手直しが必要)
ご参考まで。
    • good
    • 0

0.5キロの単位がある場合にも


同様です。

  A    B   C   D   E   F  
1 氏名   数量  0.5K 1K  5K  10K


という感じで
C2=IF(B2="","",INT((B2-F2*10-E2*5-D2)/0.5))
D2=IF(B2="","",INT((B2-F2*10-E2*5)/1))
E2=IF(B2="","",INT((B2-F2*10)/5))
F2=IF(B2="","",INT(B2/10))

でいけると思います。
考え方としては、
数量を大きい単位から順に割って
答えの整数の部分のみを使い、
余りを次の単位に送って、
またそこで割り算をして余りを・・・
というように、希望の最小単位まで割り続ければ
良いということです。

上手くできるといいですね。
分からない点がありましたらまたお尋ねください。
    • good
    • 0

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