将列表中的数据分发到多个列中

将列表中的数据分发到多个列中

我有一列项目代码列表(一天内发生变化),需要将其分发到不同的工作表和多列中(取决于一天内可用的代理数量)。

为了更好地说明,请参见此屏幕截图:商品代码.png

然后需要将其分发到这个:数据库.png

对于这个最好的公式或者 VBA 语法是什么?

答案1

您只需要添加一种方法来标记不可用的代理并计算每个单元的索引。

我在代理标签上方添加了两行,第一行允许将代理标记为不可用。我为单元格颜色添加了一些条件格式,并删除了不可用的代理的名称。

另一个是辅助行,它是可用代理的增量索引,其形式为=IF(9:9="",MAX($C8:C8)+1,"-")

我还添加了一个辅助列,它只是从 0 开始的行索引。(辅助列可以直接合并到表格公式中,但这会使阅读变得更加困难。辅助行和辅助列显然可以隐藏)。

表中的公式只是使用了一个简单的 =INDEX(<docs_id_list>,MATCH(..,<docs_id_index_list>,0))公式。

表格公式为 =IFERROR(INDEX('Document List'!$B:$B,MATCH($A:$A*(COUNTA($C$10:$P$10)-COUNTIFS($C$9:$P$9,"<>"))+$8:$8,'Document List'!$A:$A,0)),"-")

(这显然假设您的文档列表位于名为“文档列表”的工作表的 A 和 B 列中)

在此处输入图片描述

我的解决方案使用了简单的先进先出公式,但可以使用工作日数字调整公式以从不同的单元格开始分配,因此表格偏向左侧列中的代理。

相关内容