Isso exigiria uma instrução IF, que é uma expressão válida em uma fórmula do Excel.
A sintaxe é:
IF( condition, [value_if_true], [value_if_false] )
A fórmula provavelmente seria assim:
IF(ISNUMBER(SEARCH("Yes",A1)), CONCATENATE(A2, " ", B2, " ", C2))
Nota: isso apenas verifica um Sim na célula A1 e concatena todas as células. Se você deseja concatenar apenas as células com as que têm "Sim", você precisará estender isso para uma macro ou usar algumas fórmulas dependentes em células diferentes.
Referências:
UPDATE: por preocupações sobre o uso de macros em um grande número de valores
Uma macro funcionaria para isso. Se o número de células em suas linhas de dados puder variar e você precisar percorrer cada célula com informações, haverá várias maneiras de determinar a última célula em uma linha (ou coluna) com dados e, em seguida, alimentar isso em outro lugar na macro.
Dado Sim / em branco na Linha A e dados na Linha B, estou pensando que você poderia fazer isso em três etapas:
-
Pegue a última célula com "Sim" na Linha A: Use Localizar no intervalo da Linha A.
-
Obtenha o valor do Find na etapa 1 e use-o para fazer um loop da célula A1 para a célula A (valor de Find) e registre os números de células para cada "Yes" encontrado.
-
Pegue esses números e concatene cada célula na linha B com esses números da etapa 2.
Você pode encurtar isso para duas etapas mesclando as etapas 2 e 3, apenas puxando e concatenando os valores de B toda vez que encontrar um Sim em A.
Infelizmente, eu não sou um gênio no VBA, e só escrevi macros efetivas com base em semanas de esforço e muitos posts no fórum, então eu nem vou tentar escrever isso. Mas cada etapa do componente deve ser fácil de pesquisar e a montagem pode ser feita de acordo com suas próprias preferências.