Я нашел макрос (любезно предоставленный Джерри Бокером), который разбивает один лист на множество на основе уникальных значений в данном столбце.Это прекрасно работает.Однако ...
Клиент предоставил рабочий лист в другом формате, который требует некоторого мягкого массажа, чтобы получить нужный нам формат.
Во-первых, позвольте мне показать вам фрагмент кода 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 используются для определения точек, которые используются для построения линий в программе трехмерного моделирования.Каждая строка на рабочем листе фактически определяет линию (ну ... начальная точка и конечная точка - «верх» и «низ»). К сожалению, полученные нами данные (рабочий лист) определяют два набора данных для каждой строки - обаимея одинаковую начальную точку, но с разными конечными точками.Другими словами, начиная со строк 3 и 4, данные в столбцах BD одинаковы для обеих строк.Это относится к строкам 5 и 6, 7 и 8 и т. Д.
Поскольку все, что нам нужно, это набор ТОЧЕК данных, мы можем смело использовать значения из столбцов EG.
ОДНАКО ... и этоВот где мне нужна помощь ... Нам нужно, чтобы первая строка вновь созданного рабочего листа начиналась со значений из строки 2, столбцы BD.(т.е. мы можем использовать конечные точки в качестве наших координат, но нам все еще нужна первая начальная точка) Все остальное в порядке, как оно есть.
Например:
Исходные данные:
| A | B | C | D | E | F | G |
1 | id | x-top | y-top | z-top | x-bottom | y-bottom | z-bottom |
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 same as row 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 same as row 5
Что мне нужно:
| A | B | C | D | E | F | G |
1 | id | x-top | y-top | z-top | x-bottom | y-bottom | z-bottom |
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 строк для разбора!
Если вам нужна дополнительная информация, дайте мне знать!