【发布时间】:2019-05-27 01:06:51
【问题描述】:
我有一张从每周时间表工作簿中收集数据的工作表。每个工作簿中有一个单元格,可将我需要传输的所有数据提取到一个单元格中。数据来自 29 列 x 29 行的范围,但最终可能会增长。每行代表来自一个工作订单 (WO) 的数据,包括 WO#、人工成本 ($) 和从事该工作的员工列表 (E#)。
然后打开此单元格并将其提取到单行数据中。原始数据中 29 行中的每一行有 29 列。这意味着 29 x 29 列。
WO1 $10 E1 E2 E3 E4 WO8 $10 E1 E2 E3 E4
WO2 $15 E1 E2 WO3 $15 E1 E2
WO3 $20 E1 E2 E3 WO9 $20 E1 E2 E3
WO4 $25 E1 E2 E3 E4 WO5 $25 E1 E2 E3 E4
WO5 $30 E1 E2 WO10 $30 E1 E2
WO6 $35 E1 E2 E3 E4 WO11 $35 E1 E2 E3 E4
WO7 $40 E1 E2 E3 WO1 $40 E1 E2 E3
我想创建一个列表,将每个 WO 的所有数据组合成一个 29 列宽 x 841 行的列表。有些工作可能会持续超过 1 周,并且可能在多行中包含数据,因此此时可能存在重复的 WO。
WO1 $10 E1 E2 E3 E4
WO2 $15 E1 E2
WO3 $20 E1 E2 E3
WO4 $25 E1 E2 E3 E4
WO5 $30 E1 E2
WO6 $35 E1 E2 E3 E4
WO7 $40 E1 E2 E3
WO8 $10 E1 E2 E3 E4
WO3 $15 E1 E2
WO9 $20 E1 E2 E3
WO5 $25 E1 E2 E3 E4
WO10 $30 E1 E2
WO11 $35 E1 E2 E3 E4
WO1 $40 E1 E2 E3
我在想,如果我可以将每个 WO 和相关数据的列表放入一个列表中,我可以创建一个唯一的 WO 列表和其他 excel 魔法来优化列表以实现我的需要。这部分我认为我可以处理。对我来说,挑战是首先将所有内容放入一个列表中。
我试过这个代码:Excel - Combine multiple columns into one column
=IF(ROW()<=COUNTA(A:A),INDEX(A:A,ROW()),IF(ROW()<=COUNTA(A:B),INDEX(B:B,ROW()-COUNTA(A:A)),IF(ROW()>COUNTA(A:C),"",INDEX(C:C,ROW()-COUNTA(A:B)))))
但这需要 29 个嵌套的 if 语句,并且必须重新组合所有数据,以便所有对应的单元格彼此相邻。
我更喜欢使用公式,但如果这是最好的方法,我会使用 VBA。
如果有兴趣,这里是文件的示例版本: https://www.dropbox.com/s/58iex17wx3wuvug/stackoverflowsample.xlsx?dl=0
前 30 列是我开始使用上述公式的努力。
我可能会减少原始列的数量,因为如果不是不可能的话,超过 10-15 名员工从事同一工作的可能性很小,但这恰好是我最初允许的列数。如果有好处,这可以改变。不过,WO 可能会有更多行。
如果有区别的话,我也可以提取不同的东西。
【问题讨论】:
-
你认为行数会经常变化吗?还是它们可能只是偶尔改变?我有一个解决方案,但是如果行经常更改,它将不起作用。 (此外,它仍然需要一些手动步骤,但应该会大大减少手动工作。如果您想要转换超过 30 个文档,您将需要使用某种 VBA 方法。)
-
我不希望行经常更改。我的目标是让它尽可能自动化和简单,这样一个技能很少的人就可以通过一点指导来管理它。我也将电源查询视为一种选择,但仍在学习它。我会欢迎你的建议@Emily Alden。
标签: excel vba excel-formula