我发现了一个宏(由 Jerry Beaucaire 提供),它根据给定列中的唯一值将一个工作表拆分为多个工作表。这很好用。然而...
客户提供了一个不同格式的工作表,需要轻轻按摩才能进入我们需要的格式。
首先,让我给你看一段 JB 的代码:
MyArr = Application.WorksheetFunction.Transpose _
(ws.Columns(iCol).SpecialCells(xlCellTypeConstants))
据我所知(我是一个完全的 VB 新手,所以我知道什么..??),这会用选定的行值填充一个数组
和这个:
For Itm = 2 To UBound(MyArr)
...(code removed)
ws.Range("A" & TitleRow & ":A" & LR).EntireRow.Copy _
Sheets(MyArr(Itm) & "").Range("A1")
...(code removed)
Next Itm
...似乎在进行复制。
好吧。...到目前为止还好。
问题是我需要在流程中添加一个步骤。这将很难解释。请多多包涵...
标题行是第 1 行
数据从第 2 行开始
每行有 9 列:
colA:标识符
colB-colD:x、y、z 值(用于项目顶部)
colE-colG:x、y、z 值(用于项目底部)
colH 和 colI:可以忽略
这些 x、y 和 z 值用于定义用于在 3D 建模程序中绘制线的点。工作表中的每一行实际上定义了一条线(嗯......起点和终点 - “顶部”和“底部”)不幸的是,我们收到的数据(工作表)为每条线定义了两组数据 - 两者起点相同,终点不同。换句话说,从第 3 行和第 4 行开始,BD 列中的数据对于两行都是相同的。这适用于第 5 行和第 6 行、第 7 行和第 8 行等。
由于我们只需要一组数据点,因此我们可以安全地使用 cols EG 中的值。
但是...这就是我需要帮助的地方...我们需要新创建的工作表的第一行以第 2 行 cols BD 中的值开始。(即,我们可以使用终点作为我们的坐标,但我们仍然需要第一个起点)其余的一切都很好。
例如:
源数据:
| 一个 | 乙| C | D | E | F | 克| 1 | 编号 | x 顶 | y-顶部 | z-顶部 | x-底部 | y-底部 | z-底部 | 2 | H1 | 101.2 | 0.525 | 54.25 | 110.25 | 0.625 | 56.75 | 3 | H1 | 110.25| 0.625 | 56.75 | 121.35 | 2.125 | 62.65 | 4 | H1 | 110.25| 0.625 | 56.75 | 134.85 | 3.725 | 64.125 | B,C,D 与第 3 行相同 5 | H1 | 134.85| 3.725 | 64.125| 141.25 | 4.225 | 66.75 | 6 | H1 | 134.85| 3.725 | 64.125| 148.85 | 5.355 | 69.85 | B,C,D 与第 5 行相同
我需要的:
| 一个 | 乙| C | D | E | F | 克| 1 | 编号 | x 顶 | y-顶部 | z-顶部 | x-底部 | y-底部 | z-底部 | 2 | H1 | | | | 101.2 | 0.525 | 54.25 | 3 | H1 | 101.2 | 0.525 | 54.25 | 110.25 | 0.625 | 56.75 | 4 | H1 | 110.25| 0.625 | 56.75 | 121.35 | 2.125 | 62.65 | 5 | H1 | 110.25| 0.625 | 56.75 | 134.85 | 3.725 | 64.125 | 6 | H1 | 134.85| 3.725 | 64.125| 141.25 | 4.225 | 66.75 | 7 | H1 | 134.85| 3.725 | 64.125| 148.85 | 5.355 | 69.85 |
那么......最好的方法是什么?我可以添加到现有宏来执行此操作吗?如果是这样,最好修改数组?...更好地修改复制例程?...如何??
提前感谢您的帮助,请不要建议手动操作。有 70,000 多行需要解析!
如果您需要更多信息,请告诉我!