Excel: Como criar vários registros a partir de um único registro

0

Eu tenho um banco de dados de várias empresas. Existe um registro por empresa. Dentro de cada registro da empresa, existem vários contatos.

Como posso criar um registro para cada CONTATO (preservando as mesmas informações da empresa para cada um)?

Aqui está uma amostra:

    
por Morgan Wood 18.04.2017 / 00:33

2 respostas

1

Isso será suficiente para o seu exemplo. Você precisará modificar um pouco para corresponder ao banco de dados real.

Example Data

Company | Address | City  | State | ZIP | Phone | GM | EmailGM | PD | EmailPD | SM | EmailSM | PRM | EmailPRM
ABC     | 1234 M  | Saint | MN    | zip | phone | gm | gm1@gm  | pd | pd1@pd  | sm | sm1@sm  | prm | prm@prm

Result

Company | Address | City  | State | ZIP | Phone | Name | Email
ABC     | 1234 M  | Saint | MN    | zip | phone | gm   | gm1@gm
ABC     | 1234 M  | Saint | MN    | zip | phone | pd   | pd1@pd
ABC     | 1234 M  | Saint | MN    | zip | phone | sm   | sm1@sm
ABC     | 1234 M  | Saint | MN    | zip | phone | prm  | prm1@prm

Company column (and Address, City, State, ZIP, Phone)
=INDIRECT("A"&(CEILING((ROW()+1)/4-1, 1)))

Name column (and Email)
=INDIRECT(CHAR(CODE("G")+MOD((ROW()-2), 4)*2)&CEILING((ROW()-1)/4+1, 1))

Explicação

Na coluna Empresa, a fórmula refere-se à coluna "A" e o número da linha é calculado a partir da linha atual.

ROW()-1 ajusta o número da linha de volta, porque temos o cabeçalho na tabela de dados. Usamos o número 1 porque os dados da tabela de dados começam na linha 2 , em vez da linha 1 .

/4 + 1 basicamente copia a linha de resultado 4 vezes e, em seguida, ajusta o número da linha de resultados por um, porque temos o cabeçalho na tabela de dados. Usamos o número 4 porque temos 4 nomes e e-mails . Usamos o número 1 porque os dados da tabela de dados começam na linha 2 , em vez da linha 1 .

CEILING( ... , 1 ) arredonda o número da linha até um número inteiro.

Na coluna Nome, a fórmula refere-se à coluna "G" e o número da linha é calculado a partir da linha atual.

(ROW()-2) muda o resultado de MOD de volta para 0 . Usamos o número 2 porque os dados da tabela de resultados começam na linha 2 .

MOD( ... , 4) calcula qual coluna obter. O resultado de 0 significa coluna G , 1 significa coluna H e assim por diante. Usamos o número 4 porque temos 4 nomes e e-mails .

+ ... * 2 desloca a coluna buscada à direita da coluna G por the result of modulo, multiplied by 2 . Usamos o número 2 porque temos 2 colunas, Nome e e-mail, para buscar.

CODE("G") converte o caractere "G" em seu código ASCII.

CHAR( ... ) converte o valor da coluna deslocada (7 a 11, que é "G" para a coluna "K", por exemplo) de volta para a string.

CEILING( ... ) fornece o número da linha de dados a ser buscado.

Instrução

Basta alterar a letra da coluna para a coluna correspondente.

Exemplo:

para a coluna Endereço, altere a letra "A" para "B"

para coluna E-mail, altere a letra "G" para "H"

Nota

Você mencionou que terá 7 nomes e e-mails . Você precisará ajustar a fórmula para usar 7 em vez de 4.

Esta fórmula é sensível para onde você coloca essa fórmula. Esta fórmula pressupõe que você irá colocá-lo na linha 2 (linha 1 para o cabeçalho). Você precisará ajustar se você colocar na linha 1 (veja Explicação )

Esta fórmula não pula o nome e o email em branco. Todas as empresas terão exatamente 4 linhas, independentemente do número de nomes e e-mails disponíveis.

Isto não pretende substituir o banco de dados , mas você pode usar os dados gerados por esta fórmula para criar o banco de dados.

    
por 18.04.2017 / 09:44
0

Outra maneira de fazer isso, no Excel, é com Power Query ou Data ► Get and Transform ► From Table (depende da versão do Excel)

Depois de entrar no editor de consultas, selecione as colunas que se repetem e UNPIVOT as outras colunas. Isso lhe dará uma tabela assim:

ObservequerenomeiasnovascolunasqueforamgeradaspelaoperaçãoUNPIVOT.

Agora,adicioneumaterceiracoluna,identifique-acomo"E-mail" e insira esta fórmula em I2

I2: =IF(ISERR(SEARCH("email",[@Position])),H3,"")

Então,éapenasumaquestãodefiltrarosBlanksdacolunaEmail.Vocêpodefazerissocomumfiltrosimples;entãocopie/coleascélulasvisíveisemumaáreaderesultados;ouvocêpodeusarofiltroavançado,quetemummecanismoparaenviarosresultadosdofiltroparaumaáreadesignada:

    
por 20.04.2017 / 00:24