[[20080905171135]] 『金種』(パル) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『金種』(パル)
金種表の作成を参考に金種表をExcelで作成したのですが、例えばAさんは17,000円を壱万円1枚五千円1枚千円2枚しかしBさんは同じ17,000円でも五千円を2枚千円を7枚Cさんは17,000円を五千円を1枚残り千円を12枚にしたい時はどうすればいいのでしょうか?教えてください。

 勝手のいい金種計算はできません 思いつきには対応できません 
一般的金種
 	10000	5000	1000	500	100	50	10	5	1
56789	=INT(A2/10000)	=INT(MOD(A2,10000)/5000)	=INT(MOD(A2,5000)/1000)	=INT(MOD(A2,1000)/500)	=INT(MOD(A2,500)/100)	=INT(MOD(A2,100)/50)	=INT(MOD(A2,50)/10)	=INT(MOD(A2,10)/5)	=MOD(A2,5)

 それぞれを5000で割って余りが1000円札必要枚数
残りを5000円ずつに束ねて
10000 5000 1000で金種計算 (はいそれまでよー!!!!)

 こんな方法はどうでっか?
 ただ実用に耐えられるかどうかわかりまへんのんで、とりあえず新しいシートで試して
 くらはい。

 そのシートのレイアウトはこんな塩梅にします。
     A   B     C     D      E    F    G   H   I   J  K
 1 名前 給料 10000  5000  1000  500  100  50  10  5  1 
 2								
 3
 4
 5
 6
 7
 ↓
 20まで								  

 そのシートのシートタブ \Sheet1/を右クリックして下のコードをコピペします。 
 戻ってデータ(A列とB列)を書き込んでみます。
 これで金種別に表示されますから、そのうちの、例えばE列を変更可能な数値に置き換えてみてくらはい。
 ただ、変更するばやいは金額の少ない方から順番に行います。

 どないでっか、こんなんで?
      (弥太郎)
 '-----------------------
 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, data As Long
    If Target.Count > 1 Then Exit Sub
    If Application.Intersect(Target, Range("b2:k20")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    On Error GoTo trbl
    With Target
        If .Column = 2 Then
            data = .Value
            .Offset(, 1).Resize(, 9).ClearContents
            For i = 1 To 9
                .Offset(, i) = data \ Cells(1, i + 2)
                data = data - .Offset(, i) * Cells(1, i + 2)
                If data = 0 Then Exit For
            Next i
        Else
            data = Cells(.Row, 2)
            data = data - .Value * Cells(1, .Column)
            For i = 1 To .Column - 3
                Cells(.Row, i + 2) = data \ Cells(1, i + 2)
                data = data - Cells(.Row, i + 2) * Cells(1, i + 2)
            Next i
            If Cells(.Row, 2) <> Evaluate("=sumproduct((c1:k1)*(c" & .Row & ":k" & .Row & "))") Then
                MsgBox "それは計算でけまへん"
                Application.EnableEvents = True
                Cells(.Row, 2) = Cells(.Row, 2)
            End If
        End If
    End With
trbl:
    Application.EnableEvents = True
 End Sub


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.