【问题标题】:Excel-insert cell value at another cell each timeExcel-每次在另一个单元格中插入单元格值
【发布时间】:2018-06-19 01:18:06
【问题描述】:

我有一些特定的(不同的)数字,这将是订单到达的交货时间,例如仓库,这意味着交货时间是随机的。我希望将“订购数量”插入“订单到达”列向下的“x”行。例如,如图所示,我希望在“订单到达”时将“100”订购质量向下插入两行,然后在“订单到达”时将“120”向下插入 5 行。

有没有办法用 excel 中的函数来做到这一点?有什么想法吗?谢谢 1

example

【问题讨论】:

  • 有一种方法可以使用 Excel 执行此操作 - 订单提前期的“随机”数据来自哪里?它来自概率分布吗?它是基于项目类型等的查找吗?
  • 没错,我用过这个函数“=CEILING((NORMINV(RAND(),6,2)),1)”,所以是正态分布。

标签: excel


【解决方案1】:

希望下面的屏幕截图和代码示例可以帮助您入门。我想不出不使用宏的方法来做你想做的事,尽管我相信这里有一些专家可能会想出一个惊人的公式!

请看下面的截图。出于演示的目的,我稍微重新格式化了您的表格,所以现在看起来像这样:

然后我编写了以下宏。这是一个非常粗略且准备好的宏,因为我正在工作并即将回家,但它应该让你开始:

Sub runorders()

Worksheets("Sheet1").Range("D2:D1000").ClearContents

readrow = 2
currentday = Worksheets("Sheet1").Range("A" & readrow).Value
currentleadtime = Worksheets("Sheet1").Range("B" & readrow).Value
currentorderquantity = Worksheets("Sheet1").Range("C" & readrow).Value

Do Until currentday = ""

    If currentorderquantity <> "" Then
        Worksheets("Sheet1").Range("D" & readrow + currentleadtime).Value = Worksheets("Sheet1").Range("D" & readrow + currentleadtime).Value + currentorderquantity
    End If

readrow = readrow + 1
currentday = Worksheets("Sheet1").Range("A" & readrow).Value
currentleadtime = Worksheets("Sheet1").Range("B" & readrow).Value
currentorderquantity = Worksheets("Sheet1").Range("C" & readrow).Value

Loop

End Sub

显然,要使代码正常工作,您需要完全按照我在屏幕截图中所做的那样设置工作簿。以橙色突出显示的单元格将需要您的正态分布公式。不要忘记,每次宏将“订单到达”值写入 d 列的单元格时,随机分布值都会发生变化(例如重新采样),除非您对此进行处理。

我希望这会有所帮助!

保罗

【讨论】:

  • 有效!多谢了朋友。这样可以节省很多时间。
  • 虽然有问题。如果有 2 个订单在同一天到达,它有时会覆盖单元格中的值,而它应该将该单元格中的两个值相加。
  • 啊,是的——正如我所说,我写的很匆忙!只需编辑“if”语句中的行,使其显示: Worksheets("Sheet1").Range("D" & readrow + currentleadtime).Value = Worksheets("Sheet1").Range("D" & readrow + currentleadtime).Value + currentorderquantity 应该这样做。我也编辑了我的答案,以使其反映最新/最正确的代码。