Eu tenho o que estou chamando de "matriz de interação" esparsa de dados no MS Excel que desejo converter em uma "relação ternária" (tabela) no Access.
Os dados da planilha estão neste padrão:
Name Act-1 Act-2 Act-3 ... Act-n
name-1 week
name-2 week
name-3 week week
: week
name-m week week
Existem n
atividades como cabeçalhos do Excel, m
nomes na primeira coluna de cada linha de dados e zero ou mais semanas especÃficas inseridas sempre que uma pessoa (nome) realizou uma atividade. Se n
fossem pequenos e fixos, eu poderia manter a relação como uma matriz, mas n
pode ficar muito grande e a matriz ficará muito esparsa.
Assim, a estrutura da tabela relacional desejada (vou chamá-la de Atribuição) é assim:
Assignment: Name, Activity, Week
Existe uma ferramenta fácil no Excel ou no Access para facilitar essa conversão de dados?
Um algoritmo de pseudocódigo seria
for each Name (row)
for each Activity (column)
if Week, add Assignment: Name, Activity, Week
Embora eu tenha programado em VBA (anos atrás), nunca o usei em conjunto com o Excel. Estou inclinado a usar arquivos Python e CSV. Talvez haja uma boa técnica de SQL (mesmo que não seja especÃfica do Access)? Ou é algo a ver com "pivotar" (nunca entendi do que se tratava)?
Você tem alguma experiência que gostaria de compartilhar com esse tipo de conversão?
Minha solução é salvar a planilha como um arquivo de "matriz" delimitado por tabulação, executar o seguinte programa de "conversão de estrutura de dados" e importar o arquivo de "relação" delimitado por tabulação resultante para o Access.
O código Python 3.4: