Notifications
Clear all

Concatenar com virgula

3 Posts
2 Usuários
0 Reactions
1,114 Visualizações
(@alexzaidan)
Posts: 0
New Member
Topic starter
 

Olá a todos, nem sabia como colocar o titulo do post mas já sei que não ficou nada claro

Minha duvida é a seguinte:

Tenho dados de presença e ausência de um determinado animal, então eu tenho 100 pontos de amostragem e preciso marcar em qual pontos eu vi ele.
Portanto vou ter 100 colunas em que eu devo marcar "x" e uma outra coluna que o excel deve dar a resposta do numero de qual coluna eu marquei "x". Depois tenho que concatenar tudo e é importante que a formula me dê se precisa ou não colocar virgula.

A primeira parte da resposta do nome do ponto é tranquilo. O meu problema é com a virgula. Criei uma coluna para saber se há virgula ou não, começo com essa formula

=SE(DT24="";"";SE(GY24="";"";", "))

mas lá pela decima coluna ela já está assim

=SE(E(DT24="";DU24="";DV24="";DW24="";DX24="";DY24="";DZ24="";EA24="";EB24="";EC24="";ED24="";EE24="";EF24="";EG24="");"";SE(HY24="";"";", "))

E não dá para só arrastar a formula tem que ir fazendo manualmente, tem que ir adicionando novas colunas na formula. Se eu fizer isso para as 100 vai demorar uma semana. Alguém tem uma solução mais pratica ?
Abs

 
Postado : 13/04/2015 6:37 pm
(@issamu)
Posts: 0
New Member
 

Olá alexzaidan!
Eu também já sinti falta de uma função nativa do Excel que faça o que você descreveu, por isso tratei de correr atrás para desenvolver uma função personalizada, que chamei de VALORESDOVETOR.

O código da função é:

Public Function VALORESDOVETOR(vArray As Variant, _
                               Optional lSize As Long, _
                               Optional sSeparator As String = ", ") As Variant
  Dim v As Variant
  Dim lCount As Long
  Dim asOut() As String
  
  If lSize < 0 Then
    VALORESDOVETOR = CVErr(xlErrNum)
    Exit Function
  End If
  
  For Each v In vArray
    If v <> "" Then
      lCount = lCount + 1
      ReDim Preserve asOut(1 To lCount)
      asOut(lCount) = v
      If lCount = lSize Then Exit For
    End If
  Next v
  
  VALORESDOVETOR = Join(asOut, sSeparator)
End Function

Você pode adicionar a um módulo do seu arquivo para poder usar na planilha, ou então, você pode adicionar o arquivo xlam anexo através das "Opções do Excel" -> "Suplementes", que desta forma a função vai ficar disponível em qualquer arquivo que você for trabalhar.

Explicando a função, a sintaxe é a seguinte:

VALORESDOVETOR(Intervalo desejado; quantidade de elementos do intervalo que deseja que apareça 'Opcional'; Tipo de separador 'Opcional')

- Se não preencher o segundo argumento da função que é a quantidade de elementos, a função irá trazer todos elementos do intervalo selecionado;
- Se não colocar algum separador (sempre entre aspas dupla), a função usará vírgula como padrão.

Crédito especial ao meu amigo Felipe Gualberto (www.ambienteoffice.com.br) que me deu a melhor solução na época que estava desenvolvendo esta idéia de UDF que funcionasse tanto para intervalos como para vetores calculados pelo gerenciador de nomes do Excel.

Abraços!

 
Postado : 13/04/2015 7:00 pm
(@alexzaidan)
Posts: 0
New Member
Topic starter
 

Caramba!! Funcionou perfeitamente, muito obrigado vai me economizar um tempo gigante!

 
Postado : 13/04/2015 7:59 pm