• ベストアンサー

5キロ単位で各セルに振り分ける方法は?

例えばエクセルのシートで    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 

質問者が選んだベストアンサー

  • ベストアンサー
  • tizzy
  • ベストアンサー率51% (115/224)
回答No.7

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)) でいけると思います。 考え方としては、 数量を大きい単位から順に割って 答えの整数の部分のみを使い、 余りを次の単位に送って、 またそこで割り算をして余りを・・・ というように、希望の最小単位まで割り続ければ 良いということです。 上手くできるといいですね。 分からない点がありましたらまたお尋ねください。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

この質問をみて、現金支払い制の給料を用意する場合の金種計算とそっくりだと思いました。 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と大きいもの順に 並べるとそのまま使えるのではないかと思いました。 (小さいもの順の場合は少し手直しが必要) ご参考まで。

  • tizzy
  • ベストアンサー率51% (115/224)
回答No.5

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が入る場合には 文字が白になって見えなくなるので 非表示の効果があります。 余談でしたが(笑)ご参考までに。

  • seiuchi4
  • ベストアンサー率37% (71/189)
回答No.4

B1 =A1-D1*10-C1*5 C1 =QUOTIENT(MOD(A1,10),5) D1 =QUOTIENT(A1,10) 大きいほうから計算して、余りを次に大きい値で求めます。

ootaku
質問者

補足

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

回答No.3

これは金種計算に近いですね。 E2=Rounddown(B2/10,0) D2=Rounddown(B2-E2*10)/5,0) C2=B2-E2*10+D2*5 大きい方から計算してみました。

  • soma3
  • ベストアンサー率39% (16/41)
回答No.2

C2=B2-5*D2-10*E2 D2=(B2-10*E2-MOD(B2-10*E2,5))/5 E2=(B2-MOD(B2,10))/10 余りを元に計算してみました。

  • tksoft
  • ベストアンサー率36% (99/273)
回答No.1

とりあえず C2に =B2-E2*10-D2*5 D2に =INT((B2-E2*10)/5) E2に =INT(B3/10) で、どうでしょう。 ポイントはINT()関数です。

関連するQ&A