Добрый день.
есть таблица полученная с форм сотрудников (1000 шт.)
сотрудники идут по строкам. проблема в том, что в каждой форме сотрудника порядок столбцов и их количество разнится.
и вторая проблема, что есть несколько одинаковых полей. вида "дата проверки."
так же косяк что в названиях полей формы есть очепятки. аттестат, атестат атесттат аттесттат.
схематично данные выглядят так.
А Б С
А Б В
Б А А
А Б С Д Г
Г Д А А
Цель сделать таблицу и разнести одинаковые поля таблицы сотрудника в одну колонку. По столбцам уникального содержания типа "ФИО" это не проблема, косяк появляется когда разношу данные по столбам которых может быть много. столбец появляется только один и в нем только одни данные.
Есть у кого идеи как можно решить задачку,
для поиска и разнесения уникальных столбцов сделал такой код на vba.
Сами данные в csv но это сильно не поможет.
spoilerDim dicTemp1 As Dictionary
Set dicTemp1 = CreateObject("Scripting.Dictionary")
Dim headDic As Dictionary
Set headDic = CreateObject("Scripting.Dictionary")
newrow = 2
For i = 2 To 60 Step 2
dicTemp1.RemoveAll
For x = 4 To 79
If dicTemp1.Exists(Cells(i, x).value) Then ' если значение есть в списке заголовков СТРОКИ
dicTemp1.Item(Cells(i, x).value) = dicTemp1.Item(Cells(i, x).value) + 1
DoubleFlag = 1
Else
dicTemp1.Add Cells(i, x).value, 1
DoubleFlag = 0
End If
If DoubleFlag = 0 Then
If headDic.Exists(Cells(i, x).value) Then ' если значение есть в списке заголовков ТАБЛИЦЫ
Worksheets("Лист2").Cells(newrow, headDic.Item(Cells(i, x).value)) = Cells(i + 1, x).value
Else
headDic.Add Cells(i, x).value, headDic.Count + 1
Worksheets("Лист2").Cells(1, headDic.Count) = Cells(i, x).value
Worksheets("Лист2").Cells(newrow, headDic.Count) = Cells(i + 1, x).value
End If
Else
lastCol = Worksheets("Лист2").Cells(1, Worksheets("Лист2").Columns.Count).End(xlToLeft).Column
Worksheets("Лист2").Cells(1, lastCol) = Cells(i, x).value
Worksheets("Лист2").Cells(newrow, lastCol) = Cells(i + 1, x).value
End If
Next
newrow = newrow + 1
Next