Excel 计算最佳变更的算法 TL;博士:

Excel 计算最佳变更的算法 TL;博士:,excel,algorithm,vba,Excel,Algorithm,Vba,我正试图用VBA编写一个非常基本的宏,它可以计算出达到某个总数的最佳货币量。我能解释我的问题的最简单的方法 更深入的: 我有一个登记簿,每天起价175美元。在一天结束时,我的经理必须结清登记簿,这意味着清点存款/小费,第二天将登记簿恢复到175美元。不管出于什么原因,有些人对此有异议。我很无聊,想看看是否能用Excel和VBA为他们找到一个简单的解决方案 我目前对此有以下“计划”: 输入字段 更改(登记册内) 一美元 五美元 10美元 20美元 50美元 100美元 输出 将1、5、10等放入

我正试图用VBA编写一个非常基本的宏,它可以计算出达到某个总数的最佳货币量。我能解释我的问题的最简单的方法


更深入的: 我有一个登记簿,每天起价175美元。在一天结束时,我的经理必须结清登记簿,这意味着清点存款/小费,第二天将登记簿恢复到175美元。不管出于什么原因,有些人对此有异议。我很无聊,想看看是否能用Excel和VBA为他们找到一个简单的解决方案

我目前对此有以下“计划”: 输入字段

  • 更改(登记册内)
  • 一美元
  • 五美元
  • 10美元
  • 20美元
  • 50美元
  • 100美元
  • 输出

    将1、5、10等放入登记册的金额达到175.00美元


    我的想法: 基本上,我试图得到一个输出,它会告诉我,根据我所拥有的(输入金额),每个面额的钞票需要放入登记册的数量,并给予1比5更高的优先级,依此类推

    我只是不知道如何处理这个问题。我已经好几年没编程序了,只是现在不想编了

    一个实数例子是:

    输入

    输出


    到目前为止,我的代码是:
    从最高面额开始,在计算每种可能的金额(在您的样本范围内)的最佳变化方式时,仔细考虑。然后根据你预测的变化情况,取平均值、最大值或其他权重(即,人们更有可能携带20件单件,而不是20件单件)。@Comintern哦,我自己已经知道如何做到这一点,但我不完全掌握它的编码。可能是某种循环,从总金额中扣除账单金额?通常有很多方法可以让登记簿恢复到175美元,但你还没有说你想优化什么,所以我们不知道使用哪种方法。如果你只是想要任何解决方案,我建议你做一个循环,重复添加一张最高面额的钞票,这是(a)可用的,(b)离开寄存器@j_random_hacker猜我上面不是很清楚,抱歉。昨天工作太久了。但我正试图优化最低的账单,比如我想要1美元多于5美元等等。我将尝试使用最高面额的解决方案,并在计算每种可能金额(在您的样本范围内)的最佳找零方式时进行计算。然后根据你预测的变化情况,取平均值、最大值或其他权重(即,人们更有可能携带20件单件,而不是20件单件)。@Comintern哦,我自己已经知道如何做到这一点,但我不完全掌握它的编码。可能是某种循环,从总金额中扣除账单金额?通常有很多方法可以让登记簿恢复到175美元,但你还没有说你想优化什么,所以我们不知道使用哪种方法。如果你只是想要任何解决方案,我建议你做一个循环,重复添加一张最高面额的钞票,这是(a)可用的,(b)离开寄存器@j_random_hacker猜我上面不是很清楚,抱歉。昨天工作太久了。但我正在努力优化最低的账单,因为在我想要超过5美元的1美元等,我会尝试这个解决方案
    Change = $11.00
    $1's = $33.00
    $5's = $20.00
    $10's = $10.00
    $20's = $300.00
    $50's = $100.00
    $100's = $0.00
    
    $1's = $29.00
    $5's = $15.00
    $10's = $0.00
    $20's = $120.00
    
    Private Sub CalculateButton_Click()
    'Assigning Variables
    Dim cha As Currency
    Dim A1 As Currency
    Dim A5 As Currency
    Dim A10 As Currency
    Dim A20 As Currency
    Dim A50 As Currency
    Dim A100 As Currency
    
    'Setting Variables values
    
    cha = Range("b5").Value
    A1 = Range("b6").Value
    A5 = Range("b7").Value
    A10 = Range("b8").Value
    A20 = Range("b9").Value
    A50 = Range("b10").Value
    A100 = Range("b11").Value
    
    End Sub