J'ai un ensemble de données qui est actuellement de 39 000 lignes et 27 colonnes. La première colonne est le numéro d'identification. Les colonnes suivantes correspondent aux élections, avec la date de l'élection dans la rangée 1 (cellules B1
- AA1
). Le reste des cellules est rempli avec une lettre qui correspond à la méthode de vote (ou nulle si vous n'avez pas voté). Je dois réorganiser ce tableau afin qu'il y ait un total de trois colonnes: ID, Date et Méthode de vote. Par exemple:
Tableau actuel:
ID 05/2005 11/2005 03/2006 (etc., for 27 total columns)
2345 P V
3789 A V
4321 V A V
7890 I
Et j'en ai besoin pour ressembler à ceci:
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
Je pense que cela va nécessiter un script VBA, et j'ai essayé de reconstituer des morceaux de script trouvés en ligne (car je n'ai jamais appris VBA), mais je n'arrive pas à le faire fonctionner correctement. Peut-être que cette fonction existe déjà dans Excel?
Voici le script sur lequel je travaille jusqu'à présent:
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
Si quelqu'un a des suggestions, je l'apprécierais!