У меня есть набор данных, который в настоящее время составляет 39 000 строк и 27 столбцов. Первый столбец - это идентификационный номер. Последующие столбцы соответствуют выборам с указанием даты выборов в строке 1 (ячейки B1
- AA1
). Остальные ячейки заполняются буквой, соответствующей методу голосования (или нулю, если не голосовали). Мне нужно переставить эту таблицу так, чтобы было всего три столбца: ID, дата и метод голосования. Например:
Текущая таблица:
ID 05/2005 11/2005 03/2006 (etc., for 27 total columns)
2345 P V
3789 A V
4321 V A V
7890 I
И мне нужно, чтобы это выглядело так:
ID Date Voting Method
2345 05/2005 P
2345 11/2005 V
3789 11/2005 A
3789 03/2006 V
4321 05/2005 V
4321 11/2005 A
4321 03/2006 V
7890 11/2005 I
Я думаю, что для этого потребуется скрипт VBA, и я попытался собрать воедино кусочки скрипта, которые я нашел в Интернете (потому что я никогда не изучал VBA), но я не могу заставить его работать совершенно правильно. Возможно, эта функция уже существует в Excel?
Вот сценарий, с которым я работаю до сих пор:
Sub NewLayout()
For i = 2 To Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
For j = 0 To 26
If Cells(i, 3 + j) <> vbNullString Then
intCount = intCount + 1
Cells(i, 1).Copy Destination:=Cells(intCount, 10)
Cells(i, 2).Copy Destination:=Cells(intCount, 11)
[I think this one is wrong. It needs to copy the column name,
not the cell value, if there is a cell value.]
Cells(i, 3 + j).Copy Destination:=Cells(intCount, 12)
End If
Next j
Next i
End Sub
Если у кого-то есть какие-либо предложения, я буду признателен за это!