0

我需要在特定年份内生成唯一的随机星期五日期。

我有一个或多或少的工作示例:随机唯一日期,周一至周五,一年内您可以查看:http ://www.get-digital-help.com/2010/11/26/create-random -dates-mon-to-fri-within-a-year-in-excel/ 这个例子的问题:它不是星期五日期,它没有生成唯一的日期,有重复的日期。

该列表必须生成 N 个随机日期,在特定单元中通知 N 个数字。示例: A1: 4(则列表必须生成 4 个随机日期) A1:8(则列表必须生成 8 个随机日期) A1:20(则列表必须生成 20 个随机日期)

如果我有选项我会要求不要使用 vba .. 有没有办法只在 excel 公式中做?

谢谢你!

4

2 回答 2

2

好的,这是一种方法 - 这将为您提供指定年份中的随机数量的星期五...为了简化它仅从前 52 个星期五中选择,如果一年中有 53 个星期五,它不会选择那个第53个....虽然可以更改公式来这样做。

在 A1 中放入年份,例如 2013 年,在 A2 中放入要生成的数字,例如 4,在 C1 中放入一些文本,例如“日期” - 现在在 C2 中复制以下公式:

=IF(ROWS(C$2:C2)>A$2,"",SMALL(IF(COUNTIF(C$1:C1,DATE(A$1,1,1+7*ROW(INDIRECT("1:52")))-WEEKDAY(DATE(A$1,1,2)))=0,DATE(A$1,1,1+7*ROW(INDIRECT("1:52")))-WEEKDAY(DATE(A$1,1,2))),RANDBETWEEN(1,53-ROWS(C$2:C2))))

CTRLSHIFT++确认ENTER并向下复制到 C53。如果 A2 数字较低,则后面的单元格将保持空白。现在您可以根据需要更改 A1 和 A2 以生成新列表

这是一个示例的链接- A2 是一个随机数 - 按 F9 重新生成“测试”列只显示每个日期有多少个实例 - 因为不应该有重复,应该总是一个

...或者这是另一个版本,其中包含一些帮助单元格来简化公式 - 在 B1 中指定年份,在 B2 中显示日期数,在 B3 中指定日期:

C2中的公式是

=IF(ROWS(D$2:D2)>B$2,"",SMALL(IF(COUNTIF(D$1:D1,B$4+ROW(INDIRECT("1:"&B$5))*7-7)=0 ,B$4+ROW(间接("1:"&B$5))*7-7),RANDBETWEEN(1,B$5+1-ROWS(D$2:D2))))

于 2013-04-02T17:41:47.843 回答
0

这是一个非常简单的方程式,您可以将其粘贴到 A1 中并向下拖动。

=DATE(2012,1,(RANDBETWEEN(-100,100)*7)-1)

下面是它的工作原理。

我首先生成一个从 2012 年开始的日期。
=date(2012,1,1)恰好是星期六。所以,我知道我需要从最终日期中减去 1 天。

接下来,我知道一周有 7 天,所以我生成了一个从 -100 到 100 的随机数,randbetween(-100,100)并将这个数字乘以 7。这将为您提供 2012 年 4 年内的日期,无论是哪个方向。

当前的每个日期都将是星期六,因为它是 7 天的倍数。所以,减 1。

于 2013-04-02T18:01:56.437 回答