Índice e correspondência em várias colunas

0

Eu tenho o seguinte conjunto de dados que estou tentando reorganizar para fazer uma mala direta com a palavra. Preciso suprimir as células vazias e corresponder os nomes de usuário em uma matriz ao nome da empresa a que pertencem.

estou usando a seguinte solução para corresponder ao primeiro critério

=INDEX(CompanyName,MATCH(1,MMULT(--(Attendee=G4),TRANSPOSE(COLUMN(Attendee)^0)),0))

Mas isso significa que eu tenho que digitar o nome do usuário antes de poder corresponder à empresa

e

=INDEX(Attendee,MATCH(0,COUNTIF($G$4:I4,list),0))

Dá-me os nomes de usuário em uma lista horizontal .... mas eu preciso que ele liste em um formato vertical

ecompany name, user1, user2, user3, user4, user5, user6, user7
company1, bob, sue, dave, , ,john, mary
company2, dave, barry, steve, dan, , , pete

gostaria que os dados aparecessem em duas colunas para uma mala direta

Company Name, User
company1, bob
company1, sue
company1, dave
company1, john
company1, mary
company2, dave
company2, dave
company2, barry
company2, steve
company2, dan
company2, pete

Espero que isto faça sentido?

insira a descrição da imagem aqui

Aqui está o resultado que estou procurando em um exemplo. Infelizmente, ele precisa do nome na primeira coluna pré-preenchida antes de corresponder ao usuário.

AMOSTRA DE SAÍDA:

AMOSTRA DE SAÍDA

user88572
fonte
Estou votando para encerrar esta questão como fora de tópico, porque as perguntas devem demonstrar uma quantidade razoável de pesquisa e compreensão do problema que está sendo resolvido. Edite para a) descreva claramente o seu problema e as pesquisas realizadas até o momento para resolvê-lo ou b) inclua tentativas de soluções e por que elas não funcionaram. Em ambos os casos, verifique se os resultados esperados são apresentados claramente.
Tetsujin
11
Eu adicionei as informações solicitadas
user88572 31/01
Eu também adicionei uma foto da minha planilha atual
user88572 31/01
11
Legal. Eu descrevi para você. Não acho que novos usuários possam fazer isso sozinhos.
Tetsujin 31/01
Obrigado! toda ajuda é apreciada. Eu tentei dar uma grande quantidade de informações .. eu sei que estou perdendo algo óbvio na fórmula.
user88572 31/01

Respostas:

0

ESTÁ BEM. Essa ainda é uma maneira "burra", mas requer apenas uma etapa manual fácil e, na verdade, atende às especificações, pois apresenta seus resultados em duas colunas, conforme solicitado.

Dados: DADOS

PASSO 1:

Eu defini intervalos nomeados EMPRESAS F2: F99 e NOMES L2: AB99

PASSO 2:

Aqui está a sua saída: SAÍDA

Com a fórmula na coluna B:

=INDEX(NAMES,ROUNDUP((ROW()-1)/17,0),MOD(ROW()-2,17)+1)

É apenas uma fórmula da n-coluna / cada n linhas com n definido manualmente como 17 (você pode facilmente alterar esse valor codificado ou substituí-lo por algum tipo de função de contagem ou uma referência de célula a uma função de contagem em sua folha de dados, etc.) como necessário). Ele deve começar na segunda linha (como mostrado no exemplo) ou as compensações das ROW()chamadas precisarão ser ajustadas. Mas, colocada em uma nova planilha na célula B2, essa fórmula copiará e lerá as 17 primeiras colunas da primeira linha do intervalo nomeado NAMES, as 17 primeiras colunas da segunda linha e assim por diante.

ETAPA 3:

Eu escrevi A2com uma versão semi-assada da mesma fórmula para obter apenas a primeira linha do intervalo nomeado 17 vezes, depois a segunda linha, etc:

=INDEX(COMPANIES,ROUNDUP((ROW()-1)/17,0))

Isso pode ser reescrito como uma correspondência de índice para obter o valor do nome da empresa correspondente ao valor do nome do participante recuperado na etapa 2, mas não vi o utilitário nesse caso de uso.

PASSO 4:

Aqui está a parte idiota ... Pegue sua folha de saída, selecione tudo, copie, cole valores, filtre, exclua linhas com 0 na coluna B, remova o filtro, re-classifique, Bob é seu tio.

POSTSCRIPT

Certamente, isso pode ser feito de maneira muito mais limpa com um loop for no VBA. Provavelmente, você pode encontrar o código que é rapidamente adaptável a esse caso de uso exato em outras perguntas neste sub. Estou confiante de que isso pode ser feito sem o passo 4, com uma boa fórmula escrita por alguém mais experiente do que eu. Felizmente, a etapa 4 levará apenas cerca de 10 segundos, não importa o tamanho da sua lista de participantes, portanto, é rápido e fácil trabalhar nesse caso.

Alex M
fonte
OMG seu chefe, no entanto, é uma correção de curto prazo. A planilha é de um formulário do Google. vou criar um banco de dados de acesso para coletar as informações e disponibilizar esses dados para o próximo ano. A coleta de dados do Google Forms é ótima, mas deixa muito a desejar ...
user88572
0

Você poderia transpor?

Então, se eu estou entendendo isso certo quando você cola os valores, cole em uma linha horizontal.

Se você copiá-los e, na coluna, deseja colá-los em colar especial e escolher transpor, ele os fará nessa coluna, mas colados na vertical.

ndocds
fonte
Editei minha lista no exemplo para ficar mais claro ... a transposição funcionará apenas uma linha por vez.
user88572 31/01
0

Comentei solicitando um esclarecimento sobre o quão elegante você precisa que isso seja ... Se a resposta for "não muito", essa seria a maneira fácil e invasiva de exigir um pouco de esforço manual, em oposição a uma Fórmula de Deus que simplesmente funciona todo o caminho (que eu vou pensar um pouco):

screenie

Isso pressupõe que você tenha um número máximo razoável (e conhecido) de participantes. Sua captura de tela mostrou 6.

A fórmula para o canto superior esquerdo do seu intervalo de células de destino é:

=IF(ISBLANK(L2),"",CONCATENATE($E2,", ",L2))

Essa fórmula copia / arrasta, produzindo os resultados conforme mostrado.

A partir daí, é trivial copiar todo o bloco de dados de saída (L8: Q12 na minha planilha de exemplo, como mostrado), colar valores e mover manualmente as colunas de saída 2 a 6 abaixo da coluna 1 (portanto, na planilha de exemplo, selecione M8: M12, recorte , cole no L13 etc.) e classifique em ordem alfabética para enviar dados em branco e você terá sua lista para MM.

Alex M
fonte
Eu não sei. Isso seria absolutamente trivial no VB, com o qual sou pouco adequado. Essa é provavelmente a sua direção, mas não é algo com o qual estou qualificado para oferecer (bons) conselhos.
Alex M
Ei, obrigado, pensei nisso, mas haverá literalmente centenas de nomes. Portanto, uma cópia manual não funcionaria. O número máximo de pessoas na minha lista por empresa será 17. No momento, posso classificar por empresa e mostrar os nomes em uma lista meia cozida ... mas isso força as colunas em branco também e não funciona para o pretendido mala direta com M $ WORD. O que realmente estou procurando é o nome e o usuário da empresa em 2 colunas que adiciona o nome da empresa se encontrar um usuário para gravar o usuário na coluna do usuário. se encontrar outro nome de usuário na mesma empresa, repita para a próxima linha .. adicionar usuário se encontrado repetir
user88572
Perdi o requisito de duas colunas. Não estou familiarizado com os protocolos desta comunidade. Estou escrevendo uma nova resposta, pois essa é basicamente inútil
Alex M
Eu escrevi uma nova resposta que é muito melhor que esta. Não sei se isso significa que devo excluir este (mas o que acontece com o seu comentário esclarecedor?) Ou o quê, então estou apenas deixando-o. Você pode votar este e votar no outro, ou algo assim? Existem moderadores por aqui? Eu não sei. De qualquer forma, leia a outra resposta, tenho certeza que resolve o seu problema praticamente sem trabalho manual.
Alex M