Excel:自动将员工分配到他们的专业领域

Excel: Auto Assign Staff to a their area of expertise

我一直在尝试构建一个 table,它将包含 3 列,并根据其中一列的标准分配员工。我们的列只是 A、B 和 C。在 A 列中,将有一个将手动添加的备案号,B 列将是区域,将通过数据验证从下拉列表中手动添加。 C 列我想从该区域 'experts' 的员工列表中获得 'auto-populated'。每个员工都有 100% 的时间可用,因此轮换的时间可能不止一次。以下是视觉辅助列表的示例:

Data set

因此,当 B 列(区域)中的每个区域被 select 编辑时,C 列将 'random select' 来自 F、G 和 H 列中显示的 table 中的员工与各自的专业领域。这是我想要的结果的另一种视觉效果:

Result Table

是否有 C 列的代码来获得该结果?我已经尝试了一些 =rand=randbetween 并且我还使用以下公式创建另一个下拉列表到手动 select,再次通过数据验证并且这个有效:

=OFFSET(TABLE1!$F$1,1,MATCH($B2,TABLE2!$F$1:$H$1,0)-1,COUNTA(OFFSET(设置!$F$1,1,MATCH( $B2,设置!$F$1:$H$1,0)-1,3)),1)

但我希望它自动从下拉列表中删除 selecting 这一步,因为这也在 B 列中完成。或者这是 VBA 类型的构建,因为此列表会随着时间的推移而增长?

感谢您抽出宝贵时间提供帮助,如有任何问题,我随时待命。

看到这个 google sheet。 Excel:

中的公式应该相同

https://docs.google.com/spreadsheets/d/1bCVsCxXnG3an1LZSCwVdzlZCSSctxdfy3WHQ7RisOY4/edit#gid=0

如果将专业列表重新格式化为两列,一列为名称,一列为专业,则可以使用

=index(unique(filter(E:E, F:F=B2)), randBetween(1,COUNTA(unique(filter(E:E, F:F=B2)))))

重新格式化以便于阅读:

=index(
  unique(filter(E:E, F:F=B2)), 
  randBetween(1, COUNTA(unique(filter(E:E, F:F=B2))))
)

您使用 FILTER 获取匹配名称列表。我将其包装在 UNIQUE 中,以防出现相同名称和相同专业的多个错误条目。

unique(filter(E:E, F:F=B2))

您可以将其传递给 COUNTA 以获取匹配名称的计数:

COUNTA(unique(filter(E:E, F:F=B2)))

并在 RANDBETWEEN 中使用它来获得一个介于 1 和匹配数之间的随机数:

randBetween(1, COUNTA(unique(filter(E:E, F:F=B2))))

然后使用 INDEX 从列表中获取第 n 个名称,其中第一个参数是唯一过滤列表,第二个参数是使用 RANDBETWEEN 生成的数字。

Excel 有一个 LET 函数,它可以让你重用参数,并且可能更容易阅读或维护。这不在 sheet 中,因为我认为 Google Sheets 没有那个功能。

=LET(
  list, UNIQUE(FILTER(E:E, F:F=B2)),
  INDEX(list, RANDBETWEEN(1, COUNTA(list)))
)

LET 以一对 name/values 作为参数,最后一个参数是输出。这里的列表是名称,unique/filter 组合是定义。然后你可以在输出公式中使用名称

INDEX(list, RANDBETWEEN(1, COUNTA(list)))

让我知道这是否适合你。