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?
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:
fonte
Respostas:
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:
PASSO 1:
Eu defini intervalos nomeados EMPRESAS F2: F99 e NOMES L2: AB99
PASSO 2:
Aqui está a sua saída:
Com a fórmula na coluna B:
É 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élulaB2
, 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
A2
com 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: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.
fonte
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.
fonte
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):
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 é:
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.
fonte