如何在 Excel 2003 中根据另一个单元格中的随机结果(自动)更新一个单元格?

如何在 Excel 2003 中根据另一个单元格中的随机结果(自动)更新一个单元格?

设想

列显示基于从其他 2 列数字中随机选择的J列数据,即:C

J1: =INDIRECT("C"&INDIRECT("F"&N1))
J2: =INDIRECT("C"&INDIRECT("F"&N2))
J3: =INDIRECT("C"&INDIRECT("F"&N3))
...

在哪里:

  • C是要放置的数据J1,,,等J2J3
  • F是随机生成器的结果(1 到 122 之间的数字)
  • N是一个连续的固定数字,基于列中包含数据的单元格的数量C(通常在 1 到 122 之间)。

问题

如果J2= J1,那么基本上我想执行“计算完整”(或类似函数),直到它们不相等,然后继续检查该列J直到数组末尾。例如:如果J1=1J2=3J3=2J4=3和,这是可以接受的,但是如果、、、和,这是不可接受的,因为&和&是重复的。J5=1J6=2J1=1J2=1J3=3J4=4J5=3J6=3J1J2J5J6

类似地,列I显示来自列的数据,B例如:=INDIRECT("B"&INDIRECT("F"&N1))等,但如果我可以让电子表格根据列中的重复项自动重新计算J,则列I将遵循列,J因为I&都使用&J中的值分别从列和复制数据。NFBC

到目前为止,我尝试过的所有方法都会导致循环引用错误。我可以手动“计算完整”,但仍然会得到重复项(垂直于列J),这是不可接受的。

B包含歌曲标题,且没有重复。列C包含表演者姓名,列中有很多重复项,C因为乐队只有 4 名歌手,我更希望歌手不必连续唱两首歌。

有什么建议么?

注意:如果答案需要使用 VBA 代码,我将需要很多帮助!:o)

更多信息:

请参阅屏幕截图https://i.stack.imgur.com/eoJnf.jpg

列说明:

A是(手动)歌曲计数器,用于指示列表中有多少首歌曲

B包含歌曲标题以及要播放该歌曲的调(括号中)

C表示演唱这首歌的人。注意:列中的“Inst.”C表示这首歌是器乐曲,没有人声。

D表示歌曲的流派,其中“2”代表 2-Step 类型的歌曲。其他流派表示为“P”代表波尔卡舞曲,“W”代表华尔兹舞曲等。列B和按歌曲标题(列)然后流派(列)C排序BD

E是随机数生成器:=Rand()

ColumnF根据 Column 生成数字E,并根据每种类型的歌曲数量限制数字的范围: =RANK(E1,E$1:E$53注:2-Step 类型歌曲一共有 53 首。

列为G垂直间隔(无数据)

ColumnH是另一个手动计数器,用于跟踪每套歌曲的数量。通常每晚有 4 套歌曲,每套歌曲可包含 8-13 首歌曲,具体取决于歌曲时长是 45 分钟还是 1 小时。

列是根据随机数生成器(列)I从列复制的歌曲标题和列中的“固定”数字:BEN=INDIRECT("B"&INDIRECT("F"&N2))

Column是根据随机数生成器(Column )J从 Column 复制的歌手/表演者,并且 Column 中具有相同的固定数字:CEN=INDIRECT("C"&INDIRECT("F"&N2))

K表示每首歌曲的流派,并根据流派的某种“组合”手动确定。屏幕截图示例表明,组合为 2 首 2 步舞曲,接着是一首华尔兹,接着是 2 首 2 步舞曲,然后是一首慢歌,等等。我们作为乐队根据过去在某些场地演出的经验确定流派组合。

L是另一个间隔列 - 没有数据

M是 列 的颜色编码副本,K有助于跟踪由 列N和 列中的数字确定的流派组合F

注意:每次演出前都会打印H、、IJK——乐队中每个人都会得到一份。

N是流派混合模板,其颜色编码与列相同M。红色 = 2-Step、蓝色 = 华尔兹、粉色 = 波尔卡、绿色 = 慢速、黑色 = 摇滚。数字是手动输入的,按顺序从主歌曲列表(列BC& D)上特定流派的第一首歌曲开始,到该流派的最后一首歌曲。当前流派布局如下:2-Step 歌曲范围从 1-53,波尔卡歌曲范围从 54-68,摇滚歌曲范围从 69-90,慢速歌曲范围从 91-111,华尔兹范围从 112-120。

有 4 列未出现在屏幕截图中,它们跟踪第一个和最后一个类型编号,并且与我最初的问题不是特别相关。

如您在屏幕截图中看到的,“Jerry”出现在J2&中,J3并再次出现在和 &中。另外,请注意,“Phil”出现在&中。这里的目标是尽可能消除“行重复”。Jerry 唱了多达 60 首不同类型的歌曲,Chuck 唱了多达 30 首,Phil 唱了 20 首,因此每位表演者应该有足够数量的歌曲,这样就不会出现重复的问题。J7J8J9J13J14

我意识到我原帖中提供的信息不够充分,但希望这些额外的信息能帮助我们找到解决问题的方法。如果我需要提供进一步的解释,请告诉我。

答案1

您可以将此公式插入另一列(在我的情况下,我使用了 K 列)。如果该值与前一个值相同,它会将该值加一,除非前一个值是最大值,否则它会返回一。在 K1 中,只需使用=J1,然后在 K2 中输入此公式并自动填充。MAX_VALUE用实际的最大值替换。

=IF(J2=K1,IF(J2=MAX_VALUE,1,J2+1),J2)

下面是一个示例,假设最大值为 10:

J    K
2    2
6    6
6    7
7    8
7    7
10   10
10   1
10   10

相关内容